
- •Языки и системы программирования Алгоритмы
- •Языки программирования
- •Область применения языков программирования
- •Сложность и эффективность языков программирования
- •Трансляторы
- •Характеристика с/п Pascal abc
- •Используемые в с/п Pascal abc «горячие клавиши»
- •Структура программы на Паскале
- •Сообщения об ошибках. Отладка программы.
- •Система подсказок.
- •Команды вывода данных на экран
- •Константы
- •Переменные
- •Арифметические выражения. Приоритет арифметических операций
- •Стандартные арифметические функции
- •Процедуры инкремента и декремента
- •Примеры решения линейных задач
- •Ввод данных с клавиатуры
- •Примеры решения диалоговых задач
- •Линейные задачи для самостоятельной работы
- •Лаб. 1. Линеаризовать выражение:
- •Лаб. 2. Линейные диалоговые задачи (на одно действие)
- •Лаб. 3. Диалоговые задачи на несколько действий
- •Ветвление
- •Логические выражения
- •Вложенное ветвление
- •Лаб. 4. Задачи на ветвление:
- •Лаб. 5. Задачи на ветвление с вычислениями:
- •Выбор варианта
- •Лаб. 6. Задачи на выбор варианта:
- •Как выбрать цикл?
- •Экстренные события в теле цикла
- •Лаб. 7. Числовые задачи с циклом For
- •Лаб. 8. Сюжетные задачи с циклом For
- •Лаб. 9. Задачи с условными циклами
- •Библиотека crt
- •Библиотека sounds
- •Лаб. 10. Задачи с использованием циклов и библиотек crt и sounds
- •Порядковые типы данных
- •Перечислимый тип данных
- •Символьный тип данных
- •Ограниченный (интервальный) тип данных
- •Лаб. 11. Задачи со строками
- •Массивы
- •Решение задач с массивами
- •Поиск минимального (максимального) элемента массива
- •Сортировка массива.
- •Двумерные и многомерные массивы
- •Лаб. 12. Задачи с одномерными массивами
- •Лаб. 13. Задачи с двумерными массивами
- •Множества
- •Файлы данных
- •Записи и базы данных
- •Библиотека GraphAbc
- •Действия с графическим окном:
- •Точечная графика
- •Графические примитивы
- •Текст в графическом окне
- •Использование готовых точечных рисунков
- •Вспомогательные алгоритмы
- •Рекурсия
- •Событийное программирование
- •Использование таймеров
- •Использование сторонней библиотеки ukeyb
Вложенное ветвление
Любая ветвь может не быть линейным участком программы, а сама содержать ветвление. Такое ветвление называется вложенным (или множественным) ветвлением. Чаще вторично разветвляется ветка «нет». В качестве примера разберём простую задачу:
В
первом магазине хозяйка приобрела a
кг. огурцов. Их оказалось b
штук. Во втором магазине на c
кг. получилось d
штук. В каком магазине огурцы крупнее?
Находим массу одного огурца в каждом магазине и сравниваем их.
program
ogur; var
a,b,c,d,m1,m2:real; begin
write(’Введите
массу и к-во огурцов из 1 магазина ’);
readln(a,b);
m1:=a/b;
write(’Введите
массу и к-во огурцов из 2 магазина ’);
readln(c,d);
m2:=c/d;
if
m1>m2
then
writeln(’В
первом магазине – крупнее.’)
else
if
m1<m2
then
writeln(’Во
втором магазине – крупнее.’)
else
writeln(’Одинаковые’); end.
Обратите внимание, что каждый else пишется под своим if. Ступенчатое расположение структур (особенно хорошо это видно в следующей задаче) очень рекомендуется для лучшей читаемости программы. Если пренебрегать этим правилом, большие программы становятся запутанными и неясно, какой else к какому if относится.
Н
if
a
>
b
then
if
x
>
0
then
writeln(’***’) else
writeln(’ooo’);
Р
if
a
>
b
then begin
if
x
>
0
then
writeln(’***’); end else
writeln(’ooo’);
Вторая задача: Определить, является ли одно из двух введённых чисел делителем другого.
program
deliteli;
var
a,b:integer;
begin
write(’Введите
два целых числа: ’); readln(a,b);
if
a=b then
writeln(’Числа
равны’)
else
if
(a mod
b=0) then
writeln(a,’
делится на ’,b)
else
if
(b mod
a=0) then
writeln(b,’
делится на ’,a)
else
writeln(’Эти
числа не делятся друг на друга’);
end.
Эта программа работает с ошибкой, если одно из введённых чисел равно 0 (деление на 0 запрещено). Измените программу, сделав в начале дополнительную проверку этого случая.