- •Оглавление
- •§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
- •Решение
Пример 2
For i:=1 To 25 Do
With klass [i] Do
Begin
Readln(fam);
Readln (b1, b2, b3, b4, b5);
End;
Программа для решения рассматриваемой задачи может быть записана следующим образом:
Program Example_144;
Туре
pupil=Record
fam: String[15] ;
b1, b2, b3, b4, b5:2..5;
sb: Real;
End;
Var klass: Array[1..25] Of pupil;
p: pupil;
i, m: Integer;
sbmax: Real;
Begin
For i:=1 To 25 Do {ввод исходных данных}
With klass[i] Do
Begin
Writeln ('Введите фамилию и пять
оценок');
Readln(fam);
Readln(b1, b2, b3, b4, b5);
End;
For i:=1 To m Do
{вычисление среднего балла}
With klass[i] Do
sb:=(b1+b2+b3+b4+b5)/5;
For i:=1 To 25 Do {вывод данных}
With klass[i] Do
Writeln(fam:20, '-', b1:5,
b2:5,b3:5,b4:5,b5:5,sb:6:3);
sbmax:=0;
{поиск максимального среднего балла}
For i:=1 To m Do
If klass[i].sb>=sbmax Then
sbmax:=klass[i].sb;
For i:=1 To m Do {печать результатов}
If klass[i].sb=sbmax Then
With klass[i] Do Writeln(fam:20,' - ',
sb: 6:3);
Readln;
End.
Пример 3
Определить дату завтрашнего дня.
Решение
Чтобы определить дату завтрашнего дня, надо знать не только дату сегодняшнего дня, но и количество дней в данном месяце (так как если это последний день месяца, то завтра будет первый день следующего), кроме того, надо знать, какой год − високосный или нет (от этого зависит количество дней в феврале).
Пусть дата вводится в формате число − месяц − год следующим образом:
1 2 1997
Опишем запись для хранения даты таким образом:
Type year=1500..2000;
month=1..12;
day=1..31;
data=Record
у: year;
m: month;
d: day;
End;
Заметим, что:
Если дата соответствует не последнему дню месяца, то год и месяц не изменяются, а число увеличивается на 1.
Если дата соответствует последнему дню месяца, то:
а) если месяц не декабрь, то год не изменяется, месяц увеличивается на 1, а число устанавливается в 1;
б) если месяц − декабрь, то год увеличивается на 1, а месяц и число устанавливаются в 1.
Program Example_145;
Type year=1500..2000;
month=1..12;
day=1..31;
data=Record у: year;
m: month;
d: day;
End;
Var dat, next: data;
{dat - переменная для сегодняшней даты
next - переменная для определения даты
завтрашнего дня}
Function Leap(yy: year ): Boolean;
{функция, определяющая, високосный год
или нет}
Begin
{год называется високосным, если его номер делится на 4, но если это год столетия, то номер столетия високосного года не делится на 4, то есть не номер года делится на 400}
Leap:=(yy Mod 4=0) And (yy Mod 400<>0);
End;
Function Dmonth (mm: month; yy: year): day;
{функция определения количества дней
данного месяца в данном году}
Begin
Case mm Of
1, 3, 5, 7, 8, 10, 12: Dmonth:=31;
4, 6, 9, 11: Dmonth:=30;
2: If Leap (yy) Then Dmonth:=29
Else Dmonth:=28;
End;
End;
Procedure Tomorrow(td: data; Var nd: data);
{процедура определения завтрашней даты}
Begin {если это не последний день месяца}
If td.d<>Dmonth(td.m, td.у) Then
With nd Do
Begin d:=td.d+1;
m:=td.m;
y:=td.y;
End
Else {если это последний день месяца}
If td.m=12 Then {если это декабрь}
With nd Do
Begin
d:=1;
m:=1;
y:=td.y+1;
End
Else {если это не декабрь}
With nd Do
Begin
d:=1;
m:=td.m+1;
y:=td.y;
End;
End;
begin
Writeln('Введите сегодняшнее число,
месяц и год ');
Readln(dat.d, dat.m, dat.y);
Tomorrow(dat, next);
Writeln('Завтра будет ');
Writeln(next.d, '.', next.m, '.',
next.y);
Readln;
End.