
- •1) Данные: понятие и типы. Основные базовые и структурированные типы данных, их характеристика.
- •2) Лексика языка(алфавит, словарь). Переменные и константы.
- •3) Оператор. Отличие простого оператора от структурного.
- •5) Методы программирования: структурный, модульный, объектно-ориентированный. Достоинства и недостатки методов программирования.
- •6) Выражения и операции
- •Var «раздел переменных»
- •7) Условный оператор if
- •13. Строки. Операции над строковыми переменными.
- •19)Внешние файлы.
- •21)Комбинированный тип данных.
- •Var Student: Anketa1;
- •Var Student: Anketa2;
21)Комбинированный тип данных.
Комбинированный тип данных — это структурированный тип, состоящий из фиксированного числа компонент (полей) разного типа. Комбинированный тип имеет еще и другое название — запись.
Обычно запись содержит совокупность разнотипных атрибутов, относящихся к одному объекту. Например, анкетные сведения о студенте вуза могут быть представлены в виде информационной структуры (рис. 35).
Такая структура называется двухуровневым деревом. В Паскале эта информация может храниться в одной переменной типа Record (запись). Задать тип и описать соответствующую переменную можно следующим образом:
Type Anketa1=Record
FIO: String[50]; {поля}
Pol: Char;
Dat: String[16]; {записи}
Adres: String[50];
Curs: 1..5; (или элементы)
Grup: 1..10;
Stip: Real {записи}
End;
Var Student: Anketa1;
Такая запись, так же как и соответствующее ей дерево, называется двухуровневой.
К каждому элементу записи можно обратиться, используя составное имя, которое имеет следующую структуру:
<имя переменной>.<имя поля>
Например, student. fio; student. dat и т.п. Если, например, требуется полю курс присвоить значение 3, то это делается так:
Student.Curs:=3 ;
Поля записи могут иметь любой тип, в частности сами могут быть записями. Такая возможность используется в том случае, когда требуется представить многоуровневое дерево (более 2 уровней). Например, те же сведения о студентах можно отобразить трехуровневым деревом (рис.36).
Такая организация данных позволит, например, делать выборки информации по году рождения или по городу, где живут студенты. В этом случае описание соответствующей записи будет выглядеть так:
Type Anketa2=Record
FIO: String[50];
Pol: Char;
Dat: Record
God: Integer;
Mes: String[10];
Den: 1..31
End;
Adres: Record
Gorod: String[20];
UlDomKv: String[30];
End;
Curs: 1..5 ;
Grup: 1..10;
Stip: Real
End;
Var Student: Anketa2;
Поля такой записи, находящиеся на третьем уровне, идентифицируются тройным составным именем.
Например, student.Dat.God; student.Adres.Gorod.
Приведем структурограмму задания комбинированного типа (рис.37).
В программе могут использоваться массивы записей. Если на факультете 500 студентов, то все анкетные данные о них можно представить в массиве: Var Student: Array[1..500] Of Anketal;
В таком случае, например, год рождения пятого в списке студента хранится в переменной student[5].Dat.God.
Любая обработка записей, в том числе ввод и вывод, производится поэлементно. Например, ввод сведений о 500 студентах можно организовать следующим образом:
For I:=1 То 500 Do
With Student[I] Do
Begin
Write('Ф.И.0.:'); ReadLn(FIO);
Write('Пол (м/ж):'); ReadLn(Pol);
Write('Дата рождения:'); ReadLn(Dat);
Write('Адрес:'); ReadLn(Adres);
Write('Курс:'); ReadLn(Curs);
Write('Группа:'); ReadLn(Grup) ;
Write('Стипендия (руб.):'); ReadLn(Stip)
End;
В этом примере использован оператор присоединения, который имеет следующий вид:
With <переменная типа запись> Do <оператор>;
Он позволяет, один раз указав имя переменной типа запись после слова With, работать в пределах оператора с именами полей как с обычными переменными, т. е. не писать громоздких составных имен.
22)Работа с файлами записей.
Чаще всего записи используются как элементы файлов, составляющих компьютерные информационные системы. Рассмотрим примеры программ, работающих с файлами записей.
Пример 1. Сформировать файл FM.dat, содержащий экзаменационную ведомость одной студенческой группы. Записи файла состоят из следующих элементов: фамилия, имя, отчество; номер зачетной книжки; оценка.
Program Examen;
Type Stud=Record
FIO: String[30];
Nz: String[6];
Mark: 2..5
End;
Var Fstud: File Of Stud;
S: Stud;
N,I: Byte;
Begin
Assign(Fstud,'FM.DAT'); Rewrite(Fstud);
Write('Количество студентов в группе?');
ReadLn(N);
For I:=1 To N Do
Begin
Write(I:1,'-й,Фамилия И.О.'); ReadLn(S.FIO);
Write('Номер зачетки:'); ReadLn(S.Nz);
Write('Оценка:'); ReadLn(S.Mark);
Write(Fstud,S)
End;
WriteLn('Формирование файла закончено!');
Close(Fstud)
End.
Установка указателя на нужный элемент файла производится процедурой
Seek(FV,n)
Имеется файл, сформированный программой из предыдущего примера. Пусть некоторые студенты пересдали экзамен и получили новые оценки. Составить программу внесения результатов переэкзаменовки в файл. Программа будет запрашивать номер студента в ведомости и его новую оценку. Работа заканчивается, если вводится несуществующий номер (9999).
Program New_Marks;
Type Stud=Record
FIO: String[30];
Nz: String[6] ;
Mark: 2..5
End;
Var Fstud: File Of Stud;
S: Stud;
N: Integer;
Begin
Assign(Fstud,'FM.DAT');
Reset(Fstud) ;
Write('Номер в ведомости?');
ReadLn(N);
While N<>9999 Do
Begin
Seek(Fstud,N-l);
Read(Fstud,S);
Write(S.FIO,'оценка?');
ReadLn(S.Mark);
Seek(Fstud,N-l);
Write(Fstud,S);
Write('Номер в ведомости?');
ReadLn(N);
End;
WriteLn('Работа закончена!');
Close(Fstud)
End.
23) Подпрограммы. Назначения подпрограмм.
Это средства, позволяющие использовать многократно в разных местах, основой программы один раз описанный формой алгоритма
Объявление (типы, переменные, константы) использующие любой подпрограммой, относятся к одной из 2 категорий
Локальные объявления принадлежат подпрограмме, описание внутри нее и могут использоваться только ею.
Глобальные объявления принадлежат программе в целом и доступны как самой программе, так и всем ее подпрограммам
Если имя глобального объявления совпадают с именем локального, то внутри подпрограммы обычно объявление интегрируется как локальное, и все изменения, вносимые, напрямую в знаечние такой переменной актуальны в рамках подпрограммы
Обычно, функция используется в том случае, если результатом подпрограммы должна быть скалярная (простая) величина. Тип результата называется типом функции.
Синтаксис описания функции
Function < имя функции>/<список формальных параметров>/:<тип функции>;
Как и у процедуры, у функции могут присутствовать параметры – переменные и параметры – значения. Все они являются аргументами функции. Если аргументы передаются глобально, то параметры функции могут отсутствовать.
24) Процедуры, отличие процедуры от функции
Из любой функции можно сделать процедуру. Функция отличается тем, что ее имени можно присвоить изнутри функции значение и использовать это имя как обычную переменную с параметрами в скобках, а процедуру нужно вызывать отдельным оператором. Вот и все. Любую задачу можно решить с использованием функций, или процедур, или без того и другого. Это просто удобный способ оформления частей программы, делающий программу более понятной.
25) Функции, отличие функции от процедуры
Функция – это подпрограмма, которую вызывают, чтобы выполнить какие-то расчеты или проверки. Когда она завершает работу, то возвращает управление вызывающей программе и передает ей результат расчета.
Функция, как и процедура, может иметь список параметров, следующих за именем функции в круглых скобках. Но если имя процедуры используется только для ее вызова, то с именем функции связывается ее значение.
Разница между процедурами и функциями именно в том что функция может возвращать результ а процедура нет, чтобы получать из процедуры какой либо результ можно в нее подставить параметр-переменную : var i:integer Разница между параметром-переменной и параметром-константой (s:string) есть в том что изменения параметр-переменной после окончания работы с процедурой сохраняются в ту переменную которую подставили : q(as,ii); вот в данном случае ii - параметр-переменная, обязательно должна быть обьявленна, и расчеты с этим параметром обязательно возвращаются в эту переменную. т.е. нельзя обьявить
Из любой функции можно сделать процедуру. Функция отличается тем, что ее имени можно присвоить изнутри функции значение и использовать это имя как обычную переменную с параметрами в скобках, а процедуру нужно вызывать отдельным оператором.