
- •§1. Первое знакомство с системой программирования Турбо Паскаль
- •§2. Основные элементы языка
- •§3. Команды редактора Команды управления движением курсора
- •§4. Первая программа
- •Пояснения к программе
- •Запуск программы
- •Сохранение программы
- •§5. Управление позициями и цветом вывода
- •§6. Арифметический квадрат. Абсолютная величина
- •§7. Типы данных
- •§8. Целый тип данных
- •Пример 6
- •Пример 7
- •Пример 8
- •§9. Вещественный тип данных
- •Пример 7
- •Пример 8
- •§10. Логический тип данных
- •§11. Условный оператор
- •Пример 1
- •Пример 2
- •Решение
- •§12. Оператор безусловного перехода. Раздел описания меток
- •§13. Вложенные условные операторы
- •Решение
- •Задание
- •Решение задач Задача 1
- •Задача 2
- •Задача 7
- •Задача 8
- •Задача 9
- •Задача 10
- •§14. Цикл с параметром
- •Пример 1
- •Решение:
- •Пример 2
- •Пример 3
- •§15. Работа с окнами. Метод пошагового выполнения программ
- •§16. Решение задач с использованием цикла с параметром Задача 1
- •Решение
- •Задача 2.
- •Фрагмент решения
- •Задача 8
- •Задача 9
- •Циклы с условиями
- •§17. Цикл с предусловием
- •Оператор цикла с предусловием
- •Пример 1
- •Решение
- •Пример 2
- •Решение
- •Пример 3
- •Решение
- •§18. Цикл с постусловием
- •Пример 1
- •Решение
- •Пример 2
- •§19. Алгоритм Евклида
- •Пример 1
- •Решение
- •Пример 2
- •Решение
- •§20. Вложенные циклы Пример 1
- •Решение
- •Пример 2
- •Решение
- •Пример 3
- •Решение
- •Пример 4
- •Решение
- •Пример 5
- •§21. Решение задач с использованием
- •§22. Символьный тип данных
- •Пример 1
- •Решение
- •Пример 2
- •Решение
- •§23. Ограниченный тип данных
- •Var b:3..8; а не просто Vаг b:Integer;
- •Решение
- •§24. Оператор варианта (выбора)
- •Пример 1
- •Решение
- •Пример 2
- •Решение
- •Пример 3
- •Решение
- •Пример 4
- •§25. Перечисляемый тип данных
- •§26. Описание переменных, констант и типов Раздел описания констант
- •Раздел описания типов
- •§27. Преобразование типов. Совместимость типов
- •Пример 1
- •Решение
- •Пример 2
- •Решение
- •Пример 3
- •Решение.
- •§28. Процедуры
- •Описание процедуры
- •Описательная часть
- •Пример 1
- •Решение
- •Begin {основная программа}
- •Пример 2
- •Решение
- •Пример 3
- •§29. Функции
- •Пример 1
- •Пример 2
- •Решение
- •Пример 3
- •Решение
- •§30. Примеры рекурсивного
- •Пример 3
- •Решение
- •Задачи, которые можно решить как частный случай обобщенной
- •Решение
- •Задание
- •Задачи, в которых можно использовать характеристику или свойство функции Пример
- •Решение
- •§31. Файловый тип данных Операции для работы с файлами последовательного доступа
- •§32. Обработка файлов Связь переменной файлового типа с файлом на диске
- •Чтение из файла
- •Закрытие файла
- •Признак конца файла
- •Запись в файл
- •§33. Прямой доступ к элементам файла
- •Пример 2
- •{Проверка на конец файла f1}
- •§34. Текстовые файлы
- •Обработка текстовых файлов
- •Пример 1
- •Решение
- •{Переходим к следующей строке файла}
- •Пример 2
- •Решение
- •Нетипизированные файлы
- •§35. Одномерные массивы.
- •Пример 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. Строковый тип данных Описание
- •Операции со строками
- •Склеивание
- •Сравнение
- •Примеры
- •Решение задач Пример 1
- •Решение
- •Пример 8
- •Пример 9
- •Пример 10
- •§51. Множественный тип данных
- •Операции над множествами
- •Примеры
- •Сравнение множеств
- •Пример 1
- •Пример 2
- •Вопросы для обсуждения
- •Пример 3
- •Вопросы для обсуждения
- •Пример 4
- •Решение
- •Пример 5
- •Решение
- •§52. Комбинированный тип данных (записи)
- •Пример 1
- •Пример 2
- •Пример 3
- •Решение
Пример 1
Известны фамилии и оценки (в баллах) по пяти дисциплинам каждого из двадцати пяти учеников класса. Требуется вычислить среднюю оценку каждого из учеников и выбрать человека, имеющего максимальный средний балл.
В данном случае фамилия может быть представлена символьной строкой, оценки − это целые числа, а средний балл должен быть представлен вещественным (действительным) числом. В Паскале для описания объектов, содержащих данные разных типов, используются записи.
Запись − это структурированный тип, описывающий набор данных разных типов. Составляющие запись объекты называются ее полями. Каждое поле имеет уникальное (в пределах записи) имя. Чтобы описать запись, необходимо указать ее имя, имена объектов, составляющих запись, и их типы. Общий вид описания записи следующий:
Type <имя записи>=Record
<поле 1>:<тип 1>;
<поле 2>:<тип 2>;
<поле n>:<тип n>
End;
Применительно к рассматриваемой задаче запись можно описать следующим образом:
Type
pupil=Record
fam: String[15];
{поле фамилии ученика}
b1, b2, b3, b4, b5: 2..5;
{поля баллов по дисциплинам}
sb: Real{поле среднего балла}
End;
Переменная типа pupil будет хранить структуру, содержащую информацию об одном ученике.
Чтобы хранить в памяти ЭВМ информацию обо всех 25 учениках класса, необходимо ввести массив klass, представляющий массив записей:
Var klass: Array[1..25] Of pupil;
Примечания
1. Имена полей, составляющих запись, не должны повторяться.
2. Каждое поле записи может иметь любой тип (кроме файлового), в частности, оно может быть снова записью.
Доступ к полям записи можно осуществить двумя способами:
С указанием имени переменной и имени поля. Например, klass[2].fam, klass[3].sb, klass[1].b4. Ввод фамилий и оценок учащихся, то есть элементов массива klass, можно записать так:
For i:=1 To 25 Do
Begin
Readln(klass[i].fam);
Readln(klass[i].b1);
Readln(klass[i].b2);
Readln(klass[i].b3);
Readln(klass[i].b4);
Readln(klass[i].b5);
End;
С использованием оператора присоединения. Имеется возможность осуществлять доступ к полям записи таким образом, как если бы они были простыми переменными. Общий вид оператора присоединения:
With <имя записи> Do <оператор>;
Внутри оператора присоединения к компонентам записи можно обращаться только с помощью имени соответствующего поля.
Пример 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.