
- •Основы программирования на языке паскаль
- •1. Простейшие программы Структура Паскаль-программы
- •Данные и тип данных
- •Стандартные функции
- •Выражения
- •Организация простейших программ
- •Модуль crt
- •Задания для самостоятельной работы
- •2. Ветвления
- •Задания для самостоятельной работы
- •3. Циклы
- •Оператор цикла с постусловием используется, когда известно условие, при котором цикл будет прекращать свою. Формат оператора:
- •Задания для самостоятельной работы
- •4. Массивы
- •Сортировка
- •Задания для самостоятельной работы
- •5. Строки
- •Задания для самостоятельной работы
- •6. Процедуры и функции
- •Параметры
- •Локальные и глобальные переменные
- •Функции
- •Задания для самостоятельной работы
- •7. Записи
- •Задания для самостоятельной работы
- •8. Множества
- •Операции над множествами
- •Задания для самостоятельной работы
- •9. Файлы
- •Стандартные процедуры и функции для работы с файлами всех типов
- •Стандартные процедуры и функции для работы с типизированными файлами
- •Задания для самостоятельной работы
- •10. Модуль graph
- •Процедуры и функции модуля graph
- •Задания для самостоятельной работы
- •11. Модули, определяемые пользователем
- •Задания для самостоятельной работы
- •12. Линейные однонаправленные списки Указатели
- •Линейные однонаправленные списки
- •Задания для самостоятельной работы
- •13. Двунаправленные списки.
- •Задания для самостоятельной работы
- •14. Кольцевые списки
- •Задания для самостоятельной работы
- •15. Стеки и очереди
- •Задания для самостоятельной работы
- •16. Деревья
- •Задания для самостоятельной работы
- •Простейшие программы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
- •Бадмаева Энгельсина Сергеевна, Тонхоноева Антонида Антоновна
- •670000, Г. Улан-Удэ, ул. Смолина, 24-а.
7. Записи
Запись – конечная совокупность элементов различного типа. Компоненты записи называются полями.
Описание типа запись имеет следующий вид:
Record <список идентификаторов полей с указанием их типов> end .
Описание полей в списке аналогично описанию переменных в программе. Допускается вложенность записей, т.е. поля записи сами могут быть записями.
Между однотипными записями в целом разрешена только одна операция присваивания. С полями записи допустимы все операции, которые возможны для данного типа поля. Для доступа к полям используется частичная переменная: <имя записи>.<имя поля>. Без имени записи обращаться к ее полям не разрешается.
Для работы с записями удобно применять оператор присоединения:
With <список переменных типа запись> Do <оператор, содержащий имена полей> .
Пример 12. Найти сумму и произведение двух комплексных чисел.
Program Example_12;
Type Complex = Record
Re, Im: Real
End;
Var C1, C2, Sum, Pr : Complex;
{***процедура ввода комплексного числа***}
Procedure Input_Complex ( Number : Byte; Var C: Complex);
Begin
Writeln (‘Введи ’, Number, ' число:’);
Write (‘Введи действительную часть:’); Readln (C.Re);
Write (‘Введи мнимую часть:’); Readln (C.Im);
End;
{***процедура печати комплексного числа***}
Procedure Print_Complex ( S : String; C: Complex);
Begin
Writeln (S, ‘=’, C.Re ,’ + i *’, C.Im)
End;
{***процедура нахождения суммы и произведения комплексных чисел***}
Procedure Calc (C1, C2 : Complex; Var Sum, Pr : Complex);
Begin
Sum.Re:=C1.Re + C2.Re; Sum.Im:=C1.Im + C2.Im;
Pr.Re:=C1.Re*C2.Re – C1.Im*C2.Im;
Pr.Im:=C1.Re*C2.Im + C1.Im*C2.Re
End;
{***начало программы***}
Begin
Input (1, C1); Input (2, C2);
Calc (C1, C2, Sum, Pr);
Print (‘Число C1’, C1); Print (‘Число C2’, C2);
Print (‘C1+C2’, Sum); Print (‘C1*C2’, Pr)
End.
Пример 13. Даны сведения о сдаче сессии студентами группы: фамилия и инициалы, оценки по четырем экзаменам. Составить список студентов – отличников и хорошистов, а также подсчитать их количество.
Program Example_13;
Const N=20;
Type
Student = Record
FIO : String [20];
Balls : Array [1..4] of 2..5
End;
Group = Array [1..N] of Student;
Var G : Group; i, j, K, Kol, Sum: Byte;
Begin
Writeln (‘Введите сведения о группе:’);
For i:=1 to N do
Begin
Writeln (‘Введи данные о ’,i,’ студенте:’);
With G[i] do
Begin
Write (‘Фамилия и инициалы:’); Readln (FIO);
Write (‘Оценки по четырем предметам (через пробел):’);
For j:=1 to 4 do Read (Balls[j])
End
End;
Kol:=0;
Writeln (‘Отличники и хорошисты’);
For i:=1 to N do
Begin
K:=0; S:=0;
With G[i] do
For j:=1 to 4 do
If Balls[j]>3 Then Begin Inc(K); S:=S + Balls[j] End;
If K=4 Then
Begin
Inc(Kol); Write(Kol,‘.’, FIO);
If S=20 Then Write (‘-отличник’);
Writeln
End
End;
Writeln (‘Всего ’,Kol, ‘ человек’)
End.
Задания для самостоятельной работы
ЗАДАНИЕ 1. Составить программы для решения следующих задач:
Варианты задания 1.
Type dec=record x,y:real end;
pol=record r,fi:real end;
{r 0, - fi }
Описать процедуру DP(d,p), преобразующую координаты точки на плоскости из декартовых d в полярные p.
Type dec=record x,y:real end;
pol=record r,fi:real end;
{r 0, - fi }
Описать процедуру РD(р,d), преобразующую координаты точки на плоскости из полярных р в декартовые d.
Type time=record ch : 0..23; min, sec : 0..59 end;
Описать логическую функцию RAN(t1,t2) для проверки, предшествует ли время t1 времени t2 (в рамках суток).
Type time=record ch : 0..23; min, sec : 0..59 end;
Описать процедуру NEXT(t,t1), присваивающую параметру t1 время, на секунду большее времени t (учесть время суток).
Type time=record ch : 0..23; min, sec : 0..59 end;
Описать процедуру INTERVAL(d,t2,t1), которая вычисляет время d, прошедшее от времени t1 до времени t2: d=t2-t1 (считать, что t2 t1).
Type pole=record vert : ‘a’..‘h’; gor : 1..8 end;
Описать логическую функцию HOD_FERZ(n1,n2), проверяющую, может ли ферзь за один ход перейти с поля n1 шахматной доски на поле n2.
Type name=(alex, ann, jon, lena, peter, tom, fil, vica);
persona=record pol : (m,g); rost: 140..200 end;
gruppa=array[name] of persona;
Описать логическую функцию ODIN_ROST(gr), проверяющую, есть ли в группе gr хотя бы два человека одного роста.
Type name=(alex, ann, jon, lena, peter, tom, fil, vica);
persona=record pol : (m,g); rost: 140..200 end;
gruppa=array[name] of persona;
Описать функцию HIGH(gr), определяющую имя самого высокого мужчины из группы gr.
Const N=30;
Type persona=record pol : (m,g); rost: 140..200 end;
gruppa=array[1..N] of persona;
Описать функцию SR_ROST(gr), которая определяет средний рост женщин из группы gr.
Const N=30;
Type vershina=record name : string[15]; vysota: 4000..8000 end;
spisok=array[1..N] of vershina;
Описать процедуру HIGHEST(sp), печатающую название самой высокой вершины из списка sp.
Const N=28;
Type kost=record lev, pr : 0..6 end;
ryad=array[1..N] of kost;
Описать логическую функцию PRAV_RYAD(r), которая проверяет, правильно ли расставлены кости домино в ряду r (равна ли правая цифра очередной кости левой цифре следующей кости).
Const N=20;
Type rac=record chisl : integer; znam : 1..32767 end;
mas=array[1..N] of rac;
Описать процедуру MAX(ms, m), присваивающую параметру m наибольшее из рациональных чисел массива ms.
Type data=record month : 1..12; god : 1900..2000 end;
Описать функцию LAST_CHISLO(day), вычисляющую количество дней в том месяце, которому принадлежит дата day.
Type data=record chislo : 1..31; month : 1..12; god : 1900..2000 end;
Описать логическую функцию VERN_DATA(day), проверяющую правильность даты day (например, чтобы не было 31 июня).
Type rac=record chisl : integer; znam : 1..32767 end;
Описать процедуру SOKR(r), приводящую рациональное число r к несократимому виду.
ЗАДАНИЕ 2. Составить программы для решения следующих задач:
Варианты задания 2.
1. Даны сведения о багаже пассажиров: фамилия пассажира, количество вещей и вес в килограммах.
а) Выдать на экран сведения о пассажирах с наибольшим количеством вещей.
б) Упорядочить все сведения о пассажирах, фамилия которых начинается с заданной буквы, в порядке убывания веса багажа.
2. Даны сведения о багаже пассажиров: фамилия пассажира, количество вещей и вес в килограммах.
а) Найти всех пассажиров, у которых средний вес одной вещи отличается не более, чем на 0,5 кг от общего среднего веса одной вещи.
б) Упорядочить все сведения о пассажирах, вес багажа которых более 30 кг, в порядке возрастания количеств вещей в багаже.
3. Даны сведения о книгах в библиотеке: фамилия автора, название книги и год издания.
а) Напечатать год издания и названия книг данного автора, год издания которых оканчивается на цифру “7”.
б) Упорядочить все сведения о книгах, изданных до 1930 года, в алфавитном порядке фамилий авторов.
4. Даны сведения о книгах в библиотеке: фамилия автора, название книги и год издания.
а) Выдать на экран сведения о книгах, в названии которых более двух слов.
б) Упорядочить все сведения о книгах с заданной фамилией автора в порядке возрастания годов изданий его книг.
5. Даны сведения о книгах в библиотеке: фамилия автора, название книги и год издания.
а) Найти самую старую книгу в библиотеке и выдать все сведения о ней. Если таких книг несколько, то сообщить обо всех.
б) Упорядочить все сведения о книгах, изданных в 1998 году, в алфавитном порядке названий.
6. Даны сведения о сотрудниках учреждения: фамилия, инициалы, номер телефона (если телефона нет, то 0).
а) Выдать на экран сведения о сотрудниках, номер телефона которых заканчивается на “10”, и подсчитать их количество.
б) Упорядочить все сведения о сотрудниках в алфавитном порядке фамилий.
7. Даны сведения о сотрудниках учреждения: фамилия, инициалы, номер телефона (если телефона нет, то 0).
а) Напечатать данные о сотрудниках, фамилия которых содержит две буквы “о”.
б) Упорядочить сведения о сотрудниках, фамилия которых начинается с заданной буквы, в порядке возрастания номеров телефонов.
8. Даны сведения об экспортируемых товарах: наименование товара, страна, импортирующая товар, и объем поставляемой партии в штуках.
а) Определить товары, которые экспортируются более чем из одной страны, и выдать все сведения о таких товарах.
б) Упорядочить все сведения о товаре с заданным наименованием в алфавитном порядке стран-экспортеров.
9. Даны сведения об импортируемых товарах: наименование товара, страна-изготовитель и объем поставляемой партии в штуках.
а) Составить список стран, которые импортируют данный товар, и подсчитать общий объем его импорта.
б) Упорядочить все сведения о товарах, объем импорта которых более 1000 штук, в алфавитном порядке наименования товаров.
10. Даны сведения об импортируемых товарах: наименование товара, страна-изготовитель и объем поставляемой партии в штуках.
а) Выдать на экран список стран, которые импортируют наиболее распространенный товар.
б) Упорядочить все сведения о товарах из страны с заданным названием в алфавитном порядке наименования товаров.
11. Даны сведения о результатах соревнования по бегу на 100 метров: фамилия и имя спортсмена, спортивное общество, результат в секундах.
а) Выдать все сведения о спортсмене по фамилии “Петров”. Если таких несколько, то выдать данные о спортсмене, показавшем лучший результат.
б) Упорядочить все сведения о спортсменах общества с заданным названием в алфавитном порядке фамилий.
12. Даны сведения об игрушках: название игрушки, стоимость и возрастные границы (например, от 4 до 6 лет).
а) Можно ли подобрать любую игрушку, кроме мяча, подходящую ребенку трех лет, и дополнительно мяч так, чтобы суммарная стоимость игрушек не превосходила 50 рублей.
б) Упорядочить все сведения о куклах по возрастанию их стоимости.
13. Даны сведения о владельцах автомобилей: фамилия, инициалы владельца, марка машины, номер, цвет.
а) Выдать все сведения о владельцах красных “Жигулей”, номер машин которых содержит “1”.
б) Упорядочить все сведения о владельцах, фамилия которых начинаются с заданной буквы, по возрастанию номеров машин.
14. Даны сведения о владельцах автомобилей: фамилия, инициалы владельца, марка машины, номер, цвет.
а) Выдать все сведения о владельцах самой распространенной марки автомобиля.
б) Упорядочить все сведения о владельцах белых машин в алфавитном порядке марки машин.
15. Даны сведения о владельцах автомобилей: фамилия, инициалы владельца, марка машины, номер, цвет.
а) Напечатать все сведения о машинах, сумма цифр номера которых равна 10, а также подсчитать их количество.
б) Упорядочить все сведения о владельцах “Волги” в алфавитном порядке фамилий владельцев.