скачать рефераты
  RSS    

Меню

Быстрый поиск

скачать рефераты

скачать рефератыРеферат: Модули, записи и файлы

2.1. Вызывающая программа

Блок-схема: документ: Данные о студенте и о программе

Блок-схема: типовой процесс: VIVOD (A)

Блок-схема: документ: Вывод сформи
рованой мат-рицы и ре-зультатов




2.2.Процедура формирования массива А


PROCEDURE FORM

Блок-схема: знак завершения: Конец

2.3.Процедура  ввывода массива А

PROCEDURE VIVOD



2.4.Процедура произведения элементов массива А

PROCEDURE PR

Блок-схема: процесс: C[i] = 1


Блок-схема: знак завершения: Конец

2.5.Функция  поиска максимального элемента в векторном массиве С

FUNCTION MAX


Глава 3. Модуль основной программы

unit kurp1;

interface

const n=5;

type  matr=array[1..n,1..n] of real;

      vect=array[1..n] of real;

procedure form(var a:matr);

procedure vivod (var a:matr);

function max(c:vect):real;

procedure pr(a:matr;var c:vect);

implementation

procedure vivod (var a:matr);

  var i,j:integer;

  begin

   for i:=1 to n do

begin

   for j:=1 to n do

write (a[i,j]:6:2);

   writeln;

   end;

   writeln;

   end;

procedure form(var a:matr);

var i,j:integer;

  begin

   randomize;

   for i:=1 to n do

   for j:=1 to n do

a[i,j]:=random*2-1;

  end;

function max( c:vect):real;

var i:integer;

    m:real;

begin

m:=-2;

for i:=1 to n do

 if c[i]>m then m:=c[i];

max:=m

end;

procedure pr(a:matr;var c:vect);

var i,j:integer;

begin

c[i]:=1;

for i:=1 to n do

 begin

  for j:=1 to n do

   c[i]:=a[j,i]*c[i];

  writeln('Произведение ',i,'-го столбца =',c[i]:6:4);

  end;

  writeln;

end;

end.

Глава 4. Основная программа

program kursovik;

uses crt,kurp1;

var a:matr;

    c:vect;

begin

clrscr;

window (45,2,75,7) ;

writeln ('Курсовая работа по информатике') ;

writeln('Факультет АЭС      группа А-92');

writeln ('студента:    Грязина Дмитрия  ');

window(1,1,80,25);

writeln('вариант 21');

window(10,8,80,20);

writeln('Разработанный модуль содержит следующие программы:');

writeln('1.Процедуру формирования элементов матрицы в интервале от 1.0 до 1.0.');

writeln('2.Процедуру вывода матрицы на экран.');

writeln('3.Процедуру определения произведения каждого столбца матрицы.');

writeln('4.Функцию определения максимального произвелдения.');

window(1,1,80,25);

gotoxy(10,24);

writeln('Для продолжения нажмите пробел');

clrscr;

 form(a);

writeln('Сформированная матрица');

vivod(a);

pr(a,c);

writeln('Максимальное произведение =',max(c):6:4);

readln;

end.

Глава 5. Результаты первой части курсовой работы

Сформированная матрица

 -0.68  0.22  0.58 -0.62 -0.14

  0.25 -0.11 -0.90  0.41 -0.57

  0.24 -0.69 -0.84  0.28  0.71

 -0.46 -0.26  0.16  0.49 -0.73

  0.60  0.17  0.28 -0.77 -0.61

Произведение 1-го столбца =0.0112

Произведение 2-го столбца =-0.0007

Произведение 3-го столбца =0.0187

Произведение 4-го столбца =0.0264

Произведение 5-го столбца =0.0243

Максимальное произведение =0.0264

Глава 6.  Записи.        

Запись – это структура данных, состоящая из фиксированного числа компонентов, называемых полями записи. В отличие от массива, компоненты (поля) записи могут быть различного типа. Чтобы можно было ссылаться на тот или иной компонент записи, поля именуются.

Структура обьявления типа записи такова:

                  

                             <имя типа> = RECORD <пс. полей> END

Здесь <имя типа> - правельный индификатор;

          RECORD, END – зарезервированные слова (запись, конец);

          <сп. полей> - список полей; представляют собой последовательность           

          разделов записи, между которыми ставится точка с запитой.

Каждый раздел записи состоит из одного или нескольких индификаторов полей, отделяемых друг от друга запятыми. За индификатором ставится двоеточие и описание типа поля например:

                  type

                          birthday = record

                         day, month : byte;

                         year      : word:

                   end;     

                  var

                        a,b : Birthday;

                        .  .  .  .  .  .  .  .

В этом примере тип Birthday есть запись с полями DAY, MONTH, и YEAR; переменные А и В содержат записи типа Birthday.

Как в массиве, значения переменных типа записи можно присваивать другим переменным того же типа, например:

                                      a : = b;

К каждому из компонентов записи можно получить доступ, если использовать составное имя, т.е. указать имя переменной, затем точку и имя поля:

                                      a.day := 27; b.year := 1991;

Чтобы упростить доступ к полям записи, используется оператор присоединения WITH:

                   WITH <переменная> DO <оператор>  

Здесь WITH, DO – ключевые слова (с, делать);

          <переменная> - имя переменной типа запись, за которым,

          возможно, следует список вложенных полей; 

          <переменная> - любой оператор Турбо Паскаля.

Например:

                   with c.bd do month := 9;

Имена полей должны быть уникальными в пределах той записи, где они обьявлены, однако, если записи содержат поля – записи, т.е. вложена одна в другую, имена могут повторяться на разных уровнях вложенности.  

.

Глава 7. Файлы.

Под файлом понимается именованная область памяти на магнитном носителе, используемая для долговременного хранения некоторой логиче­ски связанной информации. В эту область внешней памяти можно как поместить определенные данные, так и извлечь их из нее. Эти действия имеют общее название - ввод-вывод.

7.1. Операция с файлами как единое целое.

Программирование доступа к файлу в языке Turbo Pascal начинается с описания файловой переменной (переменной файлового типа). Это опи­сание строится с помощью служебного слова file, после которого (после служебного слова of) может быть указан тип отдельных элементов файла, например:

var

F : file of integer;

При необходимости можно отдельно определить некоторый файловый тип, которым в дальнейшем пользоваться при описании файловых пере­менных:

type

RecordFile = file of record

                А, В : real;

                        end;

var

Fl, F2 : RecordFile;

Очень важно различать собственно файл (область памяти на магнит­ном носителе с некоторой информацией) и переменную файлового типа в некоторой Turbo Pascal- программе. Считается, что файловая переменная является представителем некоторого дискового файла в программе. Для того, чтобы реализовать доступ к файлу па магнитном диске, программа должна связать его с файловой переменной. Для этого необходимо сопос­тавить переменную с именем файла. Это имя представляется в виде стро­ки, содержащей полное имя файла и, быть может, цепочку объемлющих каталогов и обозначение дисковода. Такая строка носит название маршру­та (или пути) к файлу и формируется по общим правилам MS-DOS.

Связывание маршрута и файловой переменной производится стан­дартной процедурой Assign, которой передаются два параметра: имя пе­ременной файлового типа и строка с именем (маршрутом) дискового файла, например:

Assign (F, 'с: \books\book4\test3 .раз ' ) ;

Помимо маршрута, во втором параметре может быть указано условное (символическое) обозначение некоторого «псевдофайла» MS-DOS, то есть файла, связанного с конкретным физическим устройством. Допускаются имена, в основном совпадающие с принятыми в MS-DOS обозначениями (‘con’ – консоль, то есть экран дисплея и/или клавиатура, ‘lpti’ или ‘prn’ – печатающее устройство и т. д.).

До тех пор, пока файловая переменная не связана с каким-либо дис­ковым файлом, никакие операции с ней в программе невозможны, Заме­тим, что можно связать файловую переменную с еще не существующим дисковым файлом. Это может быть оправдано для случая последующего создания Turbo Pascal-программой файла с данным именем с помощью некоторой системной процедуры.

После того, как файловая переменная с помощью процедуры Assign связана с конкретным дисковым файлом, можно выполнить любую до­пустимую операцию с ним. Здесь рассмотрим две операции общего ха­рактера, позволяющие переименовывать и уничтожать существующие дисковые файлы. Такие операции выполняются системными подпрограм­мами Rename и Erase со следующими спецификациями:

Rename ( var f; nevname : string );

Erase ( var f );

Основным параметром этих процедур является файловая переменная  (она может идентифицировать файл любого типа, и к ней должна была быть ранее применена процедура Assign), а процедуре Rename дополни­тельно передается новое имя файла. Действие указанных процедур осно­вывается на соответствующих DOS-функциях и функционально эквива­лентно командам ren и del командного процессора.

7.2. Структура файлов

7.2.1Открытие и закрытие файлов

В этом и следующем разделах рассматриваются файлы традиционной для языка Pascal структуры, которые описываются в программе в терми­нах составляющих компонент. Кроме таких файловых переменных (они также называются "типизированными" файлами), в языке Turbo Pascal имеются также файлы специального типа - текстовые файлы, которые введены для поддержки одного практически важного частного случая файловых структур, и нетипизированные файлы, которые используются для более эффективной организации обменов на низком уровне.

Важнейшим моментом при использовании переменных файловых ти­пов является интерпретация файла как потенциально бесконечного спи­ска значений одного и того же (базового) типа. Например, описание пе­ременной F вида

var

F : file of integer;

понимается как определение в программе под именем F списка неопреде­ленного количества целых чисел, расположенного на некотором внешнем запоминающем устройстве (например, на магнитном диске).

С каждой переменной файлового типа также связано понятие теку­щего указателя файла. Текущий указатель можно понимать как скрытую переменную (то есть переменную, неявно описанную вместе с файловой

переменной), которая обозначает ("указывает" на) некоторый конкретный элемент файла. Таким образом, можно графически так представить ин­терпретацию файла, связанного с переменной F:             0     1     2           N

Целое Целое Целое . . . . . Целое . . .

  Текущий указатель —————

Как правило, все действия с файлом (чтение из файла, запись в файл) производятся поэлементно, причем в этих действиях участвует тот эле­мент файла, который обозначается текущим указателем. В результате со­вершения операций текущий указатель может перемещаться, настраиваясь на тот или иной элемент файла. Все элементы файла считаются пронуме­рованными; начальный элемент имеет нулевой номер. Имеется возмож­ность явной установки текущего указателя на некоторый элемент файла.

Заметим, что один и тот же внешний файл в различных Turbo Pascal-программах (или даже в различных частях одной и той же программы) может интерпретироваться по-разному, например, как последовательность целых чисел, или как последовательность символов, или как последова­тельность некоторых записей, и т. д. Эта возможность очень важна и час­то используется в работе с файлами сложной структуры. Например, в процессе работы с внутренним представлением файлов баз данных (в частности, с DBF-файлами) может понадобиться интерпретировать файл по-разному в зависимости от того, какую его компоненту (заголовок или содержательную часть) мы обрабатываем.

Нужно также отметить, что все операции с файлами в языке Turbo Pascal реализованы с использованием базовых средств операционной сис­темы; в частности, понятие текущего указателя файла поддержано в MS-DOS. Однако все перемещения по файлу (как явное управление указателем, так и сдвиги при обменах) выполняются в терминах байтов. Таким образом, все аспекты, связанные с типизацией содержимого фай­лов, представляют собой системную надстройку языка Turbo Pascal.

Для выполнения некоторой операции по вводу-выводу необходимо прежде всего открыть дисковый файл (напомним, что предварительно нужно связать файловую переменную с дисковым файлом с помощью процедуры Assign). Под открытием в данном случае понимается подготов­ка к обмену с файлом со стороны программы, заключающаяся прежде всего в поиске файла на внешнем носителе, установке его текущего указа­теля на определенный (как правило, нулевой элемент) и формировании буфера в оперативной памяти, посредством которого будут производиться обмены.

Обычные типизированные файлы открываются с помощью одной из двух системных процедур - Reset или Rewrite, единственным параметром

которых в данном случае является файловая переменная. Обе эти проце­дуры открывают файл для обмена. Разница между ними заключается в начальных действиях с файлом.

Процедура Reset предполагает, что открываемый дисковый файл уже существует, в противном случае возникает ошибка. Процедура Rewrite допускает, что открываемый файл может еще не существовать; в этом случае она создаст заданный файл. Если же файл существует, то Rewrite очищает его. Повторим, что в обоих случаях текущий указатель файла устанавливается на его нулевой элемент. Следует иметь в виду, что обе операции допускают в дальнейшем как чтение из файла, так и запись в него (это будет обсуждаться в следующем разделе).

Разумеется, две введенные процедуры носят в основном подготови­тельный характер, однако можно указать практически важные случаи их вполне самостоятельного использования. Так, процедура Rewrite может применяться для стирания содержимого файла без его удаления с диска или для создания нового файла.

 Процедура close завершает действия с файлом, который указывается в качестве ее единственного параметра. При этом буфер, образованный при открытии файла, ликвидируется. После этого файловую переменную можно связать посредством процедуры Assign с каким-либо другим дис­ковым файлом. Заметим, что при окончании работы всей программы происходит автоматическое закрытие всех файлов, открытых в программе. Однако хорошим правилом является явное закрытие файлов процедурой close после окончания работы с ними.

Помимо закрывающей процедуры close, в системе Turbo Pascal также имеется дополнительная процедура Flush (ее параметр - файловая пере­менная). Flush используется для завершения обменов с файлом без его закрытия. Обмены с файлами всегда реализуются через некоторый буфер в оперативной памяти, поэтому в процессе записи на файл последние записываемые элементы могут еще находиться ("застрять") в буфере. Процедура Flush вызывает принудительный сброс этих элементов в файл. Эта процедура имеет смысл в том случае, если с файлом проводились операции записи, и используется редко, так как процедура close произ­водит такие же действия.


Глава 8.  Задание по второй части курсовой работы

В файле содержаться справочные сведенья о предприятиях-задолжниках по уплате налогов

ИНН

Наименование предприятия

Средство на начало года

Начислено налогов в отчет. период

Уплачено налогов в отч. Период

……...

…………..

………………

…………….

………………

…………..

……...

…………..

………………

…………….

………………

…………..

Сведенья на конец отчетного периода

…………………..

……………….

……………

………………

………….

…………………..

……………….

…………….

……………..

………….

         

Тип полей:

№ - тип INTEGER[3]

ИНН – тип STRING[12]

Наименование

Предприятия – тип STRING[20]

Остальные поля – INTEGER

Разработать алгоритм и программу для обработки файла согласно варианту задания

 Вариант №26

Выдать информацию о предприятиях, которые не начисляют налоги в отчетном периоде.

Сведенья выдать в виде таблицы с соответствующим заголовком.

НАПРИМЕР :

 

СВЕДЕНЬЯ О ЗАДОЛЖНИКАХ   >   20 тыс.

Глава 9. Алгоритм второй части курсовой работы


   i:= 0

   max:=0

 
                      

 


 

Глава 10. Основная программа

program part2;

uses crt;

type table = record

n : integer ;

inn : string[12];

Name : string[20];

Sng : integer;

Nop : integer;

Uop : integer;

Skop : integer;

End;

Var

f : file of table;

x : table;

begin

clrscr;

window(45,2,75,7);

textcolor (5) ;

writeln (‘Курсовая работа по информатике ’) ;

writeln (‘Факультет АЭС   группа А-92 ’) ;

writeln (‘студента:    Грязина Д.’) ;

window (1, 1, 80, 25) ;

gotoxy (30, 5) ;

writeln (‘Часть 2’) ;

window(10, 8, 80, 20) ;

writeln (‘В файле table.txt содержатся справочные сведения’) ;

writeln (‘о предприятиях-задолжниках по уплате налогов ’) ;

writeln ;

writeln (‘Задание’) ;

writeln (‘Выдавать полные сведения о предприятиях, которые не  ’) ;

writeln (‘начисляли налоги в отчетный период.’) ;

window(1, 1, 80, 25);

gotoxy(10, 24);

textcolor (4 + blink);

writeln (‘Для продолжения нажмите Enter ’) ;

readln ;

textcolor (10) ;

clrscr ;

assign (f, table.txt) ;

reset (f) ;

writeln (‘Cведения о предприятиях, которые не начисляли ’) ;

writeln (‘налоги в отчетный период ’) ;

writeln (‘+----------------------------------+’) ;

writeln (‘| № | ИНН | Наименование | 1 | 2 | 3 | 4 |’) ;

writeln (‘ | ---+----------+----------------+----+----+----+-----| ’) ;

while not Eof(f) do

begin

read (f, x) ;

with x do

if Nop = 0 then

begin

writeln (‘| ‘№ : 3’ | ‘,Inn : 12,’ | ’,Name : 20,’ | ’ ,Sng :4,’ | ’,Nop : 4,’ | ’,Uop : 4,’|’ ) ;

writeln (Skop : 4, ‘ | ’) ;

end;

end;

writeln (‘+-----------------------------------------------------------------------+’) ;

writeln ;

writeln (‘1- Сведения на начало года ’) ;

writeln (‘2 – Начислено налогов в отчетный период ’) ;

writeln (‘3 – Уплачено налогов в отчетный прериод ’) ;

writeln (‘4 – Сведения на конец отчетного преиода ’) ;

writeln ;

readln ;

end.
Глава 11. Результаты второй части курсовой работы

Сведения о предприятиях которые не начисляли

налоги в отчетный период.

+-----------------------------------------------------------------------+

¦  № ¦    ИНН            ¦ Наименование       ¦ 1   ¦ 2    ¦ 3    ¦ 4     ¦

¦-----+-----------------+------------------------+----+----+----+-----¦

¦  3   ¦ 54090903618  ¦ Детский сад №275¦  -8 ¦   0  ¦   8  ¦   0   ¦

¦ 10  ¦ 54091032618  ¦           Школа №25 ¦  -7 ¦   0  ¦   7  ¦   0   ¦

+------------------------------------------------------------------------+

1 - Сведения на начало года

2 - Начислено налогов в отчетный период

3 - Уплачено налогов в отчетный период

4 - Сведения на конец отчетного периода

Заключение

Полученный мною практический опыт применительно к программированию на ПАСКАЛЕ позволяет использовать эффективное модульное программирование. Кроме того, изучив представленный в курсовом проектировании материал, я приобрел практические навыки использования процедур, функций. Наряду с этим я научился правильно использовать файловые функции операционной системы MS-DOS, что является одним из основных вопросов программирования.

Список использованных источников:

Фаронов В. В., Турбо Паскаль 7.0., Учебное пособие. – М.: «Нолидж», 1999.

Бляшкин И. И. Буров А. А. Новые возможности Турбо Паскаля 6.0. – СПб.: Издательство «Макет»,1992.

Фаронов Н.Н. Програмирование на персональных ЭВМ в среде Турбопаскаль. – М.: Издательство МГТУ, 1990.


Страницы: 1, 2


Новости

Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

  скачать рефераты              скачать рефераты

Новости

скачать рефераты

Обратная связь

Поиск
Обратная связь
Реклама и размещение статей на сайте
© 2010.