Лекции по "Языкам и методам программирования" (PascalABC)

Автор: Пользователь скрыл имя, 07 Марта 2013 в 02:12, курс лекций

Описание работы

Лекция 1. Представление алгоритмов на языке Программирования ПаскальАВС.
Лекция 2. Построение линейных алгоритмов
Лекция 3. Алгоритмы, содержащие структуру ветвления.
Лекция 4. Алгоритмы, содержащие структурные операторы циклов.
...
Лекция 9. Файловый тип данных

Работа содержит 10 файлов

Лекция 1.Представление алгоритмов на языке программирования Паскаль..doc

— 120.50 Кб (Открыть, Скачать)

Лекция 10. Интуитивное понятие алгоритма.doc

— 366.50 Кб (Открыть, Скачать)

Лекция 2. Построение линейных алгоритмов.doc

— 209.50 Кб (Открыть, Скачать)

Лекция 3. Алгоритмы, содержащие структуру ветвления..doc

— 68.00 Кб (Открыть, Скачать)

Лекция 4. Алгоритмы, содержание циклы.doc

— 343.50 Кб (Открыть, Скачать)

Лекция 5.Процедуры и функции пользователя..doc

— 95.50 Кб (Открыть, Скачать)

Лекция 6. Символьные и строковые переменные.doc

— 69.00 Кб (Открыть, Скачать)

Лекция 7.Структурный тип данных (массивы).doc

— 128.50 Кб (Открыть, Скачать)

Лекция 8.Комбинированный тип данных.doc

— 62.00 Кб (Скачать)

Лекция 8.

Комбинированный тип данных

В лекции рассматриваются  следующие вопросы:

1.Понятие записи и  поля записи.

2.Объявление типа и  переменных этого типа.

3.Массивы записей.

4.Оператор над  записями.

5.Примеры решения  задач с использованием массивов  записей.

 

1.Понятие записи  и поля записи

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

 

2.Объявление  типа и переменных этого типа

Формат объявления комбинированного типа следующий:

 

1 способ

Type

    Имя комбинированного  типа = record

              Имя поля 1: тип компонентов поля 1;

                       .          .            .           .            .

              Имя поля N : тип компонентов поляN;

                                                          End;

Var

      Имя записи : Имя комбинированного типа;

2 способ

Var

     Имя записи : record

              Имя поля 1: тип компонентов поля 1;

                . . .

              Имя поля N : тип компонентов поляN;

                            End;


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

Пример. Рассмотрим запись, которая состоит из следующих  компонент: фамилия студента, день, месяц и год рождения, домашний адрес и телефон. Такую запись можно объявить следующим образом:

Type

    Student = Record

                     Fio, Adres, Telefon : String;

                     Den, Mes, God : Integer;

                      End;

Var   a: Student;

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

Формат объявления переменной типа запись обозначает только структуру  этой перменной. Чтобы записи присвоить  какое-то значение, необходимо присвоить значения всем полям этой записи. Обращение к отдельному полю происходит по следующему формату:

 

Имя записи.Имя поля


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

Задача. Даны две простые дроби a/b и c/d. Представить их в виде записи и найти сумму. Если можно, то сократить полученную простую дробь.

Решение. Простую дробь можно представить в виде записи, у которой будет два поля: одно – это числитель простой дроби, второе поле – это знаменатель простой дроби. Оба поля будут иметь целый тип.

Program а4;

Type

   dr = Record

          ch,zn: Integer;

          End;

Var  x,y,s:dr;

{Процедура нахождения наибольшего общего делителя двух чисел. Такая процедура нам понадобится для сокращения полученной дроби}

Procedure NOD(a,b:Integer: Var d:Integer);

  Begin

  While a<>b do If a>b Then a:=a-b Else b:=b-a;

  D:=a;

End;

Begin

   {Ввод исходных данных}

  Writeln(‘Ввести числитель и знаменатель первой дроби х’);

   Readln(x.ch, x.zn);

   Writeln('Ввести числитель и знаменатель второй дроби y');

   Readln(y.ch, y.zn);

   {Нахождение суммы двух дробей s=x+y}

   s.ch:=x.ch*y.zn+y.ch*x.zn;

   s.zn:=x.zn*y.zn

{Вывод полученной дроби без сокращения}

   Writeln(x.ch,’/’,x.zn,’+’,y.ch,’/’,y.zn,’=’,

           s.ch,’/’,s.zn,’=’);

   Nod(s.ch,s.zn,n); {обращение к процедуре}

{делим отдельно числитель и  знаменатель полученной дроби  на наибольший общий делитель}

   s.ch:=s.ch div n;

   s.zn:=s.zn div n;

{вывод сокращенной дроби с  той же строке}

   Write(s.ch,’/’,s,zn);

Writeln; 

Еnd.

 

3.Массивы  записей

Из записей можно составлять массивы.

Задача. Дан список городов и количество жителей в каждом городе. Вывести названия тех городов, количество жителей которых более 100 тысяч человек.

Решение. Один город можно представить в виде записи с полями: название и количество жителей. Поскольку городов несколько, то они образуют массив.

Program а43;

Type

{в разделе объявлений сначала  необходимо объявить тип записи, а затем тип массива, т.к. он состоит из типа записей}

   gor = Record

         nazw: String[20];         

         kol: Integer;

          End;

   Mas=array[1..100] of gor;

Var  g:mas;

     N,i:Integer;

Begin

   {Ввод исходных данных}

   Writeln(‘Ввести количество городов’);

   Readln(n);

{вводится значение  каждого поля для каждой записи}

   For i:=1 to n do

     Begin

     Writeln('Ввести название',I,’города’);

     Readln(g[i].nazw);

     Writeln('Ввести  количество жителей ', I, ’города’);

     Readln(g[i].kol);

     End;

{Сначала выведем заголовок  таблицы, в которой будут находиться  названия городов и количество  жителей в каждом городе, т.е.  вывод всех исходных данных}

Writeln(‘ название города    количество жителей’);

{Вывод городов и  количество их жителей}

For i:=1 to n do Writeln(g[i].nazw:20,g[i].kol:10);

{Вывод названия тех  городов, у которых количество  жителей более 100 тысяч}

Writeln(‘Ответ’);

For i:=1 to n do

   If g[i].kol>100 Then writeln(g[i].nazw);

Writeln; 

Readln;  

End.

 

4.Оператор  над записями

Обращение к  полям записи имеет громозкий  вид. Это не всегда удобно, особенно, если имя записи длинное слово. Чтобы  сократить такую запись, введен специальный оператор, который называется оператор над записями. Формат такого оператора следующий:

 

 

With Имя записи do Begin операторы End;


Один раз  указав в этом операторе имя записи, далее с названиями полей  этой записи можно работать как с простыми переменными.

 

5.Примеры  решения задач с использованием  массивов записей

Задача. Имеется  следующая таблица:

Материал

Плотность кг/м3

Температура плавления

Алюминий

2700

657

Вольфрам

19300

390

Медь

8900

1083

Свинец

11300

327

Олово

7300

232

Цинк

7100

419


Найти и вывести  названия материалов с наибольшей плотностью и наименьшей температурой плавления.

Решение. Каждую строку этой таблицы представим в  виде записи, у которой три поля: название, плотность и температура, а из записей составим массив.

Program а5;

Type

{объявление типа запись}

   mat = Record

         nazw: String[20];         

          pl, temp: Integer;

          End;

{объяление типа массив  из записей}

   Mas=array[1..100] of mat;

{объявление простых  переменных}

Var  m:mas;

     n,i:Integer;

Begin

   {Ввод исходных данных}

   Writeln(‘Ввести количество материалов’);

   Readln(n);

   For i:=1 to n do

     With m[i] do

     Begin

     Writeln('Ввести название',I,’материала’);

     Readln(nazw);

     Writeln('Ввести  плотность ',I,’материала’);

     Readln(pl);

     Writeln(‘Ввести температуру плавления’,I,’материала’);

     Readln(temp);

     End;

{вывод на экран  заголовка таблицы, в которой  будет помещен исходный массив}

Writeln(‘ название материала    плотность температура плавления’);

{Вывод на экран  введенного массива}

For i:=1 to n do

   With m[i] do Begin

             Writeln(nazw:20,pl:10,temp:10);

             End;

{Нахождение материала  с наибольшей плотностью }

Max:=m[1].pl; Nom1:=1;

For i:=2 to n do

    With m[i] do {использования оператора над записями}

        Begin

        If pl>max Then Begin max:=pl, nom1:=I;End;

        End;

Writeln(‘Материал c наибольшей плотностью’,m[nom1].nazw);

{Нахождение материала  с наименьшей температурой плавления}

Min:=m[1].temp; Nom2:=1;

For i:=2 to n do

    With m[i] do

         Begin

         If temp<min 

               Then Begin min:=temp, nom2:=I;End;

         End;

Writeln(‘Материал с наименьшей температурой плавления’, m[nom2].nazw);

Writeln; 

Readln;  

End.




Лекция 9.Файловый тип данных.doc

— 114.50 Кб (Открыть, Скачать)

Информация о работе Лекции по "Языкам и методам программирования" (PascalABC)