Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМК ОАиП.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.14 Mб
Скачать

4. Практическое задание

Методические указания

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

  • Подобрать контрольный пример.

  • После чего приступить к написанию программы в ИСП.

Задание 1

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

Т аблица 12

16. Решение задач по обработке структурированного типа - запись

1. Описание записи

Запись (Record) - это структура (тип данных), предназна­ченная для хранения в оперативной памяти компьютера сложных данных, состоящих из отдельных компонент раз­личных типов, которые называются полями.

Объявление записи можно сделать в разделе или в разде­ле переменных Var или в разделе типов Туре.

Объявление записи в разделе переменных Var имеет сле­дующий вид:

Var < имя записи > : Record

<имя поля 1> : тип;

<имя поля 2>: тип;

……………….

<имя поля n > : тип;

End;

Здесь служебное слово Record (запись) выполняет роль от­крывающей операторной скобки, Endзакрывающей оператор­ной скобки. Внутри операторных скобок описываются имена полей с указанием их типа. Допускается вместо имени поля ука­зывать список имен, то есть имена полей, разделенные запятыми.

Более универсальная форма объявления записи - с ис­пользованием раздела типов Туре:

Туре <имя типа > = Record

<имя поля 1> : тип;

<имя поля 2> : тип;

…………………

<имя поля n> : тип;

End;

Var <имя записи> : <имя типа>;

Пример 1

Информацию об анкетных данных студентов можно представить с помощью следующего набора данных:

- фамилия, имя, отчество;

- дата рождения;

- пол;

- домашний адрес;

- телефон;

Созданную структуру опишем как тип записи Student.

Type Student = Record {Описываем тип записи Student}

FIO : String[20]; {Описываем соответствующие поля}

DenR: 1 ..31;

MecR: l .. 12;

GodR : Integer;

Pol : (M, F);

Adrec: String [50];

Nelefon: String [10];

End;

К аждое поле в записи, как уже говорилось, может иметь любой тип (кроме файлового), в частности может быть запи­сью. Это дает возможность объединять информацию по смыслу:

Type Student = Record

FIO : String[20];

DataR : Record

DenR: 1.31;

MecR: 1..12;

GodR : Integer

End;

Pol: (M, F);

Dom : Record

Adrec : String [50];

Telefon: String [10]

End;

End;

2. Обращение к элементу записи

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

< имя записи >. < имя поля >

Переменные-записи типа Student объявляют в разделе Var так:

Var : studl, stud2 : Student;

В программе можно присвоить, например, такие значения:

studl. FIO : = 'Петров ИгорьИванович';

studl. DataR. MecR : = 22;

studl. DataR. GodR : = 1985;

Задача 1

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

Program Lab16_1;

Uses Crt;

Const STMAX=5;

Type

FIO = Siring [20];

BAL = Array [1 .. 4] Of Integer;

{Структура СТУДЕНТА}

STUDENT = Record SFIO : FIO;

SBAL : BAL

End;

ST = Array [1 .. STMAX] Of STUDENT;

Var S : ST;

f, b : Integer;

two : Boolean;

Begin {1}

ClrScr;

Textcolor( Yellow);

WriteLn('Пporpaммa СТУДЕНТ');

WriteLn ('');

Textcolor (White);

{ФИО студентов}

S [1]. SFIO := 'Иванов В.В.';

S [2]. SFIO : = 'Петров СВ.';

S [3]. SFIO : = 'Сидоров MB.';

S [4]. SFIO : = 'Яковлев К.П.';

S [5]. SFIO : = 'Пастухов Е.Г.1;

{Ввод оценок студентов}

For f: = 1 То STMAX Do

Begin {2}

Writeln ('Введите оценки: ');

Writeln ('Студент -', S [f]. SFIO,'');

For b: = 1 To 4 Do

Begin{3}

Write ('Оценка', b,' : ');

Read (S [i]. SBAL [b]);

End; {3}

End; {2}

{Определение наличия двоек и печать ФИО неуспевающих}

WriteLn (' ');

Textcolor (Lightred);

For f: = 1 То STMAX Do

Begin {4}

two : = False;

For b : = 1 To 4 Do

Begin {5}

If S [f]. SBAL[b]<3

Then two : = True;

End; {5}

If two Then WriteLn ('Неуспевающий: ', S [f]. sfio);

End; {4}

End. {1}

Протокол работы программы:

Программа СТУДЕНТ.

Введите оценки:

Студент - Иванов В.В.

Оценка 1 : 3

Оценка 2 : 4

Оценка 3 : 4

Оценка 4 : 2

Студент - Петров С.В.

Оценка 1 : 4

Оценка 2 : 4

Оценка 3 : 2

Оценка 4 : 4

………………

Студент - Пастухов Е.Г.

Оценка 1 : 5

Оценка 2 : 5

Оценка 3 : 5

Оценка 4 : 5

Неуспевающий : Иванов П.М.

Неуспевающий : Петров СВ.

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

Переменные и константы:

  • SMAX- количество студентов;

  • S- массив записей STUDENT;

  • FIO- переменная ФИО строкового типа;

  • Bal — массив оценок размерностью четыре;

  • STUDENT— переменна типа запись;

  • f, b — переменные циклов;

  • two — вспомогательная логическая переменная.

Описываем переменные, далее заполняем массив S запи­сями в два этапа:

a) заполняем ФИО с помощью оператора присваивания;

b) заполняем массив оценок в цикле с помощью опера­тора ввода Read.

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

  • Внешний цикл - просмотр массива записей S [1 .. STMAX] и анализ логической переменной two. Если two = True, то печать фамилии неуспевающего студента.

  • Внутренний цикл - просмотр массива оценок BAL для выявления неуспевающих. Перед входом в цикл логической переменной two присваивается значение False. Если выявляется неудовлетворительная оценка, то two присваивается True.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]