Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Для универа / Информатика / Uch_posobie_INFORMATIKA_2010isprav.doc
Скачиваний:
311
Добавлен:
15.02.2016
Размер:
13.32 Mб
Скачать

7.3.3. Программы линейной структуры

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

Составим программу, которая складывает два числа и выводит их сумму на экран компьютера. Для того чтобы сложить эти числа, необходимо вначале присвоить их каким-либо переменным, например, a и b, а эти переменные предварительно описать. Затем следует присвоить результат арифметической операции сложения третьей переменной c и вывести результат на экран компьютера.

Итак, программа (рис. 7.3.3) будет выглядеть следующим образом: после заголовка программы – summa. Затем идет раздел описания переменных, который начинается со служебного слова var (сокращение от английского variable – переменная). После служебного слова через запятую перечисляются сами переменные, используемые в программе и после двоеточия указывается тип этих переменных – integer ( целые).

Рис. 7.3.3. Программа, складывающая два числа и результат ее работы

Обратите внимание на то, что в этом разделе в обязательном порядке должны быть описаны все переменные, используемые в данной программе. Если мы забудем описать какую-либо из переменных, то при компиляции этой программы мы увидим следующее сообщение:

Error 3: Unknown identifier (неизвестная переменная)

и программа не будет работать до тех пор, пока Вы не исправите ошибку, описав недостающую переменную в разделе описаний после слова var.

В основной части программы переменным a и b должны быть присвоены конкретные числовые значения с помощью оператора присваивания, так как по умолчанию начальные значения переменных будут равны нулю.

Типы данных

Целые числа имеют следующие типы:

Byte - диапазон от 0 до 255;

Shortint - диапазон от -128 до 127;

Integer - диапазон от -32768 до 32767;

Word - диапазон от 0 до 65535;

Longint - диапазон от -2147483648 до 2147483647.

Вещественные числа имеют следующие типы:

Real - диапазон от -2.9*10-39 до 1.7*1038;

Single - диапазон от -1.5*10-45 до 3.4*1038;

Double - диапазон от -5.0*10-324 до 1.7*10308;

Extended - диапазон от -1.9*10-4951 до 1.1*104932.

Одиночные символьные переменные имеют тип Char.

Строковые символьные переменные имеют тип String. Могут содержать до 255 символов.

Логические переменные имеют тип Вооlean. Могут принимать только два значения True (истина) и False (ложь).

Оператор присваивания

Общий вид оператора присваивания в языке Паскаль имеет вид: <имя_переменной :=< присваиваемая величина>;

Присваиваемая величина, может быть числом, переменной или арифметическим выражением. При выполнении оператора присваивания вначале вычисляется арифметическое выражение, и полученное значение присваивается переменной, стоящей в левой части оператора.

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

В операторе присваивания после имени переменной обязательно должно стоять двоеточие. Если пропустить в записи оператора двоеточие, то получится не оператор присваивания, а операция сравнения. ( Операции сравнения мы будем изучать позже в разделе «Условные операторы»). Запись x:=x+5 в Паскале является правильной. Эта запись означает, что переменной x присваивается новое значение, которое больше чем старое значение этой же переменной на 5. Например, если до выполнения операции присваивания значение x было равно 3, то после ее выполнения значение x станет равным 8.

В нашей программе мы присваиваем переменным a и b конкретные числовые значения – 5 и 10. Далее мы присвоим переменной с значение выражения a+b, то есть в переменной c будет соответствовать значение суммы двух чисел. Теперь осталось вывести это значение на экран компьютера, что мы сделаем с помощью уже знакомого нам оператора Writeln. Следует, однако, учесть, что в этом случае оператор Writeln используется иначе, чем при выводе текста. Во-первых, имя переменной в отличие от текстовой строки не заключается в апострофы (хотя скобки нужно обязательно ставить и в этом случае). Во-вторых, при выполнении оператора вывода на экране мы увидим не имя переменной, а ее текущее значение. Оператор вывода в программе будет записан следующим образом:

Writeln(c);

В результате же выполнения оператора на экран будет выведена сумма, содержащаяся в переменной c – число 15.

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

Изменим программу таким образом, чтобы она складывала любые два произвольных числа, которые пользователь должен вводить с клавиатуры компьютера. Для этого нужно будет использовать оператор ввода Readln. Он состоит из служебного слова Readln и списка ввода, заключенного в скобки. Правда в отличие от списка вывода операторов Write и Writeln в списке ввода могут содержаться только имена переменных. В данной программе будут использованы два оператора Readln, каждый из которых в списке ввода содержит по одной переменной:

Readln(a);

Readln(b);

С помощью операторов ввода переменным a и b будут присвоены численные значения, которые пользователь введет с клавиатуры. После запуска программы на выполнение появится пользовательский экран с мерцающим на нем курсором. Далее, можно вводить числовые значения переменных a и b. Для ввода каждого из двух чисел необходимо набрать его на клавиатуре, и затем нажать клавишу Enter. При этом нужно помнить о том, что вводимые числа по типу должны соответствовать переменным, то есть быть целыми. После ввода второго числа на экране появится результат работы программы – сумма двух чисел.

Такая программа будет вполне работоспособна, но неудобна для пользователя, так как после ее запуска неопытному пользователю при виде «черного» экрана непонятно, что, же нужно дальше делать. Поэтому дополним программу (рис. 7.3.4). Перед операторами ввода поставим, операторы вывода, которые будут выводить информацию, подсказывающую пользователю дальнейший ход его действий. Например, таким образом:

Writeln ('введите 2 числа');

Writeln ('после ввода каждого числа нажимайте клавишу Enter');

Пользователь будет таким образом знать, что именно ему предстоит делать даже в том случае, если он первый раз работает за компьютером

Рис. 7.3.4. Усовершенствованная программа сложения двух чисел и результат работы программы сложения

В конец программы внесены еще 2 дополнения. В список вывода оператора Writeln вставлен еще один элемент – текст, поясняющий полученный результат. Список вывода, таким образом, будет состоять из двух элементов, причем текст будет выводиться в неизменном виде, а для переменной будет выведено не ее имя, а ее числовое значение. Кроме этого, после оператора вывода добавлен еще один «пустой» оператор ввода Readln. Этот оператор приостанавливает окончание работы программы до тех пор, пока не будет нажата клавиша Enter, то есть у пользователя появляется возможность сразу ознакомиться с результатами выполнения программы, которые теперь не исчезают с экрана. Не нужно будет после запуска программы на выполнение специально открывать раздел меню Debug и пользоваться командами User screen или Output, чтобы увидеть, что же получилось в итоге работы программы.

Арифметические выражения и операции

В вышеописанной программе использовалась только одна арифметическая операция – сложение. Но в языке Паскаль, естественно, используются и другие арифметические операции. Вот их перечень:

+ сложение; - вычитание; * умножение; / деление;

div - целочисленное деление; mod - нахождение остатка от целочисленного деления.

Первые четыре операции выполняются так же, как в обычной арифметике. Единственное, на что следует обратить внимание: знаки умножения и деления отличаются по написанию (вместо принятых в математике знаков. Кроме того, знак умножения между сомножителями нельзя опускать, как это часто делается в математике. Запись ab, которая в математике может обозначать произведение двух чисел a и b, компилятором языка Паскаль будет воспринята как имя переменной, состоящее из двух букв, что приведет к ошибке в работе программы. Что же касается целочисленного деления, то оно выполняется как обычное, но затем отбрасывается дробная часть получившегося при делении числа. Операции div и mod выполняются только над переменными и константами целого типа.

Пример использования действий div и mod:

значение выражения 91 div 8 равно 11;

значение выражения 91 mod 8 равно 3.

При вычислении значения арифметического выражения вначале выполняются действия, обладающие более высоким приоритетом. Слово «приоритет» в переводе с латыни означает первенство и, применительно к программированию, имеется в виду первенство при выполнении математических операций. Умножение, деление, целочисленное деление и нахождение остатка как раз и относятся к действиям с высоким приоритетом. Сложение и вычитание имеют более низкий приоритет. Если в выражении имеются действия с одинаковым приоритетом, то они выполняются слева направо по ходу выражения. Если необходимо изменить порядок действий в выражении, то следует использовать круглые скобки. Действия, заключенные в скобки обладают наиболее высоким приоритетом, то есть выполняются в первую очередь.

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

5 + 3*(7+2) – 40 div 4

Прежде всего, вычисляется выражение, находящееся в скобках – его значение равно 9. Затем слева направо выполняются следующие действия: умножение выражения в скобках на 3 (получаем 27) и целочисленное деление (получаем 10). На завершающем этапе складываем 5 и 27 и вычитаем из суммы 10. В итоге получаем конечный результат – 22.

Говоря об арифметических выражениях, необходимо отметить также следующее: хорошо знакомый нам оператор Writeln может выводить не только тексты и значения переменных, но и значения арифметических выражений, в которые могут входить переменные и константы. Эти выражения в операторе Writeln записываются подобно именам переменных в скобках, но без кавычек. Компьютер вначале подсчитает значение выражения, а затем покажет получившийся результат на экране. Например, если мы в какой-либо программе присвоим переменным x и y значения 20 и 30, а затем оператором Writeln выведем на экран компьютера выражение x+y:

x:=20;

у:=30;

writeln(x+y);

то в результате выполнения этого фрагмента программы компьютер вначале сложит значения двух переменных, а затем выведет получившуюся сумму на экран компьютера, то есть в данном случае на экране мы увидим число 50.

Для лучшего понимания программы ее можно снабдить комментариями. Комментарии представляют собой пояснения к тексту программы и являются неотъемлемой частью любой достаточно большой по объему и сложной программы. Они могут располагаться в любом месте программы и занимать отдельную строку или несколько строк в программе. При запуске программы на выполнение компилятор игнорирует комментарии. Любой комментарий должен быть обязательно ограничен фигурными скобками или символами (* и *) с обеих сторон. При просмотре текста ранее составленной программы комментарии легко определить визуально, так как в отличие от основного текста программы они выделены серым цветом.