- •Оглавление
- •§1. Первое знакомство с системой программирования Турбо Паскаль
- •§2. Основные элементы языка
- •§3. Команды редактора Команды управления движением курсора
- •§4. Первая программа
- •Пояснения к программе
- •Запуск программы
- •Сохранение программы
- •§5. Управление позициями и цветом вывода
- •§6. Арифметический квадрат.Абсолютная величина
- •§7. Типы данных
- •§8. Целый тип данных
- •Пример 6
- •Пример 7
- •Пример 8
- •§9. Вещественный тип данных
- •Пример 7
- •Пример 8
- •§10. Логический тип данных
- •§11. Условный оператор
- •Пример 1
- •Пример 2
- •Решение
- •§12. Оператор безусловного перехода. Раздел описания меток
- •§13. Вложенные условные операторы
- •Решение
- •Задание
- •Решение задач Задача 1
- •Задача 8
- •Задача 9
- •Задача 10
- •§14. Цикл с параметром
- •Пример 1
- •Пример 2
- •Пример 3
- •§15. Работа с окнами. Метод пошагового выполнения программ
- •§16. Решение задач с использованием цикла с параметром Задача 1
- •Решение
- •Задача 2.
- •§17. Цикл с предусловием
- •Оператор цикла с предусловием
- •Пример 1
- •Решение
- •Пример 2
- •Решение
- •Пример 3
- •Решение
- •§18. Цикл с постусловием
- •Пример 1
- •Решение
- •Пример 2
- •§19. Алгоритм Евклида
- •§20. Вложенные циклы Пример 1
- •Решение
- •Пример 2
- •Решение
- •Пример 3
- •Решение
- •Пример 4
- •Решение
- •Пример 5
- •§21. Решение задач с использованием циклов с условием Задача 1
- •Решение
- •Задача 2
- •§22. Символьный тип данных
- •Пример 1
- •Решение
- •Пример 2
- •Решение
- •§23. Ограниченный тип данных
- •Var b:3..8; а не просто Vаг b:Integer;
- •Решение
- •§24. Оператор варианта (выбора)
- •Пример 1
- •Решение
- •Пример 2
- •Решение
- •Пример 3
- •Решение
- •Пример 4
- •§25. Перечисляемый тип данных
- •§26. Описание переменных, констант и типов. Раздел описания констант
- •Раздел описания типов
- •§27. Преобразование типов. Совместимость типов
- •Пример 1
- •Решение
- •Пример 2
- •Решение
- •Пример 3
- •Решение.
- •§28. Процедуры
- •Описание процедуры
- •Решение
- •Begin {основная программа}
- •Пример 2
- •Решение
- •Пример 3
- •§29. Функции
- •Пример 1
- •Пример 2
- •Решение
- •Пример 3
- •Решение
- •§30. Примеры рекурсивного программирования
- •Задачи с рекурсивной формулировкой
- •Пример 3
- •Задачи, которые можно решить как частный случай обобщенной
- •Задание
- •Задачи, в которых можно использовать характеристику или свойство функции Пример
- •Решение
- •§31. Файловый тип данных Операции для работы с файлами последовательного доступа
- •§32. Обработка файлов Связь переменной файлового типа с файлом на диске
- •Чтение из файла
- •Закрытие файла
- •Признак конца файла
- •Запись в файл
- •§33. Прямой доступ к элементам файла
- •Удаление файлов. Процедура
- •Переименование файлов. Процедура
- •Пример 2
- •§34. Текстовые файлы
- •Обработка текстовых файлов
- •Пример 1
- •Решение
- •Пример 2
- •Нетипизированные файлы
- •§35. Одномерные массивы. Работа с элементами(разбор на примерах) Пример 1
- •Решение
- •Пример 2
- •Решение
- •Пример 3
- •Решение
- •Begin {Считываем очередную строку}
- •§36. Работа с элементами массива (разбор на примерах)
- •Пример 2
- •§37. Методы работы с элементами одномерного массива
- •Создание массива
- •Пример 1
- •Решение
- •Пример 2
- •Решение
- •Работа с несколькими массивами Пример
- •Решение
- •§38. Удаление элементов из одномерного массива Пример 1
- •Решение
- •Begin {Сдвиг элементов на один влево}
- •Пример 2
- •Решение
- •§39. Вставка элементов в одномерный массив
- •Вставка нескольких элементов
- •Решение
- •§40. Перестановки элементов массива
- •§41. Двухмерные массивы Описание. Работа с элементами
- •§42. Найти сумму элементов
- •Решение
- •§43.Нахождение количества элементов с данным свойством
- •Пример 1
- •Решение
- •Пример 2
- •Решение
- •§44. Работа с несколькими массивами Пример
- •Решение
- •§45. Определить, отвечает ли заданный массив некоторым требованиям Пример 1
- •Решение
- •Пример 2
- •Решение
- •§46. Изменение значений некоторых элементов, обладающих заданным
- •§47. Заполнение двухмерного массива по правилу
- •Пример 2
- •Решение
- •§48. Вставка и удаление элементов Вставка строки
- •Решение
- •Примечания
- •Удаление строки Пример
- •Решение
- •Примечания
- •§49. Перестановка элементов массива Перестановка двух элементов Пример 1
- •Решение
- •Пример 2
- •§50. Строковый тип данных
- •Операции со строками
- •Склеивание
- •Сравнение
- •Примеры
- •Пример 8
- •Пример 9
- •Пример 10
- •§51. Множественный тип данных
- •Операции над множествами
- •Примеры
- •Сравнение множеств
- •Пример 1
- •Пример 2
- •Вопросы для обсуждения
- •Пример 3
- •Вопросы для обсуждения
- •Пример 4
- •Решение
- •Пример 5
- •Решение
- •§52. Комбинированный тип данных (записи)
- •Пример 1
- •Пример 2
- •Пример 3
- •Решение
§17. Цикл с предусловием
Цикл с предусловием используется тогда, когда число повторений оператора цикла заранее не известно, а задается некоторое условие продолжения цикла.
Оператор цикла с предусловием
While <условие> Do <тело цикла>;
Выполнение оператора цикла с предусловием начинается с проверки условия, записанного после слова While. Если оно соблюдается, то выполняется <тело цикла>, затем вновь проверяется условие и т.д. Как только при очередной проверке окажется, что условие не соблюдается, <тело цикла> выполняться не будет.
Примечание
1. Если <тело цикла> состоит из нескольких операторов, то они объединяются операторными скобками.
2. В теле цикла обязательно должен быть оператор, влияющий на соблюдение условия, в противном случае произойдет зацикливание.
Пример 1
Подсчитать количество цифр заданного натурального числа n.
Решение
Подсчет количества цифр начнем с последней цифры числа. На очередном шаге цикла увеличим счетчик цифр на единицу, а число уменьшим в 10 раз (тем самым мы избавляемся от последней цифры числа). Далее с получившимся числом проделаем ту же последовательность действий и т.д., пока число не станет равным нулю.
Program Example_43;
Var m, n: Longint;
k: Integer; {счетчик цифр}
Begin
Writeln('Введите натуральное число');
{вводим натуральное число n>0}
Readln(n);
m:=n; k:=0;
While m<>0 Do
{пока (While) число m<>0 делать (Do)}
Begin
Inc(k); {k:=k+1;}
m:=m div 10;
{"выбрасываем" из числа последнюю цифру}
End;
Writeln('В числе ',n,' - ' ,
k,' цифр');
{вывод количества цифр}
Readln;
End.
Пример 2
Дана непустая последовательность натуральных чисел, за которой следует 0. Найти порядковый номер наименьшего элемента последовательности.
Решение
Обозначим через х и i очередной элемент последовательности и его номер; min и k − минимальный элемент последовательности и его номер. Считывание элементов последовательности производится до тех пор, пока не будет введен 0, то есть пока х<>0. Начальное значение минимума определяется значением первого элемента последовательности. Очередное вводимое число (очередной элемент последовательности) требуется сравнивать с текущим значением минимума, и если текущее значение min окажется больше очередного элемента последовательности, то min нужно изменить, а номер очередного элемента последовательности − запомнить. Учитывая вышесказанное, составим программу:
Program Example_44;
Var x, i, min, k: Integer;
Begin
Writeln('Введите первый элемент
последовательности');
Read(x); k:=1;
min:=x; i:=2;
While x<>0 Do
Begin
If x<min Then
Begin min:=x; k:=i-1 End;
Writeln('Введите ', i , ' элемент
последовательности');
Read(x);
Inc(i);
End;
Writeln('Номер минимального
элемента - ', k);
End.
Пример 3
Напечатать таблицу значений функции sin x на отрезке [0,1] с шагом 0,1 (каждое вещественное число вывести в четырех позициях на отдельной строке).
Решение
Для перебора всех значений из отрезка с некоторым шагом проще всего использовать цикл с параметром. Но нам требуется перебирать вещественные числа, а параметр цикла не может быть вещественным. Поэтому придется использовать цикл While.
Сравните два решения этой задачи, представленные ниже.
Program Example_45;
Var i: Real;
Begin
i:=0;
While i<=1 Do
Begin
Writeln(i: 2: 1,' ', sin(i): 4: 3);
i:=i+0.1;
End;
Readln;
End.
Program Example_46;
Var i: Integer;
Begin
i:=0;
While i<=10 Do
Begin
Writeln(i,' ',sin(i/10):4:3);
Inc(i);
End;
Readin;
End.
На первый взгляд эти программы должны работать одинаково, но, запустив их, мы обнаружим, что первая программа выдает значения функции для всех значений х от 0 до 0,9, а вторая программа − для всех значений х от 0 до 1. Это происходит из-за приближенного представления вещественного числа последнее значение получается чуть больше 1.
Как вы знаете, вся информация представляется в памяти ЭВМ в виде 0 и 1. Для хранения переменной типа Real в памяти ЭВМ отводится 48 бит (6 байт). При решении задач следует избегать использования циклов, в условиях которых используются вещественные переменные.