Условный оператор в Паскале
Pascal – язык программирования высокого уровня. Его разработал Никлаус Вирт в 1970 году. Вирт преследовал цель создать высокоуровневый ЯП, который можно было бы преподавать студентам. В итоге из университетов Паскаль вышел «в люди». Профессионалы стали писать на нём сложные программы, а сам язык поддерживается до сих пор. Итак, перейдём к знакомству с языком.
Алфавит и пунктуация
Паскаль включает набор символов, знакомый каждому:
- Буквы латинского алфавита от A до Z (строчные и заглавные);
- Арабские цифры от 0 до 9;
- Символы-разделители: запятая, точка с запятой, точка, двоеточие, апостроф, кавычки, скобки, пробел;
- Арифметические знаки: + (сложение), — (вычитание), * (умножение), / (деление);
- Знаки отношений: > (больше), < (меньше), >= (больше или равно), <= (меньше или равно), <> (не равно), = (равно).
Типы данных
Тип определяет способ внутреннего представления компьютера для объекта, а также действия, которые можно с ним выполнять. Данные могут носить переменное (variable) или постоянное (constant) значение.
- Integer – целое число. Числа в интервале от -32768 до 32767
- Real – вещественное число. Числа от 2.9 * 10-39 до 1.7 * 1038
- Char — символ. Включает 1 символ
- String — строка. Включает до 256 символов
- Boolean – логический тип. True / False
Структура программы на Паскале
Напишем простую программу, которая выводит сообщение.
Program myMessage;
Const Message = “Я программирую на Паскале”;
Begin
WriteLn(Message);
End.
Разберём по строкам.
- Program – зарезервированное слово с именем (идентификатором) программы.
- Const Message – объявляем неизменяемое значение Message с идентификатором «Я программирую на Паскале».
- Begin – старт программы.
- WriteLn(Message) – оператор вывода на экран с заранее объявленной константой, которую мы хотим вывести.
- End. – конец программы
Как видите, всё просто. Зарезервированные слова пишутся на простом английском языке.
Обратим внимание на то, что идёт перед Begin … End. Это – описательная часть программы. Она содержит нестандартные идентификаторы, используемые в исполняемых операторах.
Комментарии
Комментарий в программировании – часть программы, которая несёт пояснения для самого разработчика. Эта часть не влияет на семантику, следовательно — результат компиляции в программе.
Синтаксис комментария в Паскале следующий:
{ это комментарий }
{* и это тоже *}
Комментарий может содержать произвольное число символов. Вкладывать их друг в друга недопустимо.
Стандартные операторы, процедуры и функции
Операторы ввода / вывода
Взаимодействие программы и пользователя – один из фундаментальных принципов программирования. Рассмотрим, какая процедура помогает юзеру ввести данные.
Read(x,y,z,…);
Readln(x,y,z,…);
Эти операторы позволяют пользователю вводить значения с клавиатуры и присваивают их переменным x,y,z.
Оператор Readln() отличается от Read() тем, что после ввода последней переменной курсор переводится в начало новой строки.
Есть хитрость. Если ReadLn(); вставить в конец программы, она «остановится», ожидая от пользователя ввод данных. Теперь рассмотрим вывод. Ему также служат две команды:
- Write();
- Writeln();
Элементами вывода могут являться имена переменных, выражения, константы. Прежде чем вывести на экран компьютер значения выражений сначала вычислит. Элементы списка разделяются запятыми. Разница между ними следующая: после выполнения оператора Writeln происходит переход на новую строку, а после выполнения Write переход на новую строчку не происходит и печать по последующим командам вывода Write или Writeln будет происходить на той же строчке.
Простая арифметика
Pascal поддерживает сложение и вычитание, умножение и деление, а также деление по модулю и целочисленное деление. Простые операции называются бинарными (между 2 операндами). Часть таких операций знакомы нам со школы. Стоит отметить, что здесь, как и в математике, есть свой приоритет вычисления, который можно менять с помощью скобок.
Логические операции
Результаты этих операций возвращают true / false.
- NOT — отрицание («НЕ»);
- AND — умножение («И»);
- OR — сложение («ИЛИ»);
- XOR — «Исключающее ИЛИ».
Операторы сравнения
Они же операторы отношений.
- — больше;
- < — меньше;
- = — равно;
- <> — не равно;
- >= — больше или равно;
- <= — меньше или равно;
В операциях отношения могут принимать участие не только числа, но и символы, строки, множества и указатели.
Условный оператор
Он же оператор условного перехода (существует переход безусловный). Условие есть логическое выражение, в зависимости от которого выбирается одна из двух альтернативных веток алгоритма.
Если значение условия истинно (TRUE), то будет выполняться оператор 1, записанный после ключевого слова then. В противном случае будет выполнен оператор 2, следующий за словом else, при этом оператор 1 пропускается. После выполнения указанных операторов программа переходит к выполнению команды, стоящей непосредственно после оператора if.
Пример с проверкой «чётное / нечётное число»:
var n: integer;
begin
write (‘Введите целое число: ‘);
readln (n);if n mod 2 = 0 then
write (‘Оно четное.’)else
write (‘Оно нечетное.’);
readln
end.
Оператор цикла while
Цикл с предусловием. В его заголовке находится логическое выражение. Если оно true, то тело цикла выполняется, если false – то нет. Как только тело цикла было выполнено, то ход программы снова возвращается в заголовок цикла. Условие снова проверяется на истинность. Тело цикла выполнится столько раз, сколько раз логическое выражение вернет true. Поэтому очень важно в теле цикла предусмотреть изменение переменной, фигурирующей в заголовке цикла, таким образом, чтобы когда-нибудь обязательно наступала ситуация false. В противном случае произойдет так называемое зацикливание, одна из самых неприятных ошибок в программировании.
Пример:
var
i, n: integer;begin
write (‘Количество знаков: ‘);
readln (n);i := 1;
while i <= n do begin
write (‘(*) ‘);
i := i + 1
end;readln
end.
Оператор case
Это оператор выбора. Используется в случаях, когда в зависимости от значения надо выполнить один или несколько операторов. Его можно считать упрощением конструкции if then else.
program RateToText;
var
rating : integer;
begin
write(‘Введите оценку 1-5 ‘);
readln(rating);case(rating) of
1,2: writeln(‘Неудовлетворительно’);
3: writeln(‘Удовлетворительно’);
4: writeln(‘Хорошо’);
5: writeln(‘Отлично’);
end;readln;
end.
Оператор break
Он мгновенно прерывает цикл.
var
S : String;
begin
while True do
begin
ReadLn(S);
if S = » then
Break;
WriteLn(S);
end;
end.
Вызов break надо писать внутри цикла.
Массивы
Массивы — это совокупность элементов одного типа. В Паскале в массиве:
- каждый компонент может быть явно обозначен и к нему имеется прямой доступ;
- число компонент массива определяется при его описании и в дальнейшем не меняется.
Для обозначения компонент массива используется имя переменной-массива и так называемые индексы, которые обычно указывают желаемый элемент. Тип индекса может быть только порядковым (кроме longint). Чаще всего используется интервальный тип (диапазон).
Пример 1. Ввод и вывод одномерного массива.
const
n = 5;
type
mas = array[1..n] of integer;
var
a: mas;
i: byte;
begin
writeln(‘введите элементы массива’);
for i:=1 to n do readln(a[i]);
writeln(‘вывод элементов массива:’);
for i:=1 to n do write(a[i]:5);
end.
Определить переменную как массив можно и непосредственно при ее описании, без предварительного описания типа массива, например:
var a,b,c: array[1..10] of integer;
Если массивы a и b описаны как:
var
a = array[1..5] of integer;
b = array[1..5] of integer;
то переменные a и b считаются разных типов.
Если типы массивов идентичны, то в программе один массив может быть присвоен другому. В этом случае значения всех переменных одного массива будет присвоены соответствующим элементам второго массива.
Вместе с тем, над массивами не определены операции отношения. Сравнивать два массива можно только поэлементно.
Так как тип, идущий за ключевым словом of в описании массива, — любой тип Турбо Паскаль, то он может быть и другим массивом. Например:
type
mas = array[1..5] of array[1..10] of integer;
Таким образом, возникает понятие многомерного массива. Глубина вложенности массивов произвольная, поэтому количество элементов в списке индексных типов (размерность массива) не ограничена, однако не может быть более 65520 байт.
Заключение
Мы познакомились с основами языка Паскаль. Этот язык прежде всего учебный. Наградой за его упорное изучение станет навык грамотного программирования.