Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Программирование линейных Алгоритмов



Итак, мы уже знакомы с некоторыми основными (ба­зовыми) понятиями языка Паскаль. Теперь можно при­ступать к непосредственному изучению программирова­ния на этом языке тех типов алгоритмов, о которых гово­рилось ранее.

Вспомним, что программа — это упорядоченный спи­сок команд на некотором конкретном языке программи­рования. Запрограммировать некоторый алгоритм озна­чает написать программу, реализующую этот алгоритм. Попробуем для начала программировать алгоритмы ли­нейной структуры.

Напомню, что линейным называется алгоритм, в ко­тором все этапы решения задачи выполняются строго по­следовательно, т.е. линейный алгоритм выполняется в ес­тественном порядке его написания и не содержит развет­влений и повторений.


Для реализации алгоритмов линейной структуры ис­пользуются операторы:

+ Оператор (процедура) вывода — 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. Составной оператор — это последовательность
произвольных операторов программы, заключенная в опе­
раторные скобки — зарезервированные слова Begin. .. end.

2. Символ «; » называется пустым оператором и озна­
чает окончание предшествующего ему оператора.

3. Для реализации алгоритмов линейной структуры
используются операторы:

+ Оператор (процедура) вывода — Write (); или Writln () + Оператор (процедура) ввода — Read (); или Readln () + Оператор присваивания —: =

Контрольные вопросы______________________

1. Составной оператор — это...

а) последовательность команд, необходимых для реше­
ния некоторой задачи;

б) последовательность операторных скобок Begin. .. end;

в) последовательность произвольных операторов про­
граммы, заключенная в операторные скобки — зарезер­
вированные слова Begin. .. end.


Укажите правильный вариант ответа.

2. Для реализации алгоритмов линейной структуры
используются операторы:

а) Write ( );

б) While do;

в) Read ( );
г): =

Один из пунктов здесь лишний. Укажите, какой именно.

3. В результате присваивания переменная получает
конкретное значение.

Верно ли данное высказывание?

4. Процедура WRITE предназначена для...

а) вывода на экран монитора сообщений и значения
выражений или переменных;

б) ввода данных значения выражений или переменных.
Укажите правильный вариант ответа.

5. Процедура READ предназначена для...

а) вывода на экран монитора сообщений и значения
выражений или переменных;

б) ввода данных значения выражений или переменных.
Укажите правильный вариант ответа.

6. Какой из нижеперечисленных операторов выведет
на экран сообщение следующего вида: «write('Bec одной
пачки = ', v: 7: 2); », если переменной V р, о этого было при­
своено значение 12, 5674?

а) вес одной пачки = 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; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.049 с.)
Главная | Случайная страница | Обратная связь