- •Программирование на языке паскаль Учебное пособие
- •1. Общая характеристика языков программирования
- •1.1. Языки программирования
- •1.2. Трансляторы
- •1.3. История создания языков
- •1.4. Базовые структуры языков программирования
- •Контрольные вопросы
- •2. Описание языка паскаль
- •2.1. Основные объекты языка
- •2.2. Структура Паскаль-программы
- •2.3. Типизация данных
- •2.4. Объявление данных
- •Контрольные вопросы
- •3. Простые операторы. Ввод/вывод данных
- •3.1. Оператор присваивания и выражения
- •3.2. Операторы вызова процедур. Ввод/вывод данных
- •3.2.1. Процедуры ввода read и readln
- •Общая форма записи оператора
- •3.2.2. Процедуры вывода write и writeln
- •Контрольные вопросы
- •Каково назначение процедуры writeln без параметров? Задания для самостоятельной работы
- •Варианты заданий
- •Дополнительные задания
- •4. Структурные операторы. Организация ветвлений и циклов
- •4.1. Составной и пустой операторы
- •4.2. Организация ветвлений. Операторы выбора
- •4.2.1. Оператор ветвления if
- •4.2.2. Оператор варианта case
- •Общая форма записи
- •Контрольные вопросы
- •Задания для самостоятельной работы
- •Варианты заданий
- •Дополнительные задания
- •4.3. Организация циклов. Операторы повторения
- •4.3.1. Оператор while
- •4.3.2. Оператор repeat
- •4.3.3. Оператор for
- •Контрольные вопросы
- •Задания для самостоятельной работы
- •Варианты заданий
- •5. Организация подпрограмм. Процедуры и функции
- •5.1. Процедуры и их типизация
- •5.1.1. Встроенные процедуры
- •5.1.2. Процедуры пользователя
- •5.1.3. Процедуры без параметров
- •5.1.4. Фактические и формальные параметры
- •5.1.5. Локальные и глобальные переменные
- •5.1.6. Процедуры с параметрами-значениями
- •5.1.7. Процедуры с параметрами-переменными
- •5.1.8. Комбинированные процедуры
- •5.2. Функции пользователя. Рекурсивные функции
- •5.2.1. Определение функции
- •О бщая форма записи заголовка функции
- •5.2.2. Функции пользователя
- •5.2.3. Рекурсивные функции
- •Контрольные вопросы
- •Задания для самостоятельной работы
- •Варианты заданий
- •Дополнительные задания
- •6. Массивы. Данные типа array
- •Одномерные массивы
- •Общая форма записи
- •Общая форма записи
- •6.2. Многомерные массивы
- •6.3. Способы работы с массивами
- •Контрольные вопросы
- •Задания для самостоятельной работы
- •Варианты заданий
- •Дополнительные задания
- •Обработка литерных величин. Данные типа char и string
- •7.1. Тип данных char
- •Работа программы
- •7.2. Массивы литер
- •7.3. Тип данных string
- •7.4. Строковые функции и процедуры
- •Контрольные вопросы
- •Задания для самостоятельной работы
- •Варианты заданий
- •Дополнительные задания
- •8. Множества. Данные типа set
- •О бщий вид регулярного типа
- •8.1. Определение типа set
- •8.2. Операции над множествами
- •8.2.1. Принадлежность множеству
- •8.2.2. Сравнение множеств
- •8.2.3. Действия над множествами
- •8.3. Вывод множеств
- •Контрольные вопросы
- •Задания для самостоятельной работы
- •Варианты заданий
- •9. Комбинированный тип. Данные типа record
- •9.1. Оператор типа record
- •9.2. Оператор with
- •9.3. Записи с вариантами
- •Контрольные вопросы
- •Задания для самостоятельной работы
- •Варианты заданий
- •10. Файловый тип
- •10.1. Определение и описание типизированного файла
- •Общая форма записи
- •10.2. Типы файлов. Процедура работы с файлами
- •10.3. Основные приемы работы с файлами
- •10.4. Текстовые файлы
- •Контрольные вопросы
- •Задания для самостоятельной работы
- •Типизированные файлы
- •Текстовые файлы
- •Программирование графики
- •Основные понятия компьютерной графики
- •Формирование изображения на экране
- •Инициализация графического режима
- •Простейшие графические операторы (процедуры)
- •Основные приемы работы с графикой
- •Работа с цветом
- •Заполнение (закрашивание) произвольной замкнутой фигуры
- •Построение простейших геометрических фигур
- •Контрольные вопросы
- •Задания для самостоятельной работы
- •Варианты заданий
- •Библиографический список
Контрольные вопросы
Как называются элементы, входящие в запись?
Почему тип RECORD называют комбинированным типом данных?
Почему две записи в одной программе могут иметь поля с одинаковыми именами?
Пусть задано:
type DATE = record
DAY : 1..31;
MONTH : (JAN, FEB, MAR, APR, MAY, JUN, JUL,
AUG, SEP, OCT, NOV, DEC);
YEAR : integer;
end;
var BD: ARRAY [1..10] of DATE, HB:DATE.
Что означают BD[3].DAY, BD[5].YEAR, HB.MONTH ?
Каково назначение оператора WITH?
Могут ли поля записи быть, в свою очередь, записями?
С помощью какого оператора образуются записи с вариантами?
Сколько вариативных полей может иметь запись с вариантами?
Как принято задавать значения вариативных полей?
Задания для самостоятельной работы
Пример. Для каждого из учеников класса имеются оценки по 5 предметам. Требуется вычислить среднюю оценку каждого ученика и выбрать того, кто имеет максимальный средний балл.
Решение. Следует сформировать (объявить) массив из записей, содержащей поля: фамилия, оценки и средний бал. Затем надо заполнить его фамилиями учащихся и их оценками. Затем вычислить средний бал каждого и выбрать из них максимальное значение.
Type uchenik = record
Fam : string[15];
b1, b2, b3, b4, b5 : 2..5;
sb : real;
end;
const n = 25;
var class: array [1..n] of uchenik; {Объявление массива учеников}
p: uchenik; i, k: integer; sbmax : real;
begin
for i:= 1 to n do {ввод исходных данных, заполнение массива записей}
with class[i] do
begin
writeln (‘Ведите фамилию и пять оценок’);
readln (fam, b1, b2, b3, b4, b5);
end;
{вычисление среднего балла каждого ученика}
For i := 1 to n do
with class[i] do sb := (b1+b2+b3+b4+b5) / 5;
{Поиск максимального среднего балла и номера ученика}
sbmax := 0;
for i := 1 to n do
if class [i].sb >= sbmax then
begin sbmax := class[i].sb; k := i end;
{Вывод фамилии лучшего ученика (при условии, что лучший балл – один) и его среднего балла}
Writeln ( class [k].fam: 20, class[k].sb:6:3);
Readln
End.
Замечание. В случае, если в классе имеется несколько учеников с максимальным числом среднего балла, то тогда вместо цикла
for i := 1 to n do
if class [i].sb >= sbmax then begin sbmax := class [i].sb; k := i end;
Writeln ( class [k].fam: 20, class[k].sb:6:3);
Следует написать:
for i := 1 to n do
if class [i].sb >= sbmax then sbmax := class[i].sb;
for i := 1 to n do
if class [i].sb >= sbmax then
with class [i].sb do writeln ( fam: 20, ‘ – ‘, sb:6:3);
Варианты заданий
Задание. Опишите заданный тип, осуществите ввод данных, произведите определенные операции и выведите на печать значение полей (где возможно). Во всех случаях используйте массив из записей.
Данные о товаре на складе: наименование товара, сорт, стоимость, наличие, количество. Рассчитайте суммарную стоимость всего имеющегося в наличии товара.
Данные о книге: автор, название, издательство, количество страниц, цена, тираж. Рассчитать стоимость одной страницы книги и стоимость всего тиража.
Данные о поезде: тип (скорый, пассажирский), номер, количество вагонов (купейных, плацкартных, общих), стоимость билета (в купейном, плацкартном, общем). Рассчитать выручку одного рейса.
Данные о государстве: название, площадь, численность населения, столица, число жителей в столице, наличие морской границы. Рассчитать плотность населения и отношение числа жителей в столице к общей численности населения.