ЛК_1.ppt
- Количество слайдов: 44
СТРУКТУРНОЕ ПРОГРАММИРОВАНИЕ
Задача 3. 10 (вариант 1) 1. Создать исходный типизированный файл (ФИО, год рождения, пол, оценки по физике, математике, информатике, стипендия) 2. Вывести ФИО всех студентов мужского пола, 18 лет.
ФАЙЛ – именной набор данных, хранящийся во внешней памяти. ТИПЫ ФАЙЛОВ var f 1: file of char; {типизированный} f 2: text; {текстовый} f 3: file; {нетипизированный}
Процедуры и функции для работы с файлами 1. assign(<файловая переменная>, <имя файла>) {процедура связывает имя файловой переменной с именем конкретного файла} assign(f, ’D: gr. doc’); Имя файла задаётся в виде строковой константы (в апострофах).
Инициализация файла Инициализировать файл – указать направление передачи данных. 2. reset (<файловая переменная>) {открытие файла для чтения} 3. rewrite (<файловая переменная>) {открытие файла для записи}
4. close(<файловая переменная>) {закрытие файлa} ФУНКЦИЯ 5. eof(<файловая переменная>): boolean {эта функция даёт результат логического типа: true - если достигнут конец файла}
а) создание типизированного файла type st = record {запись, состоящая из полей} fio: string [ ]; gr: ; {тип записи sex: char ; об одном f, m, i : integer; студенте} stip: end ; var s : st; {перем. , содержащая сведения о студенте} f : file of st; { файл. перем. , содерж. св-ия о студ-тах} C : char; begin
assign ( f, ‘ E: student IDB-12 -02 AAR ……. . ‘ );
rewrite (f); {……. }
C: =‘y‘; while c = ‘ y ’ do begin write ( ‘ введите ФИО ’) ; readln (s. fio); : { добавить 10 строк } : write ( ‘ введите размер стипендии ’) ; readln (s. stip);
write ( f, s) ; {запись в файл сведений о студенте}
write ( ‘ продолжить ? (Y/N) ’); readln ( c ); end; close ( f ) end.
Б) решение задачи type st = record fio : string [30]; : : end; var s: st; f: file of st ; КРОМЕ C: CHAR; begin
assign (f, ‘ e: . . . ’);
reset ( f ); { открытие файла для чтения}
writeln (‘ Список студентов ’);
while not eof ( f ) do begin read ( f, s) ; { чтение записи} if ( s. sex = ‘m’ ) and (s. gr < 1995) then writeln (s. fio) end;
3) Решение с текстовым файлом
Пример Соломкина Наталья Михайловна 1995 g 5 5 5 10000 Степаненко Артем Александрович 1994
program text_2; var fio: string [ 30 ]; gr: integer; sex: char; f, m, i, stip : integer; s: text; { файл текстовый } begin
assign ( s, ‘ ………. . ’ ) ;
Reset (s);
writeln (‘ Список студентов ’);
while not eof ( s ) do
begin readln ( s, fio); readln ( s, gr); readln ( s, sex); readln ( s, f); readln ( s, m); readln ( s, i); readln ( s, stip);
if ( sex = ‘m’) and ( gr < 1995) then writeln (fio); end; close ( s ) end.
Программирование с использованием подпрограмм
Основные понятия • Подпрограмма – это программа, которую можно вызвать по имени, передать ей исходные данные в виде значений входных параметров и получить результаты в виде значений выходных параметров.
Структура подпрограммы Имя подпрограммы Список формальных параметров Блок подпрограммы имя (процедурный блок)
• Подпрограмма состоит из заголовка и блока. • В заголовке указывается тип подпрограммы, имя подпрограммы и список формальных параметров. • В списке формальных параметров для каждого параметра указывается: имя параметра, его тип и способ передачи. • Процедурный блок – это программа, которая может иметь свои локальные переменные. • В теле этой программы наряду с локальными переменными используются формальные параметры.
• Алгоритм этой программы описывает процесс преобразования входных параметров в результаты, представленных выходными параметрами. • В Паскале подпрограммы бывают двух типов: FUNCTION (функции) и PROCEDURE (процедуры). • Процедуры и функции описываются в разделе процедур, то есть перед разделом операторов паскаль-программы.
Функции FUNCTION • Описание функции состоит из заголовка и блока. • Заголовок FUNCTION <имя функции>(< список формальных параметров >): < тип результата >; В этом заголовке текст в угловых скобках, включая скобки, заменяется на соответствующие конструкции Паскаля.
• Функция имеет один основной результат, который присваивается имени функции. Тип результата указывается в конце заголовка функции в виде имени типа (стандартного или определённого ранее в программе). • Список формальных параметров состоит из перечисленных через точку с запятой элементов следующего вида: <имя переменной> : <имя типа>, если несколько переменных имеют одинаковый тип, их можно перечислить через запятую, указав затем общий тип.
• Пример заголовка функции: FUNCTION F(x, y : real; i: integer): real; • Блок имеет структуру обычной программы: <разделы описаний>; begin <операторы> end;
Пример описания функции Рассмотрим функцию подсчёта факториала числа N. N! = 1*2*3*…*N FUNCTION fact (n : integer): integer; var i, k : integer; begin k: =1; for i: =1 to n do k: =k*i; fact : = k; end;
Вызов функции представляет из себя указатель функции, то есть имя функции и в скобках список фактических параметров. При вызове функции фактические параметры должны соответствовать формальным параметрам: • по типу, • по количеству, • по порядку.
Таким образом, функция пишется относительно формальных параметров, для которых указываются типы, а выполняется для фактических параметров, которые подставляются на место формальных при вызове функции. Пример. Подсчитать число сочетаний из m по n.
PROGRAM C; var m, n, Cmn : integer; {описание функции} FUNCTION fact (n : integer): integer; {описание локальных переменных функции} var i, k : integer; {раздел операторов функции} begin k: =1; for i: =1 to n do k: =k*i; fact : = k; end; {конец разделов описаний программы}
{раздел операторов основной программы} begin writeln(‘введите значения m, n’); readln(m, n); if m>n then begin Cmn : = fact(m) div (fact(n)*fact(m-n)); writeln(‘Cmn = ‘, Cmn); end else writeln(‘некорректные данные ‘); End. В этом примере функция fact вызывается три раза в одном выражении. В этой программе буква n используется в двух смыслах: как формальный параметр функции и как переменная основной программы, которая затем подставляется как фактический параметр при вызове функции.
Обмен данными между вызывающей программой и подпрограммой осуществляется при помощи аппарата формальных – фактических параметров. При вызове подпрограммы, ей передаются фактические параметры, используя которые, она выполняется.
Существует два способа передачи данных: • по значению, • по наименованию (по ссылке). При передаче данных по значению в подпрограмму передаётся копия фактического параметра. Из этого следует, что, если подпрограмма изменит значение этого параметра, в вызывающей программе он останется неизменным.
При передаче данных по наименованию, в подпрограмму передаётся адрес фактического параметра, то есть подпрограмма «допускается» к памяти вызывающей программы (какая-то область памяти становится общей для них). В этом случае, если подпрограмма изменяет значение фактического параметра, эти изменения происходят и в вызывающей программе.
Для передачи данных в паскальпрограмме существуют: • параметры-значения, • параметры-переменные. Для указания способа передачи данных, в списке формальных параметров перед именем параметра-перемненной ставится служебное слово var, которое действует до следующей точки с запятой.
Пример. FUNCTION F(var i, k: integer; s: real; var t: real ): real; В этом примере i, k, t – параметры-переменные, s – параметр-значение.


