русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Составление программ с использованием типа “Запись”.


Дата добавления: 2014-11-28; просмотров: 3391; Нарушение авторских прав


Теория.

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

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

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

Анкета студента:

1) Фамилия, Имя, Отчество;

2) Пол;

3) Дата рождения;

4) Адрес;

5) Курс;

6) Группа;

В Паскале эта информация может храниться в одной переменной типа Запись. Задать тип и описать соответствующую переменную можно следующим образом:

Type имя типа=record;

поле 1:тип;

поле 2:тип;

поле n:тип;

End;

Пр. Type anketa=Record;

FIO:String[50];

Pol:Char;

Dat:String[16];

Adres:String[50];

Curs:integer;

Grup:string[5];

End;

Var student:anketa;

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

Например: student.fio, student.dat и т.п. Если, например полю курс присвоить значение 3, то это можно сделать следующим образом:

Student.Curs:=3;

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

Любая обработка записей, в том числе ввод и вывод, производится поэлементно.

Например, ввод сведений о 500 студентах можно организовать следующим образом:

For i:=1 to 500 do

With Student [i] do

Begin

Write (‘Ф.И.О.’); Readln (FIO);

Write (‘Пол (м/ж)’); Readln (Pol);

Write (‘Дата рождения’); Readln (Dat);

Write (‘Адрес‘); Readln (Adres);



Write (‘Курс‘); Readln (Curs);

Write (‘Группа’); Readln (Grup);

End;

В этом примере использован оператор присоединения, который имеет следующий вид:

 

With имя переменной типа запись do

Begin

Действия

End;

 

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

Примеры задач.

1. В группе 30 студентов. О каждом студенте известно: фамилия и оценки по 8 предметам. Найти среднюю оценку каждого студента и выдать на экран среднюю оценку и фамилию лучшего студента.

Program zapis;

Const n=30;

Type sved=record;

fio:string[50];

p1, p2, p3, p4, p5, p6, p7, p8:integer;

ocsr:real;

End;

Var s:array[1..n] of sved;

i,k: integer;

max: real;

Begin

writeln(‘введите данные о ’,n,‘ студентах’);

For i:=1 to n do

With spisok [i] do

Begin

Writeln (‘введите фамилию ученика‘);

Readln (famil);

Writeln (‘введите оценки по восьми предметам’);

Readln (p1, p2, p3, p4, p5, p6, p7, p8);

Clrscr;

End;

{нахождение среднего балла }

for i:=1 to n do

with s[i] do

ocsr:=(p1+p2+p3+p4+p5+p6+p7+p8)/8;

{нахождение максимального среднего балла}

max:=s[1].ocsr;

for i:=1 to n do

if s[i].ocsr>max

then

begin

max:=s[i].ocsr;

k:=i

end;

{печать сведений о лучшем ученике}

writeln(‘Лучший ученик’)

writeln (‘ФИО - ’,s[k].fio,‘ средний балл - ’ ,s[k].ocsr);

end.

2. Составить программу, которая позволит ввести данные о 10 автомобилях предприятия (марка, цвет, пробег, год выпуска, водитель) и выдаст сведения об автомобилях, старше 10 лет.

Program Avto;

Const n=10;

Type mash=record;

marka:string[25];

cvet:string[15];

probeg:real;

god_vip:integer;

voditel:string[25];

End;

Var s:array [1.. n] of mash;

i:integer;

Begin

writeln (‘Введите данные о ’,n,‘ автомобилях’);

for i:=1 to n do

with s[i] do

begin

write(‘введите марку автомобиля‘); readln(marka);

write(‘введите цвет автомобиля’); readln(cvet);

write(‘введите пробег автомобиля’); readln(probeg);

write(‘введите год выпуска’); readln(god_vip);

write(‘введите фамилию водителя’); readln(voditel);

end;

writeln(‘автомобили старше 10 лет’);

for i:=1 to n do

begin

with s[i] do

begin

if 2011-god_vip>10

then

begin

writeln (‘марка машины - ’,marka);

writeln (‘цвет машины - ’,cvet);

writeln (‘пробег - ’,probeg);

writeln (‘водитель - ’,voditel);

end;

end;

end;

End.

 

 

3. Составить программу, которая позволяет ввести данные о 15 деталях, находящихся на складе (название, количество, стоимость одной детали). Вывести название и количество самой дорогой детали.

Program detali;

Const n=15;

Type detal=record;

nazv:string[25];

kol:integer;

cena:real;

End;

Var s:array [1.. n] of detal;

i,k:integer;

max:real;

Begin

writeln (‘Введите данные о ’,n,‘ деталях’);

for i:=1 to n do

with s[i] do

begin

write(‘введите название детали’); readln(nazv);

write(‘введите количество этой детали на складе’); readln(kol);

write(‘введите цену 1-й детали’); readln(cena);

end;

max:=s[1].cena;

k:=1;

for i:=1 to n do

begin

with s[i] do

begin

if cena>max

then

begin

max:=cena;

k:=i

end;

end;

end;

writeln(‘самая дорогая деталь’);

writeln (‘название - ’,s[k].nazv);

writeln (‘количество - ’,s[k].kol);

End.

 

 

4. Составить программу, которая позволяет ввести данные о 20 кубиках (цвет, материал, длина ребра). Сосчитать количество кубиков с длиной ребра меньше 5 см.

Program kubiki;

Const n=20;

Type kub=record;

cvet:string[25];

material:string[25];

dlina_rebra:real;

End;

Var s:array [1.. n] of kub;

i,k:integer;

Begin

writeln (‘Введите данные о ’,n,‘ кубиках’);

for i:=1 to n do

with s[i] do

begin

write(‘введите цвет кубика’); readln(cvet);

write(‘введите материал, из которого изготовлен’); readln(material);

write(‘введите длину ребра’); readln(dlina_rebra);

end;

k:=0;

for i:=1 to n do

with s[i] do

begin

if dlina_rebra<5

then k:=k+1

end;

writeln(‘количество кубиков с длиной ребра меньше 5 см. =’,k);

End.

 

 

Задания.

Студенты решают задачи на компьютерах по вариантам с помощью среды программирования PascalABC.

 

Вариант 1

1. Известны данные о 5 пассажирах: ФИО, количество вещей и общий вес вещей. Вывести ФИО и количество вещей пассажира с максимальным общим весом вещей.

2. Известны данные о 5 студентах: ФИО, рост и вес. Вывести ФИО и вес всех студентов, которые ниже 180 см.

3. Известны данные о 5 кубиках: цвет, материал и длина ребра. Сосчитать количество красных кубиков.

Вариант 2

1. Известны данные о 5 мячиках: цвет и радиус. Вывести цвет самого маленького мячика.

2. Известны данные о 5 спортсменах: ФИО, возраст и вид спорта. Вывести ФИО и возраст тех спортсменов, которые занимаются плаванием.

3. Известны данные о 5 рабочих: ФИО, стаж, оклад. Сосчитать количество рабочих с окладом больше 15 000 рублей.

 

Вариант 3

 

1. Известны данные о 5 сортах конфет: название, цена и фабрика изготовитель. Вывести название и фабрику изготовитель самых дорогих конфет.

2. Известны данные о 5 студентах: ФИО, год рождения и специальность. Вывести ФИО и специальность тех студентов, которые родились после 1994 года.

3. Известны данные о 5 пассажирах: ФИО, количество вещей и общий вес вещей. Сосчитать количество пассажиров с количеством вещей больше 2.

 

Вариант 4

 

1. Известны данные о 5 кубиках: цвет, материал и длина ребра. Вывести цвет и материал самого маленького кубика.

2. Известны данные о 5 учениках музыкальной школы: ФИО, класс, инструмент. Вывести ФИО и класс тех из них, кто занимается игрой на скрипке.

3. Известны данные о 5 спортсменах: ФИО, возраст, вид спорта. Сосчитать количество спортсменов младше 20 лет.

 

 




<== предыдущая лекция | следующая лекция ==>
Практическая работа №8. | Практическая работа №10.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 1.122 сек.