Категории
Самые читаемые
Лучшие книги » Компьютеры и Интернет » Программирование » Язык программирования PASCAL - Александр Цветков

Язык программирования PASCAL - Александр Цветков

Читать онлайн Язык программирования PASCAL - Александр Цветков

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 2 3 4 5 6 7 8 9 10 11
Перейти на страницу:

Обратите внимание на запись “лесенкой”, она не обязательна, но весьма желательна, поскольку помогает наглядно увидеть алгоритмическую структуру программы. Правило такое: end пишем под begin.

- 17 -

Оператор if (сокращенная форма)

Часто встречается ситуация, когда ветвь else не нужна. В этом случае ее можно опустить.

Например: if x<0 then x:=-x; Обратите внимание, что точка с запятой ставится после оператора x:=-x в отличие от полной формы.

Пример программы с оператором if

Program OddEven;

{ Определение четного или нечетного числа }

var n : integer;

begin

write('Введите число '); readln(n);

if odd(n)

then

writeln('Число нечетное')

else

writeln('Число четное ');

end.

Вложенные операторы if

Иногда возникает необходимость устроить развилку на более чем две ветви. В этом случае операторы if можно вкладывать один в другой. С точки зрения алгоритмической корректности лучше, если вложенный оператор находится в ветви else. Приведем сразу пример программы

Program Sign;

{ Определение знака числа }

var n : integer;

begin

write('Введите число '); readln(n);

if n>0

then

writeln ('Число положительное')

else

if n=0

then

writeln('Число ноль')

else

writeln ('Число отрицательное')

end.

Обратите внимание, что после вложенный оператор if можно не заключать в операторные скобки begin ... end, поскольку оператор if синтаксически рассматривается как один оператор.

Если имеются вложенные операторы if, один из которых неполный, например:

if n>0

then

if n=0

then

writeln('У вас ноль')

else

writeln ('Число положительное')

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

- 18 -

Логические выражения. В операторе if используются логические выражения, имеющие тип boolean[9]. Про такие выражения можно сказать только являются ли они истинными (true) или ложными (false). Простейший случай логического выражения – логическая переменная.

Пример: var b : boolean; . . . . . .

b :=true; . . . . . .

if b then writeln ('Все в порядке');

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

Операции сравнения. Существует шесть бинарных[10] операций сравнения, у которых операнды могут быть самых разных типов (целые, вещественные, символьные строковые).

< меньше <= меньше или равно > больше >= больше или равно = равно <> не равно

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

Например: if a>0 then a:=1 else a:=-1. С точки зрения языка Pascal a>0 представляет собой логическое выражение (можно написать даже так: b :=a>0, если b – переменная булевского типа).

Логические операции. Для составления сложных логических выражений могут использоваться две бинарные логические операции AND, OR и одна унарная[11] NOT .

and – результат операции истинен тогда и только тогда, когда истины оба операнда.

or – результат операции истинен тогда, когда истинен хотя бы один операнд.

not – имеет результат противоположный операнду.

Примеры операторов if со сложными условиями:

if (x>=0) and (x<=1) then writeln ('X находится в диапазоне от 0 до 1');

if not ((x>=0) and (x<=1)) then writeln('X вне диапазона 0-1');

if (x<0) or (x>1) then writeln('X вне диапазона 0-1');

Обратите внимание на скобки. Операции сравнения имеют самый низший приоритет, поэтому заключены в скобки. Приоритет операции and соответствует операции умножения, or – сложению, not – унарному минусу (т.е. самый высокий).

- 19 -

Задание №5

1. Вычислите логические выражения: not true and not false not true or not false not (true or false) Y not (true and false) a 2. Напишите условие нахождения точки a в первом квадранте системы координат, считая ее координаты заданными X переменными x, y .

3. Напишите программу, выводящую слова «зачет», если введено число 3, 4 или 5 и «незачет», если введено число 1 или 2.

4. Напишите программу, выводящую текст «плохо», «удовлетворительно», «хорошо» или «отлично», если введено число 2, 3, 4 или 5 соответственно.

5. Используя операцию определения остатка от деления (mod, стр. 5), модернизируйте программу Concentric (стр. 16), таким образом чтобы каждая 3-я окружность выводилась красным цветом, а остальные были синими.

Вложенные циклы

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

Выведем на экран таблицу умножения целых чисел от 1 до 10.

Здесь внутри тела внешнего цикла по переменной i, находится вложенный цикл по переменной j, который выводит в операторе write (не writeln!) произведение i*j, выделяя 4 позиции для результата. Далее идет оператор writeln, который переводит курсор на новую строку. Внешний цикл повторяет 10 раз эту операцию, формируя, таким образом, 10 строк таблицы, которая приведена справа.

- 20 -

Тема №6. Оператор case

Оператор case

Оператор case используется для создания развилки на более чем 2 ветви. Понять его работу поможет следующий пример.

Program YourMark;

{ ваша отметка }

var n : integer;

begin

write ('Введите вашу отметку '); readln (n);

case n of

2 : writeln('Плохо');

3 : writeln('Удовлетворительно ');

4 : writeln('Хорошо');

5 : writeln('Отлично');

end;

end.

Обратите внимание, что оператор case заканчивается скобкой end.

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

Program YourMark2;

{ ваша отметка }

var n : integer;

begin

write('Введите вашу отметку '); readln(n);

case n of

2 : writeln('Плохо');

3 : writeln('Удовлетворительно ');

4 : writeln('Хорошо');

5 : writeln('Отлично')

else writeln ('Вы ввели недопустимую отметку!')

end;

end.

Обратите внимание на отсутствие точки с запятой перед else и двоеточия после else.

Кроме единичных значений переключателя n можно указывать диапазон значений.

Program YourMark3;

{ ваша отметка }

var n : integer;

begin

write('Введите вашу отметку '); readln(n);

case n of

2..3 : writeln ('Это все очень плохо!');

4 : writeln ('Хорошо!');

5..6 : writeln ('Так держать!')

else writeln ('Вы ввели недопустимую отметку!')

end;

end.

Обратите внимание на отсутствие точки с запятой перед else и двоеточия после else.

- 21 -

Задание № 6.1. По образцу программ, написанных на предыдущей странице, решите следующую задачу:

Программа вводит число в диапазоне от 1 до 10 и выводит на экран значение числа русскими буквами (один, два, … десять). (2 балла)

Задание № 6.2. Модифицируйте программу таким образом, чтобы она выводила название чисел в диапазоне от 1 до 99 (ну кассовый аппарат же это делает на чеках!).

Подсказка №1. Для выделения числа десятков используйте хорошо знакомую вам операцию «остаток от деления». Т.е., если в переменной n находится введенное число, то получить число десятков очень просто – d:=n mod 10;

Подсказка №2. Надо рассмотреть по сути три диапазона чисел: от 1 до 9, от 10 до 19, и от 20 до 99. (5 баллов)

1 2 3 4 5 6 7 8 9 10 11
Перейти на страницу:
На этой странице вы можете бесплатно скачать Язык программирования PASCAL - Александр Цветков торрент бесплатно.
Комментарии