Автоматизация работы интерпола
МИНИСТЕРМТВО ОБРАЗОВАНИЯ И НАУКИ РЕСПУБЛИКИ КАЗАХСТАН
КАЗАХСКИЙ ЭКОНОМИЧЕСКИЙ УНИВЕРСИТЕТ ИМ. Т. РЫСКУЛОВА
Кафедра: «Прикладная информатика»
КУРСОВАЯ РАБОТА
По дисциплине:
«Алгоритм языков программирования»
На тему:
«Автоматизация работы интерпола»
Выполнил (а):
Утегенов С.М.
Проверила:
Ст.преподаватель
Тимофеева Е.П.
Алматы 2008
Введение 3
1 Основные возможности и характеристики языка TURBO PASCAL 5
1.1 Типы данных языка 5
1.2 Структура программы 6
1.3 Массивы, процедуры и функции 7
1.4 Модули 8
1.5 Записи файлы 9
2 Программная часть 12
2.1 Постановка задачи 12
2.2 Входная и выходная информация 12
2.3 Алгоритм решения задачи 12
2.4 Контрольный пример 20
При выборе пункта меню 4 выводится список преступников 20
Заключение 21
Список использованной литературы 22
Введение
Паскаль − замечательный язык программирования, который относительно прост в изучении, довольно ясен и логичен и, будучи первым изучаемым языком программирования, приучает к хорошему стилю. Паскаль воспитывает дисциплину структурного программирования и программирования вообще лучше, чем другие языки программирования, такие, как, например Бейсик.
Пакет Turbo Pascal 7.0 обладает ограниченными возможностями и позволяет работать только в обычном режиме MS DOS. Начинающему программисту, по-видимому, целесообразно начать изучение языка и среды именно с этого пакета.
Язык характеризуется расширенными возможностями по сравнению со стандартом, хорошо развитой библиотекой модулей, позволяющих использовать возможности операционной системы, создавать оверлейные структуры, организовывать ввод-вывод, формировать графическое изображение и т.д.
В данной работе будут описаны основные возможности языка, работа в интегрированной среде, набор стандартных модулей.
Паскаль – гибкий и развитый в отношении типов данных язык. Привлекательны его рекурсивные возможности, а также поддержка технологии объектно-ориентрованного программирования.
Данная курсовая носит название «Автоматизация начисления стипендии». Состоит из двух крупных частей:
- Основные возможности и характеристики языка TURBO PASCAL
- Проектная часть, в которой непосредственно представлена сама программа.
В первой части описываются основные составляющие языка TURBO PASCAL: типы данных, массивы, процедуры, функции, записи и файлы. Приводятся примеры применения всех этих типов.
Во второй, проектной части представлена сама программа: раскрывается постановка задачи, описывается входная (необходимая для внесения данных в программу с указанием структуры и значимости всех полей, периодичность её поступления, источники информации и ее объем) и выходная (перечисляются конечные и промежуточные результаты вычислений, описывается выходная форма с указанием перечня и значимости информации, входящих в неё реквизитов и периодичность её формирования) Контрольный пример составлен с целью проверки правильности алгоритма и программы. Алгоритм решения задачи представляется последовательностью действий над исходными данными. Каждый шаг описывается словесно или в виде формулы.
Тема является актуальной, поскольку сейчас с недостатком времени возникает необходимость в автоматизации работы не только крупных предприятий, но и небольших рабочих мест, с целью экономии времени и денег.
Для более наглядного представления курсовой работы некоторые данные и примеры приведены в виде рисунков, схем и таблиц.
Название литературы и авторы указаны в списке использованной литературы.
1 Основные возможности и характеристики языка TURBO PASCAL
1.1 Типы данных языка
Основные символы языка-буквы, цифры и специальные символы составляют его алфавит. ТУРБО ПАСКАЛЬ включает следующий набор основных символов:
1) 26 латинских строчных и 26 латинских прописных букв:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
a b c d e f g h i j k l m n o p q r s t u v w x y z
2) _ подчеркивание
3) 10 цифр:
0 1 2 3 4 5 6 7 8 9
4) знаки операций:
+ — * / = <> < > <= >= := @
5) ограничители:
. , ‘ ( ) [ ] (. .) { } (* *) .. : ;
6) спецификаторы:
^ # $
7) служебные (зарезервированные) слова:
Кроме перечисленных, в набор основных символов входит пробел. Пробелы нельзя использовать внутри сдвоенных символов и зарезервированных слов.
Обязательное описание типа приводит к избыточности в тексте программ, но такая избыточность является важным вспомогательным средством разработки программ и рассматривается как необходимое свойство современных алгоритмических языков высокого уровня. В языке ПАСКАЛЬ существуют скалярные и структурированные типы данных.
К скалярным типам относятся стандартные типы и типы, определяемые пользователем.
Стандартные типы включают целые, действительные, символьный, логические и адресный типы. Типы, определяемые пользователем, — перечисляемый и интервальный.
Структурированные типы имеют четыре разновидности: массивы, множества, записи и файлы.
Кроме перечисленных, TURBO PASCAL включает еще два типа — процедурный и объектный.
Логический тип определен таким образом, что FALSE < TRUE. Это позволяет применять к булевским операндам все операции отношения.
1.2 Структура программы
Программа на языке ПАСКАЛЬ состоит из заголовка, разделов описаний и раздела операторов.
Заголовок программы содержит имя программы, например:
Program PRIM;
Описания могут включать в себя раздел подключаемых библиотек (модулей), раздел описания меток, раздел описания констант, раздел описания типов, раздел описания переменных, раздел описания процедур и функций.
Любой оператор в программе может быть помечен меткой. В качестве метки используются произвольные целые без знака, содержащие не более четырех цифр, либо имена. Метка ставится перед оператором и отделяется от него двоеточием.
Описание констант позволяет использовать имена как синонимы констант, их необходимо определить в разделе описаний констант:
В разделе описания переменных необходимо определить тип всех переменных, используемых в программе:
var P,Q,R: Integer;
A,B: Char;
F1,F2: Boolean;
Раздел операторов представляет собой составной оператор, который содержит между служебными словами
begin…….end
последовательность операторов. Операторы отделяются друг от друга символом ;.
Текст программы заканчивается символом точка.
Кроме описаний и операторов ПАСКАЛЬ — программа может содержать комментарии, которые представляют собой произвольную последовательность символов, расположенную между открывающей скобкой комментариев { и закрывающей скобкой комментариев }.
В языке ПАСКАЛЬ количество базовых конструкций увеличено до шести, это:
-следование;
-ветвление;
-цикл с предусловием;
-цикл с постусловием;
-цикл с параметром;
-вариант.
Перечисляемый тип представляет собой ограниченную упорядоченную последовательность скалярных констант, составляющих данный тип. Значение каждой константы задается ее именем. Имена отдельных констант отделяются друг от друга запятыми, а вся совокупность констант, составляющих данный перечисляемый тип, заключается в круглые скобки.
1.3 Массивы, процедуры и функции
Массивы представляют собой ограниченную упорядоченную совокупность однотипных величин. Каждая отдельная величина называется компонентой массива. Тип компонент может быть любым, принятым в языке ПАСКАЛЬ, кроме файлового типа. Тип компонент называется базовым типом.
Для ввода или вывода массива в список ввода или вывода помещается переменная с индексом, а операторы ввода или вывода выполняются в цикле. Первый индекс определяет номер строки, второй — номер столбца. Двумерные массивы хранятся в памяти ЭВМ по строкам.
Первый способ — с использованием типизированных констант, например:
type Dim10= Array[1..10] of Real;
const
raM10: Dim10 = ( 0, 2.1, 4, 5.65, 6.1, 6.7, 7.2, 8, 8.7, 9.3 );
При инициализации двумерных массивов значения компонент каждого из входящих в него одномерных массивов записывается в скобках:
type Dim3x2= Array[1..3,1..2] of Integer;
Символьная строка может быть либо строковой константой, либо строковой переменной. Строковая константа, или строка, представляет собой совокупность символов, заключенную в апострофы. Строка — это элементарная конструкция языка ПАСКАЛЬ. Строковые константы могут входить в состав выражений. Как и числовые константы, они могут быть описаны в разделе описания констант.
Строковые переменные — это одномерные упакованные массивы символов, для описания которых в TURBO PASCAL введен тип String.
Например, если строка содержит до 30 символов, ее тип будет определен как
type s= String[30];
Алгоритм решения задачи проектируется путем декомпозиции всей задачи в отдельные подзадачи. Обычно подзадачи реализуются в виде подпрограмм.
Подпрограмма — это последовательность операторов, которые определены и записаны только в одном месте программы, однако их можно вызвать для выполнения из одной или нескольких точек программы. Каждая подпрограмма определяется уникальным именем. В языке ПАСКАЛЬ существуют два типа подпрограмм — процедуры и функции.
Процедура и функция — это именованная последовательность описаний и операторовПроцедура может содержать такие — же разделы описаний, что и ПАСКАЛЬ — программа, а именно: разделы описания модулей, меток, констант, типов, переменных, процедур и функций.
Во многих задачах, особенно в задачах вычислительной математики, необходимо передавать имена процедур и функций в качестве параметров. Для этого в TURBO PASCAL введен новый тип данных — процедурный или функциональный, в зависимости от того, что описывается.
Описание процедурных и функциональных типов производится в разделе описания типов:
type
FuncType = Function(z: Real): Real;
ProcType = Procedure (a,b: Real; var x,y: Real);
Для завершения работы программ, процедур и функций без предварительного перехода по меткам к закрывающему end в TURBO PASCAL введены процедуры Exit и Halt.
1.4 Модули
Модуль − это автономно компилируемая программная единица, включающая в себя различные компоненты раздела описаний (типы, константы, переменные, процедуры и функции) и, возможно, некоторые исполняемые операторы инициирующей части.
Модуль содержит описания типов данных, переменных и других объектов, а также подпрограммы, которые используются в различных программах. Подпрограмму имеет смысл включать в состав модуля в том случае, когда она реализует действие, которое приходится выполнять достаточно часто. Доступ к описаниям, функциям и процедурам модуля обеспечивает оператор использования Uses, в котором указывается имя модуля. Этот оператор размещается в разделе описаний программы, сразу после заголовка. Если в программе используется не один модуль, а несколько, необходимо указать имена всех модулей, перечислив их через запятую. Исключением является модуль System, ссылка на который необязательна. Этот модуль содержит, в частности, процедуры файлового ввода/вывода, процедуры и функции для работы со строками и некоторые другие.
Модуль начинается заголовком
unit unit_name;
где unit_name – имя модуля, которое выбирается в соответствии с правилами Паскаля. Файл, содержащий модуль, обязан иметь то же имя, что и модуль.
В Турбо Паскале имеется восемь стандартных модулей, в которых содержится большое число разнообразных типов, констант, процедур и функций. Этими модулями являются SYSTEM, DOS, CRT, PRINTER, GRAPH, OVERLAY, TURBO3 и GRAPHS. Модули GRAPH, TURBOS и GRAPHS содержатся в одноименных ТPU-файлах, остальные входят в состав библиотечного файла TURBO.TPL. Лишь один модуль SYSTEM подключается к любой программе автоматически, все остальные становятся доступны только после указания их имен в списке, следующем за словом USES.
1.5 Записи файлы
Представляет собой совокупность ограниченного числа логически связанных компонент, принадлежащих к разным типам. Компоненты записи называются полями, каждое из которых определяется именем. Поле записи содержит имя поля, вслед за которым через двоеточие указывается тип этого поля. Поля записи могут относиться к любому типу, допустимому в языке Паскаль, за исключением файлового типа.
Описание записи в языке ПАСКАЛЬ осуществляется с помощью служебного слова RECORD, вслед за которым описываются компоненты записи. Завершается описание записи служебным словом END.
Ф А Й Л Ы
Введение файлового типа в язык ПАСКАЛЬ вызвано необходимостью обеспечить возможность работы с периферийными (внешними) устройствами ЭВМ, предназначенными для ввода, вывода и хранения данных.
Файловый тип данных или файл определяет упорядоченную совокупность произвольного числа однотипных компонент.
Общее свойство массива, множества и записи заключается в том, что количество их компонент определено на этапе написания программы, тогда как количество компонент файла в тексте программы не определяется и может быть произвольным.
Понятие файла достаточно широко. Это может быть обычный файл на диске, коммуникационный порт ЭВМ, устройство печати, клавиатура или другие устройства.
При работе с файлами выполняются операции ввода — вывода. Операция ввода означает перепись данных с внешнего устройства (из входного файла) в основную память ЭВМ, операция вывода — это пересылка данных из основной памяти на внешнее устройство (в выходной файл).
Файлы на внешних устройствах часто называют физическими файлами. Их имена определяются операционной системой. В программах на языке Паскаль имена файлов задаются с помощью строк. Например, имя файла на диске может иметь вид:
‘A:LAB1.DAT’
‘c:ABC150pr.pas’
‘lab3.pas’.
С файловой системой TURBO PASCAL связано понятие буфера ввода вывода. Ввод и вывод данных осуществляется через буфер. Буфер — это область в памяти, которая выделяется для каждого файла. При записи в файл вся информация сначала направляется в буфер и там накапливается до тех пор, пока весь объем буфера не будет заполнен. Только после этого или после специальной команды сброса происходит передача данных на внешнее устройство. При чтении из файла данные вначале считываются в буфер, причем данных считывается не столько, сколько запрашивается, а сколько поместится в буфер.
Механизм буферизации позволяет более быстро и эффективно обмениваться информацией с внешними устройствами.
Для работы с файлами в программе необходимо определить файловую переменную. TURBO PASCAL поддерживает три файловых типа: текстовые файлы, компонентные файлы, бестиповые файлы.
признаком конца строки.
Особое место в языке ПАСКАЛЬ занимают текстовые файлы, компоненты которых имеют символьный тип. Для описания текстовых файлов в языке определен стандартный тип Тext:
var TF1, TF2: Text;
Текстовые файлы представляют собой последовательность строк, а строки — последовательность символов. Строки имеют переменную длину, каждая строка завершается
Рассмотренные ранее средства работы с файлами обеспечивают последовательный доступ.
TURBO PASCAL позволяет применять к компонентным и бестиповым файлам, записанным на диск, способ прямого доступа. Прямой доступ означает возможность заранее определить в файле блок, к которому будет применена операция ввода — вывода. В случае бестиповых файлов блок равен размеру буфера, для компонентных файлов блок — это одна компонента файла.
Прямой доступ предполагает, что файл представляет собой линейную последовательность блоков. Если файл содержит n блоков, то они нумеруются от 1 через 1 до n. Кроме того, вводится понятие условной границы между блоками, при этом условная граница с номером 0 расположена перед блоком с номером 1, граница с номером 1 расположена перед блоком с номером 2 и, наконец, условная граница с номером n находится после блока с номером n.
Реализация прямого доступа осуществляется с помощью функций и процедур FileSize, FilePos, Seek и Truncate.
Функция FileSize( var f ): Longint возвращает количество блоков в открытом файле f.
Функция FilePos( var f ): Longint возвращает текущую позицию в файле f. Позиция в файле — это номер условной границы. Для только что открытого файла текущей позицией будет граница с номером 0. Это значит, что можно записать или прочесть блок с номером 1. После чтения или записи первого блока текущая позиция переместится на границу с номером 1, и можно будет обращаться к ьлоку с номером 2. После прочтения последней записи значение FilePos равно значению FileSize.
Процедура Seek( var f; N: Longint) обеспечивает назначение текущей позиции в файле (позиционирование). В параметре N должен быть задан номер условной границы, предшествующей блоку, к которому будет производиться последующее обращение. Например, чтобы работать с блоком 4, необходимо задать значение N, равное 3. Процедура Seek работает с открытыми файлами.
Процедура Truncate( var f ) устанавливает в текущей позиции признак конца файла и удаляет (стирает) все последующие блоки.
Работа с адресными переменными (указателями) будет рассмотрена позже, сейчас отметим, что для получения значения адреса какой-либо переменной введена унарная операция.
2 Программная часть
2.1 Постановка задачи
Программа «Интерпол» представляет собой алгоритм действий, предназначенный для автоматизированного вывода сведения о преступниках.
Программа должна выполнять следующие функции: выдавать по запросу сведения о преступниках.
Для этого необходимо записать в программу данные преступников: ФИО, год рождения, цвет волос, глаз, кличка.
Программа должна по запросу вывести список преступников которые в розыске и их данные.
2.2 Входная и выходная информация
Для работы программы «Интерпол» необходимы следующие данные о преступниках: ФИО, год рождения, цвет волос, глаз, кличка.
2.3 Алгоритм решения задачи
В исполнительной части программы выводится на экран меню для выбора режима работы:
1 –Формирование новой базы данных.
2 – Просмотр базы данных.
3 – Корректировка базы данных.
4 — Добавление записей в базу данных.
5 — Конец работы. (рис.1)
Общая схема алгоритма
Рис.1
В программе введены следующие обозначения переменных:
Stud – компоненты. Это записной тип, имеющий следующие поля: FIO – ФИО жильца; nomer – номера комнат;
Filename – имя файла.
f – имя логического файла.
St – компонента файла.
Программа:
program Serik;
PROGRAM DP32;
USES CRT;
TYPE
UKAZ=^sot;
sot=RECORD
fam,cvv,cvg:string;
nom:integer;
dol:string;
god: integer;
NEXT,OLD:UKAZ;
END;
sotr=RECORD
fam,cvv,cvg:string;
nom:integer;
dol:string;
god: integer;
eND;
VAR
ZAGOL,TEK1,TEK2,ZVENO:UKAZ;
F:FILE OF sot;
A:sot;
S:string;
I,N,W:INTEGER;
nom1:integer;
PROCEDURE CFILE;
BEGIN
ASSIGN(F,’sotr.DAT’);
REWRITE(F);
WRITELN(‘Skolko prestupnikov ?’);
READLN(n);
FOR I:=1 TO N DO
BEGIN
WRITELN(I,’- iyi sotrudnik’);
WRITELN(‘ Familia ?’);
READLN(A.fam);
writeln(‘god rojdenie’);
readln(a.nom);
writeln(‘kli4ka’);
readln(a.dol);
writeln (‘cvet volos’);
readln(a.cvv);
writeln (‘cvet glas’);
readln(a.cvg);
WRITE(F,A);
END;
CLOSE(F);
END;
PROCEDURE CPIC;
BEGIN
ASSIGN(F,’sotr.DAT’);
RESET(F);
NEW(ZAGOL);
TEK1:=ZAGOL;
TEK1^.NEXT:=TEK1;
TEK1^.OLD:=TEK1;
WHILE NOT EOF(F) DO
BEGIN
READ(F,A);
NEW(ZVENO);
ZVENO^.fam:=A.fam;
zveno^.nom:=a.nom;
ZVENO^.dol:=A.dol;
zveno^.god:=a.god;
ZVENO^.NEXT:=ZAGOL;
TEK1^.NEXT:=ZVENO;
ZAGOL^.OLD:=ZVENO;
ZVENO^.OLD:=TEK1;
TEK1:=ZVENO;
END;
CLOSE(F);
END;
PROCEDURE PRINT;
BEGIN
CLRSCR;
WRITELN(‘Familiya God rojdenia Kli4ka cvet volos cvet glas’);
WRITELN(‘+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++’);
TEK1:=ZAGOL^.NEXT;
WHILE TEK1<>ZAGOL DO BEGIN
WRITELN(TEK1^.fam:10,»,tek1^.nom:15,»,TEK1^.dol:12,»,TEK1^.cvv:20,»,TEK1^.cvg:20,»);
TEK1:=TEK1^.NEXT;
END;
WRITELN(‘||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ‘);
WRITELN(‘ Najmite ENTER’);
READLN;
END;
PROCEDURE ZFILE;
BEGIN
ASSIGN(F,’sotr.DAT’);
REWRITE(F);
RESET(F);
TEK1:=ZAGOL^.NEXT;
WHILE TEK1<>ZAGOL DO
BEGIN
A.fam:=TEK1^.fam;
a.nom:=tek1^.nom;
A.dol:=TEK1^.dol;
A.god:=TEK1^.god;
WRITE(F,A);
TEK1:=TEK1^.NEXT;
END;
CLOSE(F);
END;
PROCEDURE SORT;
var q:integer;
s:integer;
d:integer;
BEGIN
CLRSCR;
N:=0;
d:=0;
s:=0;
TEK1:=ZAGOL^.NEXT;
WHILE TEK1<>ZAGOL DO
BEGIN
N:=N+1;
TEK1:=TEK1^.NEXT;
END;
TEK2:=ZAGOL^.NEXT;
WHILE TEK2<>ZAGOL DO
BEGIN
TEK2:=TEK2^.NEXT;
TEK1:=ZAGOL;
FOR I:=2 TO N DO
BEGIN
TEK1:=TEK1^.NEXT;
IF TEK1^.god>TEK1^.NEXT^.god THEN
BEGIN
A.fam:=TEK1^.fam;
a.nom:=tek1^.nom;
A.dol:=TEK1^.dol;
A.god:=TEK1^.god;
TEK1^.fam:=TEK1^.NEXT^.fam;
tek1^.nom:=tek1^.next^.nom;
TEK1^.dol:=TEK1^.NEXT^.dol;
TEK1^.god:=TEK1^.NEXT^.god;
TEK1^.NEXT^.fam:=A.fam;
tek1^.next^.nom:=a.nom;
TEK1^.NEXT^.dol:=A.dol;
TEK1^.NEXT^.god:=A.god;
END;
END;
END;
WRITELN(‘Familiya Nomer otdela Doljnost Vremya nachala raboty’);
WRITELN(‘+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ‘);
TEK1:=ZAGOL^.NEXT;
WHILE TEK1<>ZAGOL DO BEGIN
WRITELN(TEK1^.fam:10,»,tek1^.nom:15,»,TEK1^.dol:12,»,TEK1^.god:20,»);
TEK1:=TEK1^.NEXT;
END;
WRITELN(‘||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ‘);
Writeln;
WRITELN(‘ Najmite ENTER’);
readln;
END;
BEGIN
WHILE W < 6 DO
BEGIN
CLRSCR;
WRITELN(‘ Vi mojete :’);
WRITELN(‘1 — Sozdat fail’);
WRITELN(‘2 — Zagruzit spisok ‘);
WRITELN(‘3 — Zapisat spisok v fail ‘);
WRITELN(‘4 — Napechatat spisok ‘);
WRITELN(‘5 — Sortirovka spiska po gorodu ‘);
WRITELN(‘6 — Viiti iz programmi ‘);
WRITELN(‘ Vashi deistviya ?’);
READLN(W);
CASE W OF
1:CFILE;
2:CPIC;
3:ZFILE;
4:PRINT;
5:SORT;
END;
END;
END.
2.4 Контрольный пример
При запуски программы на экран компьютера выводится пункт меню
При выборе пункта 1
При выборе пункта меню 4 выводится список преступников
Заключение
Завершается рассмотрение основ программирования на Турбо Паскале. Среди них вычисления и обработка информации, использование объектно-ориентированного программирования – словом, те задачи, с которыми приходится сталкиваться профессиональному программисту. Турбо Паскаль был выбран как наилучший язык программирования для обучения основам профессионального программирования.
Турбо Паскаль – достаточно «старый» программный продукт. Следует заметить, однако, что Паскаль – это живой язык. Известны, используются или находятся в стадии разработки компиляторы и среды разработки программ на Паскале для различных операционных систем, в том числе и бурно развивающейся операционной системы Linux. Эти системы иногда частично, а иногда и в значительной мере совместимы с Турбо Паскалем, а следовательно, накопленный опыт может быть использован и для серьезной, профессиональной работы по разработке программ.
Список использованной литературы
- 1.Фаронов В.В. Программирование на персональных ЭВМ в среде Турбо-Паскаль. — М.: Изд-во МГТУ, 1990.
- 2.Фёдоров А. Особенности программирования на Borland Pascal. — Киев: “Диалектика”, 1994.
- 3.Хершель Р. Турбо Паскаль/ 2-е изд., перераб. — Вологда: МП “МИК”, 1991.
- 4.POWER TOOLS PLUS. Процедуры поддержки для Turbo Pascal 4.0.: Справочное руководство пользователя. Техническая документация.
- 5.Интернет. www.5ballow.ru.