
- •Кафедра информационных технологий
- •Практикум
- •Введение
- •Тема 1. Основы алгоритмизации
- •1.1. Общие понятия и определения
- •1.2. Свойства информации
- •1.3. Этапы решения задач
- •1.4. Блок-схемы алгоритмов
- •Тема 2. Интегрированная среда Turbo Pascal 7.0
- •2.1. Основные элементы ide Turbo Pascal 7.0
- •2.2. Ввод программы в среде Turbo Pascal
- •2.3.Сохранение программы в файле
- •2.4. Работа с существующей программой
- •2.5. Компиляция программы в среде Turbo Pascal
- •Compile successful: Press any key... (Успешная компиляция: Нажмите любую клавишу...)
- •2.6. Выполнение программы в среде Turbo Pascal
- •2.7. Выход из среды Turbo Pascal
- •Тема 3. Элементы языка Турбо Паскаль и программирование линейных вычислительных процессов
- •3. 1. Алфавит языка
- •3. 2. Идентификаторы
- •3.3. Основные типы данных и операции с ними
- •3.4. Константы и переменные
- •3.5. Выражения
- •3.6. Стандартные математические функции языка Турбо - Паскаль
- •3.7. Структура программы
- •X,y : Integer;
- •3.8. Ввод исходных данных. Операторы read и readln
- •3.9. Вывод данных. Операторы write и writeln
- •Writeln (выражение 1, выражение 2, … , выражение n).
- •3. 10. Оператор присваивания
- •3.11. Пример составления программы
- •3.12. Контрольные вопросы
- •3.13. Варианты заданий
- •Тема 4. Программирование разветвляющихся процессов
- •4.1. Методические указания
- •4.2. Условный оператор if и составной оператор Begin … End
- •4.3. Оператор безусловного перехода goto и оператор отбора case
- •4.4. Контрольные вопросы
- •4.5. Варианты заданий
- •Тема 5. Циклические процессы
- •5.1. Общие сведения
- •5.2. Цикл с предусловием
- •I:integer;
- •5.3. Оператор цикла с постусловием
- •I:integer;
- •5.4. Цикл с параметром
- •I:integer;
- •5.5. Итерационные циклы
- •XI, s, X, e: real;
- •5.6. Контрольные вопросы
- •5.7. Варианты заданий
- •Тема 6. Ввод с клавиатуры и формы представления выходной информации
- •6.1. Операторы ввода и вывода
- •6.2. Управление шириной поля вывода в процедурах Write и Writeln
- •6.3. Пример выполнения задания
- •Xn, xk, hx : real;
- •Результаты выполнения программы
- •6.4. Контрольные вопросы
- •6.5. Варианты заданий
- •Тема 7. Вложенные циклы
- •7.1. Общие сведения
- •7.2. Примеры выполнения задания
- •X, hx, a, b, hx, s, x0, xn, y: Real;
- •7.3. Контрольные вопросы
- •7.4. Варианты заданий
- •Тема 8. Массивы и действия с ними.
- •8.1. Методические указания
- •8.2.Одномерные массивы
- •8.3.Многомерные массивы
- •V:stroka;
- •8.4.Символьные массивы
- •8.5.Ввод-вывод массивов
- •8.6. Примеры выполнения программ
- •I,k,l:integer;
- •I,j,m,r:integer;
- •8.7. Контрольные вопросы
- •I,j: integer;
- •8.8. Варианты заданий
- •Приложение 1
- •Приложение 2 Структурограммы
- •Рязанский государственный медицинский университет
- •Кафедра информационных технологий отчет
- •Рязань 2004
- •Составить программу для вычисления значения функции
- •Библиографический список
- •Содержание
4.3. Оператор безусловного перехода goto и оператор отбора case
Оператор безусловного перехода GOTO используют для изменения последовательности (порядка) выполнения операторов и перехода к выполнению программы, начиная с оператора, имеющего метку. Эта же метка должна быть указана и в операторе GOTO. Пример:
GOTO 1;
…
1: WRITE (‘ОПЕРАТОР С МЕТКОЙ’);
Метки, используемые в Turbo Pascal, могут быть двух типов:
целым числом (в пределах от 0 до 9999);
обычным идентификатором.
Все используемые метки должны быть описаны в разделе объявления меток, начинающемся зарезервированным словом LABEL, пример:
LABEL 1, 2, 3, A, B, X2;
Для того, чтобы пометить оператор, перед ним пишут метку, двоеточием отделяя её от оператора. Таким образом, можно пометить только один оператор. Следует иметь ввиду, что использовать оператор GOTO нужно очень осторожно. Частое его применение приводит к затруднению понимания логики работы программы. При написании блок-схемы этот оператор отображается стрелкой перехода в нужную часть алгоритма.
Оператор отбора – обобщение условного оператора: он даёт возможность выполнить одно из нескольких действий. В зависимости от значений выражения (селектора отбора), относящихся к перечисляемому или ограниченному (но не вещественному) типу, этот оператор производит выбор из нескольких операторов.
В общем случае конструкция оператора отбора имеет вид:
CASE <селектор> OF
C1 : <оператор 1>;
C2 : <оператор 2>;
. . . . .
CN : <оператор N>;
[ELSE <оператор (N+1)>]
END;
В этой структуре: CASE … OF … [ELSE …] END – зарезервированные слова языка PASCAL, которые можно перевести соответственно как ВЫБОР … ИЗ … [ИНАЧЕ …] КОНЕЦ;
C1, C2,…, CN – константы, с которыми сравнивается значение выражения "селектор";
оператор 1, оператор 2,…, оператор N – операторы, из которых выполняется тот, с константой которого совпадает значение выражения "селектор";
оператор (N+1) – оператор, который выполняется, если значение выражения "селектор" не совпадает ни с одной из констант C1, …, CN.
Ветвь оператора ELSE является необязательной. Если она отсутствует и значение выражения "селектор" не совпадает ни с одной из перечисленных констант, то выполняется оператор, стоящий за END. В отличие от оператора IF перед словом ELSE точку с запятой можно ставить.
Если для нескольких констант нужно выполнить один и тот же оператор, их можно перечислить через запятую (или даже указать диапазон, если возможно), сопроводив их одним оператором. Например:
Case I of
0, 2, 4, 6, 8: WriteLn (‘Четная цифра’);
1, 3, 5, 7, 9: WriteLn (‘Нечетная цифра’);
10…100: WriteLn (‘Число от 10 до 100’);
else
WriteLn (‘Отрицательное число или больше 100’)
End;
Примером, использования оператора отбора, также может служить программа следующего задания.
Покупатель в 2002 году, имея 100 рублей, заплатил за покупку 23 рубля. Определить минимальное количество купюр в наборе, которое он получит в качестве сдачи. (Возможные купюры: 5 руб., 10 руб., 50 руб.).
Один из вариантов программы решения этой задачи выглядит так:
Рис. 4
В блоке 1 вводим имеющуюся сумму А и сумму за покупку B в рублях. Далее в блоке 2 находим оставшуюся сумму N и обнуляем счётчик купюр K. Затем проверяем в блоке 3 больше ли оставшееся сумма, чем 50 (руб.), если да, то селектору R присваиваем значение 2, и осуществляем переход в блок 10, где оператор выбора передаёт управление блоку 11. В нём из оставшейся суммы N вычитаем 50 (руб.) и в блоке 14 увеличиваем счётчик купюр на 1. После этого возвращаемся к блоку 3 и сравниваем оставшуюся сумму N с достоинством трёх купюр, т.о. процесс повторяется до тех пор, пока оставшаяся сумма не станет меньше 5 руб. Как результат вычислений печатаем значение счётчика купюр K.
Program MONEY;
{ Минимальное количество купюр в качестве сдачи }
Label 1, 7;
Var
A, B, N, K, R: Integer;
Begin
Write (‘Исходная сумма’); ReadLn (A);
Write (‘Потраченная сумма’); ReadLn (B);
N := A – B;
K := 0; { обнуление оставшейся суммы }
1: If N >= 50 then R := 2 else
If (N < 50) and (N >= 10) then R := 3 else
If (N < 10) and (N >= 5) then R := 4 else
Begin
WriteLn (‘Минимальное количество купюр = ’, K);
Goto 7
End;
Case R of
2: N := N - 50;
3: N := N - 10;
4: N := N - 5;
End;
K := K + 1;
Goto 1;
7: End.
Результат выполнения программы
Исходная сумма 100
Потраченная сумма 23
Минимальное количество купюр = 4