- •Конспект лекций по информатике
- •Организация данных в эвм и основы программирования
- •1. Основные понятия языка программирования паскаль
- •1.1. Структурное программирование
- •1.2. Основные символы языка
- •1.3. Элементы языка
- •1.4. Интегрированная среда turbo pascal
- •1.5. Структура программы в turbo pascal
- •1.6. Определение типов
- •1.7. Операторы в программе
- •1.7.1. Операторные скобки
- •1.7.2. Операторы ввода
- •1.7.3. Оператор присваивания
- •1.7.4. Условный оператор
- •1.7.5. Пример простой программы
- •1.7.6. Оперетор безусловного перехода
- •1.8. Организация циклов
- •1.8.1. Использование операторов условного и безусловного перехода
- •1.8.2. Цикл с параметром
- •1.8.3. Цикл с предусловием - цикл while
- •1.8.4. Цикл с постусловием - цикл repeat
- •1.9. Оператор выбора варианта
- •1.10. Расположение операторов в программе
- •1.11. Концепция типов данных
- •2. Стандартные простые типы
- •2.1 Целый тип
- •2.1.1. Операции над данными целого типа:
- •2.2. Действительный тип
- •2.2.1. Операции над данными действительного типа:
- •2.3. Логический тип
- •Var p, q, r : Boolean;
- •2.3.1. Алгебра логики в Паскале
- •2.3.2. Законы алгебры логики в Паскале
- •2.4. Символьный тип
- •2.4.1. Символьные строковые константы
- •3. Нестандартные простые типы (определяемые пользователем)
- •3.1. Перечисляемый тип
- •3.2. Ограниченный тип (диапазон, интервал)
- •4. Процедуры и функции
- •4.1. Описание процедур
- •4.2. Стандартные процедуры
- •4.3. Описание функций
- •4.4. Стандартные функции
- •4.5. Итерация и рекурсия
- •4.6. Побочный эффект рекурсии
- •4.7. Предварительное описание (ссылки вперед)
- •5. Регулярные типы
- •5.1. Одномерный массив, или переменные с индексами
- •Алгоритмы сортировки массивов
- •1. Метод пузырька (метод обменной сортировки с выбором)
- •2. Сортировка выбором
- •3. Метод Шелла
- •4. Метод Хoopа
- •5.2. Многомерные массивы
- •5.3. Упакованные массивы
- •5.4. Строки
- •6. Множественные типы
- •6.1. Свойства множеств
- •6.2. Операции над множествами
- •7. Комбинированные типы
- •7.1. Описание записей и действия с ними
- •7.2. Оператор присоединения.
- •7.3. Записи с вариантами
- •8. Типизированная константа
- •8.1. Простая типизированная константа
- •8.2. Структурированная (сложная) типизированная константа
- •8.2.1. Типизированная константа массива
- •8.2.2. Типизированная константа записи
- •8.2.3. Типизированная константа множества.
- •9. Преобразование типов
- •9.1. Неявные преобразования типов
- •9.2. Использование стандартных функций для преобразования
- •9.3. Явные преобразования типов
- •9.5. Совместимость типов
- •10. Файловые типы
- •10.1. Определение файлового типа
- •10.2. Структура файла
- •10.3. Имя файла
- •10.4. Описание файлового типа
- •10.5. Файловая переменная
- •10.6. Операции над файлами
- •10.7. Типизированные файлы
- •10.8. Текстовые файлы
- •10.9. Нетипизированные файлы
- •10.10. Стандартные файлы inpuTиOutput
1.8.4. Цикл с постусловием - цикл repeat
Он имеет вид:
REPEATоператор1;
оператор2;
оператор3;
……………
оператор n
UNTILусловие;
В отличие от цикла предусловием, выход из цикла постусловием осуществляется при истинности условия. Этот цикл должен выполниться хотя бы один раз. Данный оператор цикла выполняется до тех пор, пока не станет истинным условие.
Заметим, что если в операторе WHILEусловие проверяется до очередного выполнения цикла, то в оператореREPEAT- после очередного выполнения.
Таким образом, оператор REPEAT- оператор с постусловием) всегда выполняется, по крайней мере, 1 раз, в то время как операторWHILE(оператор с постусловием) может не выполняться ни разу.
Еще одна особенность цикла REPEAT- в нем разрешается использовать произвольное число операторов.
Пример (тот же).
Repeat
Writeln(‘n=’,n,’sqr(n)’,sqr(n),’sqrt(n)’,sqrt(n));
N: =N+1
Untiln>100;
Когда переменная NUMBERпринимает последовательно значения 1,2,…,100, значение условияN>100 остается ложным и для них цикл выполняется (UNTIL- до тех пор, пока не). Как только переменнаяNUMBERпринимает значение 101, то условиеN>100 становится истинным (101>100) и выполнение цикла прекращается.
Заметьте, что при использовании как цикла WHILE, так и циклаREPEAT.
Необходимо принудительно увеличить значение переменной N. Если этого не делать, то цикл никогда не завершится, т.к. переменнаяNтак и остается равным единице. УсловиеN<=100 никогда не станет ложным, а условиеN>100 никогда не станет истинным. В результате оба цикла будут выполняться бесконечно долго. В этом случае говорят, что программа зацикливается. Оба этих цикла применяются, когда число повторений неизвестно(хотя это число можно сосчитать).
Пример. Лист бумаги разрезан пополам. Одну из полученных половинок снова делят пополам и т.д. Сколько понадобится делений, чтобы получить частицы размером с атом? Масса листа 1 грамм(М), масса атома 1Е-24 грамма.
Решение:
ProgramList;
Var m: real;
I: integer;
Begin
I:=1;m:=1;
While m>1E-24 do
Begin
M:=m/2;
I:=I+1;
End;
Writeln(‘I=’,I,’ делений’);
Writeln;
End.
1.9. Оператор выбора варианта
Условный оператор позволяет при выполнении программы выбирать одно из двух возможных действий. Если же необходимо сделать много взаимоисключающих проверок, то удобнее воспользоваться оператором выбора варианта.
Пусть перед нами стоит следующая задача.
Пример. Числами от 1 до 7 пронумерованы дни недели от понедельника до воскресенья. Необходимо преобразовать числовое значение соответствующего дня недели в его название и вывести на печать.
Задача легко решается с использованием последовательности условных операторов:
If day =1 then writeln(‘понедельник’) else
If day =2 then writeln(‘вторник’) else
………….
………….
If day =7 then writeln(‘воскресенье’);
Вместе с тем в языке программирования Паскаль имеется оператор, позволяющий проще, короче, и нагляднее записать решение этой задачи. Он называется оператором выбора и дает возможность выбрать для выполнения один из произвольного числа операторов, входящих в его состав. Теперь решение будет таким:
Casedayof
1: writeln(‘понедельник’);
2: writeln(‘вторник’) ;
3: ………………….
……………………..
7: writeln(‘воскр.’);
else writeln(‘ошибка….’);
end;
Если переменная dayпринимает значение 1, то выполняется оператор, перед которым стоит 1:. Еслиdayравно 2, то выполняется оператор, перед которым стоит 2: и т.д. Если же переменная принимает значение вне диапазона1…7, скажем 0 или 8, то выполняется следующий оператор.
Общий вид оператора выбора варианта:
Caseселекторof
метка1:оператор1;
…………………….
метка n: операторN;
End; {ofcase}
Другой вид оператора выбора:
Caseселекторof
Метка1:оператор1;
………………………….
Метка n: операторN;
Else оператор M;
End; {of case}