- •Алгоритмизация и основы программирования
- •1. Технология подготовки и решения задач на компьютере
- •Понятие об алгоритмических языках
- •2. Этапы решения задач на компьютере
- •Этапы процесса тестирования
- •Характерные ошибки программирования.
- •3. Основы языка программирования Паскаль
- •3.1. Алфавит языка программирования
- •Правила написания идентификаторов:
- •Константы
- •3.2. Выражения, операции
- •3.3. Операторы
- •3.3.1. Оператор присваивания
- •3.3.2. Операторы перехода
- •3.4. Использование комментариев для пояснений
- •3.5. Общая структура программ в Паскале
- •1. Раздел объявлений и соглашений
- •2. Раздел текстов процедур и функций
- •3. Раздел основного блока программы
- •3.6. Основные операторы модуля crt в turbo pascal
- •3.7. Типы данных
- •3.7.1. Целочисленный тип
- •3.7.2. Вещественные типы
- •3.7.3. Символьный тип
- •3.7.4. Логический тип (boolean)
- •Простые логические выражения
- •Составное логическое выражение
- •Перечисляемый тип
- •Интервальный тип
- •3.8. Ввод-вывод данных
- •Вывод данных
- •Способы представления вещественных чисел
- •Ввод данных
- •3.9. Математические функции и процедуры
- •Взаимные преобразования чисел
- •4. Конструкции языка программирования Паскаль
- •4.1. Организация ветвления
- •4.1.1. Условные операторы. Оператор if
- •4.1.2. Конструкция множественного выбора Case … Of
- •4.2. Операторы цикла
- •4.2.1. Оператор цикла For
- •4.2.2. Оператор цикла Repeat..Until
- •4.2.3. Оператор цикла While..Do
- •5. Структурированные типы данных
- •Одномерные массивы
- •Доступ к элементам массива
- •Заполнение массива
- •6. Подпрограммы пользователя. Назначение Преимущества модульности
- •Подпрограмма
- •Список используемой и рекомендуемой литературы
4. Конструкции языка программирования Паскаль
4.1. Организация ветвления
Условные операторы используются для написания разветвляющихся программ, т.е. позволяют выполнить часть программы только при соблюдении некоторых условий.
4.1.1. Условные операторы. Оператор if
Синтаксис:
if <выражение> then
begin
<блок операторов 1>
end
else
begin
<блок операторов 2>;
end;
Сначала вычисляется выражение; если оно истинно, то выполняется <блок операторов 1>, в противном случае выполняется <блок операторов 2>.
В качестве <выражения> могут быть использованы только булевские (логические) выражения, которые могут принимать значения True и False. В таких выражениях очень часто используются операции отношения и логические операции.
Например, a>0, b+c<=d, (i<0) and (j<i) и т.д.
Перед зарезервированным словом else не ставится точка с запятой!!!
Если блок <операторов 1> или блок <операторов 2> содержит всего один оператор, то его можно не заключать в операторные скобки Begin … End.
Пример:
var y,i: real;
begin
write('Введите число: ');
readln(i);
if i>=0 then y:=i
else
y:=-i;
writeln('Абсолютное значение введенного числа равно',y:8:4);
end.
Конструкция else не обязательна. Если значение <выражения> ложно, а конструкция else опущена, то управление передается на оператор, следующий в программе за оператором if.
Пример:
var y,i: real;
begin
write('Введите число: ');
readln(i);
if i<0 then i:=-i;
y:=i;
writeln('Абсолютное значение введенного числа равно',y:8:4);
end.
Допускается вложение оператора if в <блок операторов 1> или <блок операторов 2> другого оператора if. При вложении операторов if рекомендуется для ясности группирования операторов использовать операторные скобки Begin …End, ограничивающие <блок операторов 1> и <блок операторов 2>.
Если же операторные скобки отсутствуют, то компилятор ассоциирует каждое зарезервированное слово else с ближайшим оператором if, у которого отсутствует конструкция else.
Пример:
Var i:real;
Begin
Writeln(‘Введите возраст:’);
Readln(i);
if i>0 then
if i<=14 then writeln('Паспорта нет')
else if i>110 then write('Некорректный возраст');
else writeln(У такого гражданина должен быть паспорт России“);
end.
Решение задачи: Нахождение корней квадратного уравнения.
var a, c, b, x1, x2, d: real;
begin
writeln('input a,b,c');
readln(a,b,c);
d:=(sqr(b)-4*a*c);
writeln('d=', d:8:5);
if d<0 then
writeln('Действительных корней нет');
else
if d=0 then
writeln('x1=x2=',-b/(2*a))
else
begin
x1:=(-b-sqrt(d))/(2*a);
x2:=(-b+sqrt(d))/(2*a);
writeln('x1=', x1:4:2);
writeln('x2=', x2:4:2);
end;
end.
4.1.2. Конструкция множественного выбора Case … Of
Конструкция Case … Of является идеальным средством для обработки ситуаций с несколькими исходами, года условие может принимать более двух значений.
Синтаксис:
Case <порядковая переменная> Of
<значение 1>:
begin
<блок операторов 1>;
end;
<значение 2>:
begin
<блок операторов 2>;
end;
…
<значение n>:
begin
<блок операторов n>;
end;
Else
begin
<блок операторов n+1>;
end;
End;
В общем случае <порядковая переменная> может быть целочисленного, символьного или логического типа.
В зависимости от значения <порядковой переменной> выполняется тот или иной <блок операторов>. Если значение ни разу не встречается в списке, то выполняется блок операторов конструкции Else.
В операторе Case … Of перед конструкцией Else ставится точка с запятой!!!
Данный оператор заканчивается зарезервированным словом End;.
Конструкция Else необязательна.
Если один и тот блок операторов необходимо выполнять при различных значениях <порядковой переменной>, то эти значения можно указывать в одной строке через запятую, либо, если они идут подряд, можно указать два крайних значения, разделив их двумя точками.
Пример:
Var n:integer;
…
Case N Of
1:Writeln('стол');
2..4: Writeln('стола');
0, 5..9: Writeln('столов');
Else
Writeln('чересчур много столов');
End;
Конструкция Case … Of очень часто используется для замены конструкций из многочисленных вложенных операторов If … Then.
|
Контрольные вопросы по теме «Организация ветвления» |
Чем отличается линейный алгоритм от ветвления?
Что такое вычислительный процесс разветвляющейся структуры? Как организовать ветвление вычислений: а) на две ветви; б) на три ветви?
Какие ключевые слова используются в Паскале для организации ветвления? Что находится между ними?
Чем полное ветвление отличается от неполного?
Как оформлять текст программы, чтобы он был понятнее?
Что необходимо использовать, если в случае истинности некоторого условия нужно выполнить несколько операторов?
Как быть, если в случае истинности некоторого условия никаких действий выполнять не требуется, а в случае ложности нужно выполнить несколько действий?
Какую управляющую структуру Паскаля нужно использовать, если проверяемое выражение может принимать несколько возможных значений, и в каждом случае необходимо выполнить разные действия?
В каком случае количество операторов begin в программе не должно соответствовать количеству операторов end?
Составить последовательность операторов для вычисления величины z=0, если x<-2; z=1, если -2 7, x < 2; z=-1, если x>2.
Зачем необходимо при отладке программы тестировать все ветви алгоритма?