- •Основы языка Pascal Историческая справка и основные свойства языка Pascal
- •Структура простейшей программы
- •Раздел описаний
- •Раздел операторов
- •Типы данных. Операции и функции над данными разных типов Концепция типов данных
- •2. Символьный тип
- •3. Логические типы
- •4. Перечислимый тип
- •Вещественные числа
- •Правила преобразования типов
- •Функции преобразования типов:
- •Цепочка if-else-if
- •Операторы повторений
- •Счетный цикл
- •Пример использования цикла for
- •Оператор цикла с предусловием (while)
- •Пример использования цикла while
- •Оператор цикла с постусловием (repeat)
- •Пример использования цикла repeat
Пример использования цикла for
Дано натуральное число N. Получить все его делители.
Решение. Для получения делителей числа необходимо перебрать все натуральные числа в диапазоне от 2 до N/2 включительно. Для каждого числа будем выполнять проверку – делит ли оно число N без остатка. Если да, то делитель будем выводить на экран. 1 и само число N проверять не имеет смысла и их выведем на экран без проверки.
Program DELIT;
Var N,D:integer;
Begin
Write(‘введите N’); readln(N);
Writeln(‘Делители числа:’);
Writeln(‘1’);
For D:=2 to N div 2 do{деление целочисленное из-за требований цикла}
If N mod D = 0 then writeln(D);
Writeln(N);
End.
Оператор цикла с предусловием (while)
Это самый универсальный из циклов Паскаля. С его помощью можно реализовать любые варианты повторяющихся конструкций. Другое название – цикл ПОКА.
Оператор While имеет такую конструкцию:
W
hile
<логическое
выражение> Do
<оператор>
;
Правила работы:
Вычисляется логическое выражение.
Если получен результат True, то выполняется оператор, составляющий тело цикла и происходит возврат к п.1.
Если результат False, то работа цикла завершается и происходит переход на оператор, следующий за циклом.
Т.о., логическое выражение цикла While – это условие продолжения повторений.
Особенности оператора WHILE:
Если в начале работы цикла логическое выражение дает результат false, то тело цикла не будет выполнено ни разу.
В теле цикла должны быть операторы, влияющие на результат логического выражения.
Если в теле цикла более одного оператора, то необходимо использовать составной оператор (Begin - End).
Пример использования цикла while
Пример. Дано натуральное число N. Найти сумму и количество цифр в его цифровой записи.
Решение. Решение этой задачи основано на том, что:
Остаток от деления любого натурального десятичного числа на 10 равен последней цифре в записи числа
Частное от деления – результат целочисленного деления – это все цифры числа, кроме последней. Т.о., последняя цифра отбрасывается.
Например: N = 5482
5482 mod 10 = 2 – последняя цифра
5482 div 10 = 548 – оставшаяся часть числа без последней цифры
Если теперь заменить исходное N на результат операции DIV и повторить действия, то мы получим следующую цифру и т.д. Поскольку цифровая запись числа постепенно сокращается, то результат DIV для одноразрядного числа, состоящего из старшего разряда, будет равен 0. Это и будет признаком завершения разбора числа на цифры.
Особенность алгоритма: исходное N теряется.
Program SK;
Var x,s,k,c: integer;
Begin
Write(‘введите N ’);
Readln(N);
S:=0; {сумма цифр}
k:=0; {количество цифр}
While N>0 Do {пока в числе N еще есть необработанные цифры}
Begin
C :=N mod 10; {очередная цифра числа}
S :=S + C; {накопление суммы цифр}
K := k + 1; {подсчет количества цифр}
N := N div 10; {удаление из числа обработанной цифры}
End;
Writeln(‘Сумма цифр =‘,S);
Writeln(‘Количество цифр =’,K);
End.
Оператор цикла с постусловием (repeat)
Другое название цикла – цикл «До». Оператор Repeat имеет такую конструкцию:
Repeat <операторы> Until <логическое выражение>;
П
равила
работы:
Вычисляется логическое выражение.
Если получен результат False, то выполняется оператор, составляющий тело цикла и происходит возврат к п.1.
Если результат True, то работа цикла завершается и происходит переход на оператор, следующий за циклом.
Т.о., логическое выражение цикла Repeat – это условие завершения повторений.
Особенности оператора REPEAT:
Вне зависимости от значения логического выражения операторы тела цикла будут выполнены хотя бы 1 раз. Эта особенности делает цикл Repeat менее универсальным, чем While.
В теле цикла должны быть операторы, влияющие на результат логического выражения.
В цикле Repeat не используются составной оператор.
Замечание. Циклы While и Repeat являются взаимозаменяемыми, за исключением того случая, когда возможно ситуация, при которой действия не должны выполняться ни разу.
