Паскаль язык профессионального программирования

2









                  

МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ 

ОРЛОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ 

ФИЛИАЛ В г. БРАТСКЕ









Информатика и программирование





















Курсовая работа

















Выполнил:

Студент гр. ПИ-03-Дн                                                        	 









Научный руководитель:

С.т. преподаватель                                                                     

















Братск 2004



Введение

Паскаль – язык профессионального программирования, который назван в честь французского математика и философа Блеза Паскаля (1623–1662) и разработан в 1968–1971 гг. Никлаусом Виртом, для обучения студентов методам разработки программ, таким как "программирование сверху вниз", "структурное программирование" и т. д. Вирту не понравился не один из существующих на тот момент языков, и в 1968 году он приступил к разработке своего собственного. Первая версия языка была создана для компьютера CDC 6000.Благодаря своей четкости, логичности и другим особенностям Паскаль надолго занял свою нишу, являясь прекрасным языком для обучения программированию. Паскаль использовался и для разработки серьезных программ- приложений. Шутили, что Вирт разработал игрушку, но многие отнеслись к ней слишком серьезно

     Впоследствии появились различные версии языка и его расширения. Наиболее известным расширением стал пакет Турбо Паскаль фирмы Borland, появившийся в 1983 году и сразу ставший событием в мире компьютерных технологий.  

Турбо Паскаль – это система программирования, созданная для повышения качества и скорости разработки программ (80-е гг.). Слово Турбо в названии системы программирования – это отражение торговой марки фирмы-разработчика Borland International (США).

Систему программирования Турбо Паскаль называют интегрированной (integration – объединение отдельных элементов в единое целое) средой программирования, т.к. она включает в себя редактор, компилятор, отладчик, имеет сервисные возможности.

Первое упоминание о нем содержалось в рекламе опубликованной в журнале Byte, а сам пакет предназначен для операционной системы CP/M. В начале 1984 года он был перенесен в среду MS-DOS и приобрел огромную популярность. С тех пор появилось несколько версий Турбо Паскаля, последняя- седьмая.









Преобразование и построение матриц.

Массив – это совокупность объектов, состоящая из фиксированного упорядоченного числа элементов, имеющих один и тот же тип.

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

Элементы, образующие массив, упорядочены таким образом, что каждому элементу соответствует номер (индекс), определяющий его местоположение в общей последовательности. Доступ к каждому элементу осуществляется путём индексирования.

Для описания массива используется словосочетание array of (массив из) и имеет вид: 

	array [тип индекса] of <тип> 

Тип индекса – любой порядковый номер, определяющий границы изменения значений индекса.

Описание массива задается следующим образом:

<имя типа> = array [тип индекса] of <тип данных>;

      mas=array [1..m] of integer;	{массив из m целых чисел}

      digit = array [0 .. 9] of char;	{массив десяти символов, имеющих порядковые номера от 0 до 9}

      matrix = array [byte] of string;	{массив 256 строк, пронумерованных с 0 до 255}

Тип данных – это числа среди которых бывают константы и переменные. Они могут быть различных типов:

целые числа (byte, shortInt, word, integer, longInt);

действительные числа (real);

символьный тип чисел (char);

строковый тип чисел (string);

логический тип чисел (boolean);

сложные типы чисел (комбинированный (record), множественный (set) и другие).

. Количество элементов называется размером массива. Тип элементов определяет тип массива. Размер и тип массива указываются при его описании, причем размер может быть указан либо конкретным значением, либо ранее определенной константой. Номер элемента называется индексом. Индексы могут быть целыми положительными константами или целыми переменными. Чтобы обратиться к некоторому элементу массива, нужно рядом с идентификатором массива в скобках указать индекс элемента.

Но часто данные могут быть организованы в виде таблицы (матрицы), где расположение каждой переменной определяется номером строки и номером столбца. Например, место в зрительном зале задается указанием номера ряда и номером места в этом ряду. Такие данные удобно описать как двумерный массив. В отличие от одномерного массива каждому элементу двумерного массива соответствует пара индексов. Первый индекс – это номер строки, а второй – номер столбца, где расположен элемент массива.

Размер двумерного массива задается парой чисел: M*N, где M – число строк, а N – число столбцов в таблице.

Пусть задан двумерный массив Matr, имеющий размер 10*20. Этот массив на языке Паскаль может быть описан следующим образом:

Var

    Matr : array [1..10,1..20] of integer;

тогда

Matr[5,7] – элемент, расположенный в 5-ой строке и в 7-ом столбце.

Любая константа, переменная, значение функции или выражения в Турбо Паскале характеризуется своим типом. Тип любого из этих объектов определяет множество допустимых значений, которые может иметь объект, а также множество допустимых операций, которые применимы к объекту. Кроме того, тип определяет и формат внутреннего представления значения объекта.

Отличительной особенностью массивов является то обстоятельство, что все их компоненты суть данные одного типа (возможно, структурированного); эти компоненты можно легко упорядочить и обеспечить доступ к любому из них простым указанием его порядкового номера

Цель задания:



	Даны целочисленная матрица размера nx3, целые числа k, l (1<=k<=n,  1<=l<=n, k ≠1). Преобразовать матрицу так , чтобы строка с исходным номером k непосредственно следовала за строкой с исходным номером l, сохранив порядок следования остальных строк.

Блок схема:





Решение:



Program perestanovka;

Uses Crt;

Var a: array[1..5,1..3] of integer;

    i,j,k,l,n,t:integer;

Begin

   writeln('Введите число');

   readln(n);

   ClrScr;

   for i:=1 to n do

    Begin

     for j:=1 to 3 do

      Begin

       writeln('Введите число:');

       readln(a[i,j]);

      End;

    End;

    writeln('Исходный массив');

    for i:=1 to n do

    Begin

     for j:=1 to 3 do

      write(a[i,j]:4);

     writeln;

    End;

    writeln;

    write('k=');

    readln(k);

    write('l=');

    readln(l);

    if k<l then

       Begin

        for i:=k to l-1 do

         Begin

          for j:=1 to 3 do

           Begin

            t:=a[i,j];

            a[i,j]:=a[i+1,j];

            a[i+1,j]:=t;

           End;

         End;

        End

    else

     Begin

      for i:=k downto l+2 do

         Begin

          for j:=1 to 3 do

           Begin

            t:=a[i,j];

            a[i,j]:=a[i-1,j];

            a[i-1,j]:=t;

           End;

         End;

        End;

    writeln('Перестановленный массив');

    for i:=1 to n do

     Begin

      for j:=1 to 3 do

       write (a[i,j]:4);

      writeln;

     End;

 End.

Работа с комбинированными типами данных.



Цель задания:

Получение навыков в организации ввода/вывода значений комбинированных типов данных.

Получение практических навыков программирования задач с использованием записей.

1.1ДАННЫЕ - информация, представленная в формализованном виде, что обеспечивает возможность ее хранения, обработки и передачи.



Программы на языке Паскаль имеют блочную структуру:

1) Блок типа PROGRAM – имеет имя, состоящее только из латинских букв и цифр. Его присутствие не обязательно, но рекомендуется записывать для быстрого распознавания нужной программы среди других листингов.

2) Программный блок, состоящий в общем случае из 7 разделов:

•раздел описания модулей (uses);

•раздел описания меток (label); 

•раздел описания констант (const);

•раздел описания типов данных (type);

•раздел описания переменных (var);

•раздел описания процедур и функций;

•раздел описания операторов.	

Общая структура программы на языке Паскаль следующая:

	Рrogram ИМЯ..; 	{заголовок программы}

	Uses ...;			{раздел описания модулей}

	Var ..; 		{раздел объявления переменных}

	  ...

	Begin		{начало исполнительной части программы}

	  ...		{последовательность

	  ...		  операторов}

	End.		{конец программы}



2.1 Постановка задания:



Составить список  учебной группы, включающей 25 человек. Для каждого студента указать дату рождения, год поступления в институт, курс, группу, оценки каждого года обучения. Информацию о каждом учащемся оформить в программе в виде записи. Совокупность записей объединить в массив.

Составить программу, которая обеспечивает ввод полученной информации, распечатку её в виде таблицы, а также распечатку информации согласно конкретному варианту.



Вариант: Упорядочить список студентов по среднему балу и распечатать его.



Решение:



Program spisok_grupp;

Uses Crt ;

Const kurs=3;

Const kol=5;

Type

sved=record

famil:string[25];

datar:string[8];

god: integer;

gruppa: integer;

ocenki:array[1..3,1..5] of integer;

srball:array[1..25] of real;

End;

Var

   spisok: array[1..25] of sved;

   i,i1,j, s,mesto,n,g:integer;

   max,t:real;

   q:string[25];

Begin

 ClrScr;

 writeln('Введите количество учеников');

 readln(n);

 for i:=1 to n do

   With spisok[i] do

     Begin

      Writeln ('Фамилия ',i,' студента');

      Readln (famil);

      Writeln('Дата рождения');

      Readln (datar);

      Writeln ('Год поступления');

      Readln (god);

      Writeln ('Группа');

      Readln (gruppa);

      s:=0;

     for i1:=1 to kurs  do

      begin

       writeln('Оценки ',i1,' года');

        for j:=1 to kol do

         Begin

          Writeln (j,' Предмет');

          Readln (ocenki[i1,j]);

          s:=s+ocenki[i1,j];

         End;

      end;

        srball[i]:=s/(kol*kurs);

      ClrScr;

     End;

    writeln('Фамилия':8,'Дата рождения':16,'Год поступления':18,'Курс':7,'Группа':8);

    for i:=1 to n do

      begin

       with spisok[i] do write(famil:8,datar:16,god:18,kurs:7,gruppa:8);

       writeln;

       writeln;

        for g:=1 to kurs do

         begin

         write(g,' год:');

          for j:=1 to kol do

            with spisok[i] do write(ocenki[g,j]:4);

          writeln;

        end;



       with spisok[i] do writeln('Средний бал =',srball[i]:6:2);

       writeln;

      end;



   writeln;

    writeln('По порядку');

    for j:=1 to  n do

     Begin

      max:=spisok[j].srball[j];

      mesto:=j;

       for i:=j to n do

        if spisok[i].srball[i]<=max then

          Begin

            max:=spisok[i].srball[i];

            mesto:=i;

          End;



     t:=spisok[j].srball[j];

     spisok[j].srball[j]:=spisok[mesto].srball[mesto];

     spisok[mesto].srball[mesto]:=t;



     q:=spisok[j].famil;

     spisok[j].famil:=spisok[mesto].famil;

     spisok[mesto].famil:=q;



      with spisok[j] do writeln(famil:8,srball[j]:6:2);

     End;

End.





Работа с файлами.

Цель задания:

Изучение файловых типов.

Получение практических навыков работы с файлами.

ФАЙЛ (от англ. file, основные значения), совокупность упорядоченных и взаимосвязанных записей, имеющая описание для идентификации отдельных записей.

Язык Турбо Паскаль предлагает три вида такого представления:

- типизированные файлы,

- текстовые файлы,

- нетипизированные файлы.

Типизированный файл – последовательность элементов одного типа. 

Текстовый файл – файлы символьных данных. Текстовые файлы имеют тип text.

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

Для работы с файлами используются следующие функции:

Assign – функция, ассоциирующая имя файла с некоторой переменной, с которой и идет последующая работа.

Reset – функция, открывающая уже существующий файл для чтения из него.

Rewrite – функция, создающая новый файл, или перезаписывающая старый.

Readln – чтение из указанного файла строки с переходом на следующую строку.

Writeln – запись в указанный файл строки с переходом на следующую строку.

Вообще, файл рассматривается не просто как несколько строк, а как запись (record), что значительно упрощает работу с файлами.

Поставленная задача:

Подготовить данные и организовать ввод данных в файл. Организовать чтение файла и вывод нужной информации.

Дан файл f, содержащий различные даты. Каждая дата – это число, месяц и год. Год с наименьшим номером.



Решение:

program spisok;

uses crt;

var f:text;

    name,txt,s,a: string;

    s1,min,y:integer;

begin

clrscr;

write('Введите имя файла для записи текста:');

readln(name);

writeln;

assign(f,name);

rewrite(f);

repeat

 write('введите дату:');

 readln(txt);

 writeln(f,txt);

until txt='';

close (f);

writeln;



reset (f);

min:= 9999;

while not eof(f) do

 Begin

  readln (f,a);

  s:=copy(a,7,4);

  val(s,s1,y);

  if (s1<min) and (s1<>0) then min:=s1;

 end;

writeln('наименьший год:',min);

close (f);

end.