Модули и Файлы
Федеральное Агентство Связи
Сибирский Государственный Университет Телекоммуникаций и Информатики
Кафедра Информатики
Курсовая работа на тему:
«Модули и
Файлы»
Выполнила:
Студентка 1 курса, ф. АЭС,
гр. А-94 Сбитнева Ольга.
Проверила:
Парначева Т.И.
Новосибирск
2010 г.
Содержание.
Введение…………………………………………………………
Часть 1. Модули в Турбо Паскале.
Теоретические сведения по теме «Модули»…………………………………………. 4
Алгоритм подпрограммы процедуры form (схема 1.)…………………………… 6
Алгоритм подпрограммы процедуры vivod (схема 2.)…………………………. 6
Алгоритм подпрограммы функции get_kol (схема 3.)…………………………… 7
Алгоритм подпрограммы процедуры umn (схема 4.)…………………………… 7
Алгоритм вызывающей
программы………………………………………………………
Программа создания
модуля………………………………………………………………
Вызывающая программа…………………………
Результаты выполнения
программы…………………………………………………….
Часть 2: «Файлы в Турбо Паскале»
Теоретические сведения по теме «Файлы»………………………………………….. 12
Схемы алгоритма………………………………………………………
Программа создания
файла…………………………………………………………………
Программа обработки
записи………………………………………………………………
Результаты выполнения
программы…………………………………………………….
Заключение……………………………………………………
Список использованной
литературы……………………………………………………
Введение.
Целью моей курсовой
работы является приобретение и закрепление
навыков в организации
Часть 1:
«Модули в Турбо
Паскале».
Стандартный Паскаль не предусматривает раздельной компиляции подпрограмм с дальнейшей сборкой в общую программу. В Турбо Паскале эту задачу можно решить, создав и откомпилировав модуль.
Модули бывают стандартные
и нестандартные (созданные пользователем).
Использование пользовательских модулей
позволяет повысить уровень структурированности
программы, что обеспечивает их понятность
и простоту модернизации.
Структура модуля:
Unit имя_модуля;
interface
…
раздел открытых описаний (раздел объявлений);
…
implementation
раздел закрытых описаний (раздел реализации);
begin
раздел операторов
end.
-В разделе объявлений
описываются глобальные
-В разделе реализации
записываются все подпрограммы,
объявленные ранее, причем
-В разделе операторов
помещаются те операторы,
Замечание: модуль сохраняется на диске под тем же именем, что и сам модуль. Модуль компилируется, но не выполняется.
Структура вызывающей программы:
uses имя модуля;
var
…
раздел описания программы
…
begin
раздел операторов программы
end.
Задание.
Разработать модуль (схемы алгоритмов и программы), содержащие процедуры и функции, решающие поставленную задачу:
Все элементы матрицы умножить на число, равное количеству нулей в правом верхнем треугольнике.
Проектирование модуля.
Процедура form.
Задание матрицы
размерностью [5*5] датчиком случайных
чисел.
Процедура vivod.
Вывод матрицы.
Функция get_kol.
Поиск количества нулей
в верхнем правом верхнем треугольнике.
Количеству kol присваиваю 0. Цикл по
строке от 1 до N и по столбцу от i до N. Проверяю
условие x [i, j]=0. Если верно, то переменной
kol присваиваю значение kol+1.
Процедура umn.
Каждый элемент матрицы умножаю на количество нулей, полученных в правом верхнем треугольнике. Таким образом, формируется новая матрица.
Схема 1. Алгоритм подпрограммы процедуры form.
Схема 2. Алгоритм подпрограммы
процедуры vivod.
0
Схема 3. Алгоритм подпрограммы
функции get_kol.
Схема 4. Алгоритм подпрограммы
процедуры umn.
Алгоритм вызывающей
программы.
Типы параметров в подпрограммах:
| идентификатор | назначение |
| N | Константа, задающая размер матрицы. |
| Х | Исходная матрица |
| Get_kol | Переменной присваивается значение функции get_kol |
| X1 | Полученная матрица |
Программа
создания модуля:
Unit mod_so;
INTERFACE
Uses crt;
const
N=5;
type
matr=array[1..N,1..N] of integer;
procedure form(var X:matr);
procedure vivod(X:matr);
function get_kol(X:matr):integer;
procedure umn(X:matr; var X1:matr);
IMPLEMENTATION
procedure form(var X:matr);
var
I, j: integer;
begin
for i:=1 to N do
for j:=1 to N do
X[i,j]:=random(11)-5;
end;
procedure vivod(X:matr);
var
i, j: integer;
begin
for i:=1 to N do
begin
for j:=1 to N do
write(X:[I, j]:4);
writeln;
end;
end;
function get_kol(X:matr):integer;
var
I, j, kol: integer;
begin
kol:=0;
for i:=1 to N do
for j:=i to N do
if X[i, j] = 0 then
kol:=kol+1;
get_kol:=kol;
end;
procedure umn(X:matr; var X1:matr);
var
i, j, kol: integer;
begin
for i:=1 to N do
for j:=1 to N do
X1[i, j]:= X[i, j];
kol:= get_kol(X1);
writeln(‘Количество нулей в верхнем правом треугольнике матрицы: ’, kol);
for i:=1 to N do
for j:=1 to N do
X1[i, j]:=X1[i, j]*kol;
end;
end.
Вызывающая
программа:
Begin clrscr;
randomize;
writeln(‘ Курсовую работу выполнила студентка А-94 Сбитнева О. В.’);
writeln(‘ Вариант 20’);
writeln(‘Разработанный модуль содержит:’);
writeln(‘1. Процедуру формирования матрицы в интервале от -5 до 5’);
writeln(‘2. Процедуру вывода матрицы’);
writeln(‘3. Функцию поиска кол-ва нулей в верхнем правом треугольнике
матрицы');
writeln(‘4. Процедуру умножения элементов матрицы на кол-во нулей’);
writeln;
writeln(‘Исходная матрица:’);
form(A);
vivod(A);
writeln;
umn(A, A1);
writeln;
writeln(‘Полученная матрица:’);
vivod(A1);
readln;
end.
Результаты
выполнения программы:
Курсовую работу выполнила студентка группы А-94 Сбитнева О. В.
Разработанный модуль содержит:
- Процедуру формирования матрицы в интервале от -5 до 5
- Процедуру вывода матрицы
- Функцию поиска кол-ва нулей в верхнем правом треугольнике матрицы
- Процедуры умножения элементов матрицы на кол-во нулей
Исходная матрица:
-5 -1 1 0 0
-3 -2 2 4 -5
5 -4 0 2 -3
-1 -4 1 -3 -4
5 4 -1 -2 1
Количество нулей
в верхнем правом треугольнике маторицы:
3
Полученная матрица:
-15 -3 3 0 0
-9 -6 6 12 -15
15 -12 0 6 -9
-3 -12 3 -9 -12
15 12
-3 -6 3
Часть 2:
«Файлы в Турбо
Паскале».
Основные понятия:
При решении класса задач, обрабатывающих большое количество данных редко обновляемых для описания этих данных и хранения их используется файловый тип.
Файл – племенованная область памяти на внешнем носителе, предназначенная для хранения различных данных.
Элементы файла называется записями, нумерация записи с нуля.
Текущий указатель указывает на обрабатываемую в данный момент запись и после обработки смещается на одну запись вперед.
Каждый файл имеет имя и может иметь расширение(до 3х символов), полное имя файла (спецификация) содержит имя диска и всех папок, а также имя файла.
При описании длина
файла не задается и ограничивается
только объемом свободного пространства
на внешнем носителе.
Описание файловой переменной:
- В разде type: имя = file of базовый тип (кроме файлового);
- var
идентификатор: file of базовый;
в зависимости от описания различают три типа файлов:
1)типизированные;
2)текстовые;
3)нетипизированные.
По способу доступа к записям файлы делятся на два класса:
а)файлы с непосредственным доступом(прямого доступа); для них существует специальная процедура перемещения текущего указателя на нужную запись.
б)файлы последовательного
доступа; особенность их в том, чтобы
прочитать какой-то элемент или
записать на место какую-то информацию.
Необходимо последовательно обработать
все предыдущие записи, начиная сначала.
Процедуры и функции работы с файлами:
- процедура назначения. Связывает файловую переменную с существующим или создаваемым на диске физическим файлом: assign(переменная, специфика файла)
Эта же процедура связывает файловую переменную с логическим устройством.
- процедура инициализации файла для чтения из него информации: reset(f).
Процедура устанавливает текущий указатель на запись 0.
- процедура инициализации файла для записи в него информации: rewrite(f).
Создает пустой файл с указателем на нулевой записи.
- процедура закрытия файла: close(f).
Эта процедура обязательно должна присутствовать в программе по созданию файла; при работе этой процедуры ликвидируются все буферные переменные, однако связь файловых переменных со спецификацией остается.
- процедура переименования файла: rename(f).
- процедура стирания файла: erase(f).
- процедура чтения из файла: read(f, список ввода).
- функция проверки конца файла: eof(f).
- процедура записи файла: write(f).
Замечания: списки ввода
и вывода должны содержать переменные
того же типа, что и переменные, описанные
файловые, f. Информация при чтении из файла
и записи в него считывается и записывается
через буфер. Размер буфера устанавливается
автоматически, на основе размера записи
файла.
Типизированные файлы:
Они характерны тем, что длина любой компоненты одинакова и постоянна.
Для них существует дополнительный набор процедур и функций.
а) процедура seek(f,n); смещает текущий указатель на запись с номером n.
б) функция filesize(f); определяет число записи в файле.
в) функция filepos(f); определяет порядковый номер той записи, которая обрабатывается в данный момент.
г) процедура transcate(f); удаляет часть файла, начиная с текущей позиции до конца.
Особенность типизированного
файла в том, что он позволяет
считывать и записывать структурную
переменную одной командой.
Задание.
Создать файл, состоящий из 20 записей:
Данные о работниках предприятия:
- № п/п;
- Табельный номер;
- Ф. И. О;
- № цеха;
- Основной оклад;
- Дополнительные оплаты;
- Сумма к выдаче.
Вывести данные о
работнике 4 цеха с самой большой
заработной платой.
Схемы
алгоритма.
Типы параметров в подпрограммах.
| идентификатор | назначение |
| N | Константа, равная количеству записей |
| N, No, FIO, Ceh, oklad, dop, sum | Поля записей |
| I, j | Счетчик циклов |
Программа
создания файла:
Program kurs2_1;
uses crt;
type
spisok=record
N: 1..20;
No: integer;
FIO: string[20];
Ceh: integer;
oklad: integer;
dop: integer;
sum: integer;
end;
const
list: array[1..20] of spisok=
((N:1; No:15; FIO:’Батурина А.Д.’; Ceh:5; oklad:15000; dop:1000; sum:16000);
(N:2; No:17; FIO:’Воскобоков Д.В.’; Ceh:3; oklad:15320; dop:1500; sum:15830);
(N:3; No:19; FIO:’Дудка В.Д.’; Ceh:4; oklad:14000; dop:2000; sum:16000);
(N:4; No:21; FIO:’Шаров А.А.’; Ceh:2; oklad:6000; dop:1000; sum:7000);
(N:5; No:23; FIO:’Зайцева М.В.’; Ceh:1; oklad:7530; dop:1500; sum:9030);
(N:6; No:25; FIO:’Игонин А.И.’; Ceh:7; oklad:10000; dop:2000; sum:12000);
(N:7; No:27; FIO:’Кузьмина К.В.’; Ceh:4; oklad:25330; dop:1000; sum:26330);
(N:8; No:29; FIO:’Ларинов С.С.’; Ceh:3; oklad:17000; dop:1500; sum:18500);
(N:9; No:31; FIO:’Осонина О.Д.’; Ceh:2; oklad:12050; dop:2000; sum:14050);
(N:10; No:33; FIO:’Панасеенко Т.В.’; Ceh:4; oklad:13000; dop:1000; sum:14000);
(N:11; No:35; FIO:’Рудакова В.В.’; Ceh:1; oklad:12000; dop:1500; sum:13500);
(N:12; No:37; FIO:’Солаценко Т.В.’; Ceh:5; oklad:11010; dop:2000; sum:13010);
(N:13; No:39; FIO:’Томченко А.Д.’; Ceh:4; oklad:3000; dop:1000; sum:4000);
(N:14; No:41; FIO:’Ухов Л.В.’; Ceh:2; oklad:20050; dop:1500; sum:21550);
(N:15; No:43; FIO:’Фролова З.П.’; Ceh:1; oklad:17050; dop:2000; sum:19050);
(N:16; No:45; FIO:’Храмов Т.П.’; Ceh:3; oklad:11000; dop:1000; sum:12000);
(N:17; No:47; FIO:’Цаплина А.А.’; Ceh:5; oklad:13050; dop:1500; sum:14550);
(N:18; No:49; FIO:’Чадов А.А.’; Ceh:4; oklad:15050; dop:2000; sum:17050);
(N:19; No:51; FIO:’Шеремет Т.П.’; Ceh:3; oklad:17000; dop:1000; sum:18000);
(N:20; No:53; FIO:’Яблоков Я.П.’; Ceh:2; oklad:21000; dop:1500; sum:22500););
var
f: file of spisok;
i: integer;
begin clrscr;
assign(f,’.\sp.dat’);
rewrite(f);
writeln(‘N Таб ФИО Nцеха Осн.окл. Доп.окл. Сумма ’);
for i:=1 to 20 do
begin
write(f, List[i]);
with List[i] do
writeln(N:3, No:5, FIO:20, Ceh:5, oklad:10, dop:8, sum:9);
end;
writeln;
writeln(‘Файл создан’);
readln;
close(f);
end.
Программа
обработки записи:
Program kurs2_2;
uses crt;
type
spisok=record
N: 1..20;
No: integer;
FIO: string[20];
Ceh: integer;
oklad: integer;
dop: integer;
sum: integer;
end;
var
i, max, k: integer;
s: array [1..N] of spisok;
f: file of spisok;
procedure get_max;
begin
max:=0;
for i:=1 to N do
with s[i] do
if (max < sum) and (ceh = 4) then
begin
max:=sum;
k:=i;
end;
end;
begin clrscr;
assign(f,’.\sp.dat’);
reset(f);
for i:=1 to N do
begin
read(f, s[i]);
end;
writeln(‘N Таб ФИО Nцеха Осн.окл. Доп.окл. Сумма ’);
for i:=1 to N do
begin
with s[i] do
writeln(N:3, No:5, FIO:20, Ceh:5, oklad:10, dop:8, sum:9);
end;
writeln;
get_max;
writeln(‘Работник 4 цеха с самой большой з\п:’);
with s[k] do
writeln(N:3, No:5, FIO:20, Ceh:5, oklad:10, dop:8, sum:9);
readln;
close(f);
end.
Результаты выполнения программы:
№ Таб ФИО №цеха Осн.окл. Доп.опл. Сумма
1 15 Батурина А.Д. 5 15000 1000 16000
2 17 Воскобоков Д.В. 3 15320 1500 15830
3 19 Дудка В.Д. 4 14000 2000 16000
4 21 Шаров А.А. 2 6000 1000 7000
5 23 Зайцева М.В. 1 7530 1500 9030
6 25 Игонин А.И. 7 10000 2000 12000
7 27 Кузьмина К.В. 4 25330 1000 26330
8 29 Ларинов С.С. 3 17000 1500 18500
9 31 Осонина О.Д. 2 12050 2000 14050
10 33 Панасеенко Т.В. 4 13000 1000 14000
11 35 Рудакова В.В. 1 12000 1500 13500
12 37 Солаценко Т.В. 5 11010 2000 13010
13 39 Томченко А.Д. 4 3000 1000 4000
14 41 Ухов Л.В. 2 20050 1500 21550
15 43 Фролова З.П. 1 17050 2000 19050
16 45
Храмов Т.П.
3
11000 1000
12000
№ Таб ФИО №цеха Осн.окл. Доп.опл. Сумма
17 47 Цаплина А.А. 5 13050 1500 14550
18 49 Чадов А.А. 4 15050 2000 17050
19 51 Шеремет Т.П. 3 17000 1000 18000
20 53
Яблоков Я.П.
2
21000 1500
22500
Работник 4 цеха с самой большой з\п:
7 27 Кузьмина
К. В.
4
25330 1000
26330
Заключение.
На основе проделанной
работы я приобрела навыки использования
модулей в среде Турбо Паскаль,
научилась работать с файлами и использовать
записи.
Список литературы:

- Модуль ввода/вывода аналоговых, дискретных и цифровых сигналов
- Модуль в средней школе
- Модуль двоично-десятичного реверсивного 16-ти разрядного счетчика
- Модульдік оқыту технологиясы
- Модуль защиты радиоаппаратуры
- Модуль манипулятора промышленного робота
- Модуль Маркетинг и управление качеством АН «Недвижимость»
- Модифицирование резинотехнических изделий
- Модифицированный симплекс метод
- Модифицированый симпелекс-метод
- Модифікований Крохмаль
- Модифіковані Адсорбенти та межі їх використання
- Модная мужская стрижка 2013
- Модные женские стрижки на короткие волосы