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

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

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

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

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

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

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

Рассмотрим эти операторы подробнее.

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

Процедуры вывода. Процедура WRITE предназначе­на для вывода на экран монитора сообщений и значения выражений или переменных.

Для того, чтобы вывести сообщение, нужно заключить его в апострофы (буква Э) в этом случае то, что заключено в апострофы, при работе вашей программы появится на экране монитора без изменений.

write(‘IIpHBeT’);

После выполнения этой строки программы на экране появится надпись:

Если вы хотите вывести на экран результат некоторых ваших вычислений, т.е. не сообщение, а значение, храни­мое в некоторой переменной, то апострофы не ставятся.

Например: пусть в некоторой переменной Dok в ре­зультате вычислений хранится целое значение = 55, ко­торое вы хотите вывести на экран. Тогда достаточно запи­сать в программе следующую строку:

После выполнения этой процедуры на экране появится:

Если же, например, надо вывести некоторое веществен­ное значение, то можно использовать форматы вывода.

Например: пусть в некоторой переменной D в резуль­тате вычислений хранится значение — 12, 4567, которое вы хотите вывести на экран. Тогда запишем оператор:

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

Т.е. последние две цифры не пропечатаются, так как в формате мы указали только две цифры после запятой. Чтобы пропечатать число полностью надо видоизменить оператор:

Тогда после выполнения этой процедуры на экране появится:

12, 4567! Значение переменных перечисляемого типа нельзя

вывести с помощью процедуры write.

Рассмотрим еще один пример. Пусть в переменной kol хранится количество книг в некоторой библиотеке. На­пример =10675. Выведем это значение на экран, но с по­яснением для пользователя вашей программы, т.е. на эк­ране должно появиться:

Всего книг — 10675

Этого можно добиться следующей последовательностью операторов:

Write(‘Bcero книг — ‘);

А можно записать все в одном, разделив параметры в скобках запятой:

Write(‘Bcero книг — ‘, kol);

Результат будет один и тот же.

Процедура Writeln выводит информацию строкой. После того как была выведена информация, за­писанная в скобках после имени процедуры, курсор пере­местится на другую строку.

Процедуры ввода. Для ввода данных используют про­цедуры read, readln.

Процедура read считывает данные, вводимые с клави­атуры, а процедура readln считывает данные и символ

конца строки. Т.е. как и в случае с процедурой вывода, частица In (line) в конце означает, что после выполнений процедуры ввода курсор будет переведен на следующую строку.

Составить программу, которая находит площадь пря­моугольника произвольных размеров. Решение: Program Wip; Var Dlina, Shirina, S: real; Begin

Writeln(‘B8eflHTe длину прямоугольника’);

У\/гКе1п(‘Введите ширину прямоугольника’);

\Л/гНе1п(‘Площадь прямоугольника с шириной ‘

, Shirina: 8: 2, ‘H длиной «, Dlina: 8: 2, ‘paBHa’, S: 8: 2);

Кстати, приведенная выше программа реализует алго­ритм линейной структуры (алгоритм вычисления площа­ди прямоугольника).

Рассмотрим еще примеры реализации алгоритмов ли­нейной структуры.

Алгоритм Квадрат_числа; Переменные X, Y: вещественные числа; Начало Ввод (X); Y: =X*X; Вывод(У); Конец.

Запишем программу на языке Паскаль, реализующую данный алгоритм; для вычисления квадрата числа здесь используется стандартная арифметическая функция языка Паскаль — sqr( ):

Обратите внимание на использование здесь операторов ввода\вывода.

Во-первых, в начале программы (строки № 4, 5) опера­тору ввода значения в переменную х (Readln (x); ) пред­шествует оператор вывода на экран приглашающего сооб­щения (Write (‘Введите х -> ‘); ). В результате работы этого оператора вывода во время исполнения программы перед пользователем на экране появится сообщение:

Мигающий курсор после сообщения показывает, что машина готова «узнать» ответ пользователя. В месте это­го курсора пользователь сможет набрать с клавиатуры число, квадрат которого он хочет рассчитать.

После того как число набрано и будет нажата клавиша Enter, управление перейдет к следующему оператору

(Readln (x); ), который прочитает введенное пользовате­лем сообщение и запишет его в переменную х.

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

А операторы ввода\вывода используются в том числе для организации такого режима диалога.

Во-вторых, при выводе результата расчета в операторе вывода (Writeln) через запятую перечислено два парамет­ра: (‘у = ‘, у), первый из которых стоит в апострофах (‘у =’), а второй — без них (у). В чем разница? То, что в параметрах оператора вывода стоит в апострофах, выво­дится на экран без каких-либо изменений. По сути, это просто строка некоторого сообщения. А второй параметр оператора вывода (без апострофов) выдаст на экран не саму букву у, а значение (в данном случае численное), храня­щееся в переменной под именем у. Т.е. на экране появит­ся строка вида:

Кроме того, напомню, что частичка In в конце операто­ра ввода\вывода означает, что после выполнения задан­ного оператором действия курсор будет переведен на сле­дующую (пока пустую) строку экрана.

С учетом всего вышесказанного во время работы про­граммы перед пользователем на экране сформируется сле­дующая последовательность записей (например):

Введите х -> 2

Эта последовательность строк называется протоколом работы программы.

Рассмотрим еще один пример. В предыдущих лекциях нами был рассмотрен очень полезный линейный алгоритм. Вспомним его и запишем программную реализацию на языке Паскаль.

Даны переменные А и В. Требуется обменять их значе­ния, т.е. переменная А должна получить значение В, а В — значение А.

1. Исходные данные: А, В. Вспомогательная перемен­ная DOP. Результат: А, В.

2. Метод решения задачи. В ЭВМ каждая величина хранится в отдельном участке памяти (переменной). По­этому задача заключается в том, чтобы поменять места­ми содержимое двух ячеек. Решение задачи распадается на три этапа. Запись этого алгоритма с помощью псевдо­кода:

Алгоритм Перемещение; Переменные А, В, Оор: целые числа; Начало

Вывод(А, В); Конец.

Программная реализация будет иметь вид: Program OBMEN; Var a, b, dop: integer; Begin

Write (‘Введите а -> ‘);

Write (‘Введите b -> ‘);

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. Для реализации алгоритмов линейной структуры
используются операторы:

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

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

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

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

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

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

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

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

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

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

а) вес одной пачки = 12, 5674; б)12, 5674;

г) вес одной пачки = 12, 5.
Укажите правильный вариант ответа.

Составить и протестировать на машине программы для решения следующих задач.

1. Построили N домов (пятиэтажных и девятиэтажных), из них Y домов — пятиэтажные. Сколько девятиэтажных домов построили?

2. Даны величины переменных А, В, С, D. Требуется переместить значение переменных следующим образом: в переменную В поместить значение из А, в А — значение из D, в D — значение из С, переменной С присвоить зна­чение суммы А и D.

Источник

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

Понятие линейного алгоритма. Примеры написания программ.

  1. Описание переменных: a,b,c,d,sum – целое, mult – длинное целое.
  2. Ввод значений переменных a и b, вычисление их суммы и присвоение полученного значения переменной sum, вывод значения sum на экран.
  3. Ввод значений переменных c и d, вычисление их произведения и присвоение полученного значения переменной mult, вывод значения mult на экран.

Программирование с помощью операторов условного и безусловного перехода

Условный оператор If

Условный оператор обеспечивает выполнение или невыполнение некоторого оператора, группу операторов – в зависимости от заданных условий. Структура условного оператора имеет следующий вид: Ifthenelse; Ifthen; где If,then,else– зарезервированные слова (если, то, иначе); – произвольное выражение логического типа. Оно может быть простым или сложным. Сложные условия образуются с помощью логических операций AND,OR,XOR,NOT. При записи условий могут использоваться все возможные операции отношения; – простой или составной оператор. Составной оператор представляет собой группу из произвольного числа операторов, отделенных друг от друга точкой с запятой, ограниченную операторными скобками – зарезервированные словаBeginиEnd. Формат: Begin; < оператор 2>; . End. На рис.5.1 представлены блок-схемы разветвляющегося алгоритма с использованием условного оператора If. Рис. 5.1 Блок-схема разветвляющегося алгоритма с использованием оператора условного перехода. Примеры использования оператора If. Простое условие. If x> Max then Y:= Max else Y:=x; Переменная Yполучит значение переменнойX, если только это значение не превышаетMax, в противном случаеYстанет равноmax. If x> Max then Max:=X; Y:=x; Переменная Yвсегда будет иметь значение переменнойX, а вMaxзапоминается максимальное значениеX. Примечание. После оператора,стоящего перед зарезервированным словомELSE,символ точка с запятой» (;) не ставится. С использованием сложного условия: If (n>=0) and (n<=15) then Begin WriteLn('значение n лежит в диапазоне 0..15') Else WriteLn ('значение n меньше 0 или больше 15').

Источник

Читайте также:  Acs 101 программирование брелоков
Оцените статью