Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Программирование линейных Алгоритмов
Итак, мы уже знакомы с некоторыми основными (базовыми) понятиями языка Паскаль. Теперь можно приступать к непосредственному изучению программирования на этом языке тех типов алгоритмов, о которых говорилось ранее. Вспомним, что программа — это упорядоченный список команд на некотором конкретном языке программирования. Запрограммировать некоторый алгоритм означает написать программу, реализующую этот алгоритм. Попробуем для начала программировать алгоритмы линейной структуры. Напомню, что линейным называется алгоритм, в котором все этапы решения задачи выполняются строго последовательно, т.е. линейный алгоритм выполняется в естественном порядке его написания и не содержит разветвлений и повторений. Для реализации алгоритмов линейной структуры используются операторы: + Оператор (процедура) вывода — Write ( ); или Writln ( ) + Оператор (процедура) ввода — Read ( ); или Readln ( ) + Оператор присваивания —: = Рассмотрим эти операторы подробнее. Оператор присваивания. В результате присваивания переменная получает конкретное значение. ИмяПеременной: =Выражение; «: =» — символ присваивания; Например: Counter: =0; Pi: =3.1415926; Процедуры вывода. Процедура WRITE предназначена для вывода на экран монитора сообщений и значения выражений или переменных. Для того, чтобы вывести сообщение, нужно заключить его в апострофы (буква Э) в этом случае то, что заключено в апострофы, при работе вашей программы появится на экране монитора без изменений. Например: write('IIpHBeT'); После выполнения этой строки программы на экране появится надпись: Привет Если вы хотите вывести на экран результат некоторых ваших вычислений, т.е. не сообщение, а значение, хранимое в некоторой переменной, то апострофы не ставятся. Например: пусть в некоторой переменной Dok в результате вычислений хранится целое значение = 55, которое вы хотите вывести на экран. Тогда достаточно записать в программе следующую строку: write(Dok); После выполнения этой процедуры на экране появится: Если же, например, надо вывести некоторое вещественное значение, то можно использовать форматы вывода. Например: пусть в некоторой переменной D в результате вычислений хранится значение — 12, 4567, которое вы хотите вывести на экран. Тогда запишем оператор: write(D: 5: 2); Здесь использован формат вывода, где первая цифра означает общее количество знаков в выводимом числовом значении, а вторая цифра — количество знаков после запятой. В результате выполнения этой процедуры на экране появится: 12, 45 Т.е. последние две цифры не пропечатаются, так как в формате мы указали только две цифры после запятой. Чтобы пропечатать число полностью надо видоизменить оператор: write(D: 7: 4); Тогда после выполнения этой процедуры на экране появится: 12, 4567! Значение переменных перечисляемого типа нельзя вывести с помощью процедуры write. Рассмотрим еще один пример. Пусть в переменной kol хранится количество книг в некоторой библиотеке. Например =10675. Выведем это значение на экран, но с пояснением для пользователя вашей программы, т.е. на экране должно появиться: Всего книг — 10675 Этого можно добиться следующей последовательностью операторов: Write('Bcero книг — '); Write(kol); А можно записать все в одном, разделив параметры в скобках запятой: Write('Bcero книг — ', kol); Результат будет один и тот же. Процедура Writeln {write line} выводит информацию строкой. После того как была выведена информация, записанная в скобках после имени процедуры, курсор переместится на другую строку. Процедуры ввода. Для ввода данных используют процедуры read, readln. Процедура read считывает данные, вводимые с клавиатуры, а процедура readln считывает данные и символ
конца строки. Т.е. как и в случае с процедурой вывода, частица In (line) в конце означает, что после выполнений процедуры ввода курсор будет переведен на следующую строку. Пример. Составить программу, которая находит площадь прямоугольника произвольных размеров. Решение: Program Wip; Var Dlina, Shirina, S: real; Begin Writeln('B8eflHTe длину прямоугольника'); Readln(Dlina); У\/гКе1п('Введите ширину прямоугольника'); Readln(Shirina); S: =Dlina*Shirina; \Л/гНе1п('Площадь прямоугольника с шириной ' , Shirina: 8: 2, 'H длиной «, Dlina: 8: 2, 'paBHa', S: 8: 2); Readln; End. Кстати, приведенная выше программа реализует алгоритм линейной структуры (алгоритм вычисления площади прямоугольника). Рассмотрим еще примеры реализации алгоритмов линейной структуры. Пример. Алгоритм Квадрат_числа; {заголовок алгоритма} Переменные X, Y: вещественные числа; {описательный блок} Начало Ввод (X); Y: =X*X; Вывод(У); Конец. Запишем программу на языке Паскаль, реализующую данный алгоритм; для вычисления квадрата числа здесь используется стандартная арифметическая функция языка Паскаль — sqr( ): Обратите внимание на использование здесь операторов ввода\вывода. Во-первых, в начале программы (строки № 4, 5) оператору ввода значения в переменную х (Readln (x); ) предшествует оператор вывода на экран приглашающего сообщения (Write ('Введите х -> '); ). В результате работы этого оператора вывода во время исполнения программы перед пользователем на экране появится сообщение: Введите х -> _ ~V_I--------- 1 ----- Мигающий курсор Мигающий курсор после сообщения показывает, что машина готова «узнать» ответ пользователя. В месте этого курсора пользователь сможет набрать с клавиатуры число, квадрат которого он хочет рассчитать. Например: Введите х -> 1 После того как число набрано и будет нажата клавиша Enter, управление перейдет к следующему оператору (Readln (x); ), который прочитает введенное пользователем сообщение и запишет его в переменную х. Такой способ общения программы с пользователем часто называют режимом диалога, подразумевая здесь диалог машины (программы) и человека (пользователя). А операторы ввода\вывода используются в том числе для организации такого режима диалога. Во-вторых, при выводе результата расчета в операторе вывода (Writeln) через запятую перечислено два параметра: ('у = ', у), первый из которых стоит в апострофах ('у ='), а второй — без них (у). В чем разница? То, что в параметрах оператора вывода стоит в апострофах, выводится на экран без каких-либо изменений. По сути, это просто строка некоторого сообщения. А второй параметр оператора вывода (без апострофов) выдаст на экран не саму букву у, а значение (в данном случае численное), хранящееся в переменной под именем у. Т.е. на экране появится строка вида: У=1 Кроме того, напомню, что частичка In в конце оператора ввода\вывода означает, что после выполнения заданного оператором действия курсор будет переведен на следующую (пока пустую) строку экрана. С учетом всего вышесказанного во время работы программы перед пользователем на экране сформируется следующая последовательность записей (например): Введите х -> 2 У=4 Эта последовательность строк называется протоколом работы программы. Рассмотрим еще один пример. В предыдущих лекциях нами был рассмотрен очень полезный линейный алгоритм. Вспомним его и запишем программную реализацию на языке Паскаль. Пример Даны переменные А и В. Требуется обменять их значения, т.е. переменная А должна получить значение В, а В — значение А. Решение: 1. Исходные данные: А, В. Вспомогательная переменная DOP. Результат: А, В. 2. Метод решения задачи. В ЭВМ каждая величина хранится в отдельном участке памяти (переменной). Поэтому задача заключается в том, чтобы поменять местами содержимое двух ячеек. Решение задачи распадается на три этапа. Запись этого алгоритма с помощью псевдокода: Алгоритм Перемещение; {заголовок алгоритма} Переменные А, В, Оор: целые числа; {описательный блок} Начало Ввод (А, В); Dop: =A; А: =В; B: =Dop; Вывод(А, В); Конец. Программная реализация будет иметь вид: Program OBMEN; Var a, b, dop: integer; Begin {Ввод исходных данных} Write ('Введите а -> '); Readln (a); Write ('Введите b -> '); Readln (b); {Обмен значениями} Dop: =A; А: =В; B: =Dop; {Вывод результата работы} Writeln ('a = ', а); Writeln ('b = ', b); End. В фигурных скобках здесь записаны комментарии к участкам программы, идущим ниже. Комментарии — это некоторые пояснения к программе, которые не являются исполняемыми операторами (т.е. при работе программы не отрабатывают как операторы и, более того, не компилиру-
ются компилятором языка в исполняемый код), а лишь помогают программисту разобраться в самой программе. Комментарии удобно применять при разработке больших программ или программных продуктов, а так же при работе в группе программистов. Попробуйте самостоятельно разобраться в этой программе, для чего ответьте на следующие вопросы: 1. Найдите операторы программы, отвечающие за реализацию режима диалога. 2. Что будет выводиться на экран пользователю после выполнения оператора Writeln ('а = ', а); ? 3. В какой части программы происходит собственно реализация алгоритма обмена с помощью дополнительной переменной? По возможности наберите программу в среде Турбо Паскаль и протестируйте ее исполнение. Протокол работы программы перепишите с экрана в тетрадь. Выводы Попробуем обобщить все вышесказанное. 1. Составной оператор — это последовательность 2. Символ «; » называется пустым оператором и озна 3. Для реализации алгоритмов линейной структуры + Оператор (процедура) вывода — Write (); или Writln () + Оператор (процедура) ввода — Read (); или Readln () + Оператор присваивания —: = Контрольные вопросы______________________ 1. Составной оператор — это... а) последовательность команд, необходимых для реше б) последовательность операторных скобок Begin. .. end; в) последовательность произвольных операторов про Укажите правильный вариант ответа. 2. Для реализации алгоритмов линейной структуры а) Write ( ); б) While do; в) Read ( ); Один из пунктов здесь лишний. Укажите, какой именно. 3. В результате присваивания переменная получает Верно ли данное высказывание? 4. Процедура WRITE предназначена для... а) вывода на экран монитора сообщений и значения б) ввода данных значения выражений или переменных. 5. Процедура READ предназначена для... а) вывода на экран монитора сообщений и значения б) ввода данных значения выражений или переменных. 6. Какой из нижеперечисленных операторов выведет а) вес одной пачки = 12, 5674; б)12, 5674; в) вес одной пачки = 12, 56; г) вес одной пачки = 12, 5. Ответы 1. Правильный ответ — в. 2. Правильный ответ — б. 3. Правильный ответ — ДА. 4. Правильный ответ — а. 5. Правильный ответ — б. 6. Правильный ответ — в. Задания и упражнения Составить и протестировать на машине программы для решения следующих задач. 1. Построили N домов (пятиэтажных и девятиэтажных), из них Y домов — пятиэтажные. Сколько девятиэтажных домов построили? 2. Даны величины переменных А, В, С, D. Требуется переместить значение переменных следующим образом: в переменную В поместить значение из А, в А — значение из D, в D — значение из С, переменной С присвоить значение суммы А и D. Популярное:
|
Последнее изменение этой страницы: 2016-06-04; Просмотров: 6510; Нарушение авторского права страницы