Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
информатика метод указания.pdf
Скачиваний:
80
Добавлен:
26.07.2016
Размер:
951.4 Кб
Скачать

4

Индекс

i

Program word_text2; var text,word1,word2:string; i:integer;

begin

writeln(‘Введите исходный текст’); readln text);

writeln(‘Введите первое слово’); readln(word1);

writeln(‘Введите второе слово’); readln(word2);

repeat i:=pos(word1,text) if i<>0 then begin

delete(text,i,length(word1));

insert(word2,text,i);

end; until i=0;

writeln(‘Преобразованный текст’); writeln(text);

readln;

end.

Самоконтроль

1.Какие типы данных используются для обработки текста?

2.Сколько байт памяти занимает символьная переменная?

3.Какие операции допустимы над символьными переменными?

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

5.Что такое строка?

6.Сколько байт памяти занимает строковая переменная?

7.Какие операции допустимы над строковыми переменными?

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

9.Как можно обратиться к отдельным символам строки?

16.Структурированные типы данных

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

104

Записи

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

Запись состоит из нескольких полей, для каждого из которых при объявлении (описании) указывается имя и тип.

Например: type

student = record; {запись} surname : string[20];

year : integer; bal : real;

end; {завершает список полей} var

st:student;

Сформирован пользовательский тип данных – student, он базируется на стандартных типах

(string, integer,real).

Переменная st - имеет тип student (запись), состоит из 3-х полей: surname – фамилия студента;

year – год рождения; bal – средний бал.

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

st.surname:='Иванов'; st.year:=1905; st.bal:=4.5;

Для уменьшения записи обращения к отдельным полям используют оператор with … do Например:

with st do begin

surname:='Иванов'; year:= 1905; bal:=4.5;

end;

Для обработки большого объема информации комбинированного типа целесообразно строить массивы записей, где каждый элемент массива – запись, состоящая из нескольких полей разного типа.

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

type

student = record; {запись} surname : string[20];

year : integer; bal : real;

105

end; var

st:array[ 1..25 ] of student;

st – массив записей. Каждый элемент массива(St[i])содержит информацию об одном студенте:

St[i].surname – фамилия; St[i].year - год рождения; St[i].bal - средний бал.

Задача.

Создать массив записей, содержащий информацию о студентах группы. Каждая запись содержит поля – фамилия, год рождения, пол. Подсчитать средний возраст студентов мужского пола группы.

Таблица идентификаторов

Наименование переменной

Обозначения в программе

1

Имя массива

st

 

 

 

2

Количество студентов

n

 

 

 

3

Индекс массива

i

 

 

 

4

Средний возраст

p

5

Количество мужчин

k

6

Текущий год

t

program rec; uses crt; type

student = record; {запись} surname : string[20];

year : integer; pol : char; end;

var

st:array[ 1..30 ] of student; i,n,t:integer; p:real;

begin clrscr;

writeln(‘Введите текущий год’); readln(t)

writeln(‘Введите количество студентов’); readln(n)

for i:=1 to n do

106

with st[i] do begin

writeln(‘Сведения о ’,i,‘ студенте’); writeln(‘Введите фамилию’); readln(surname); writeln(‘Введите год рождения’); readln(year); writeln(‘Введите средний бал’); readln(bal); end;

p:=0;

for i:=1 to n do begin

if st[i].pol=’m’ then begin p:=p+(t-st[i].year); k:=k+1;

end;

writeln(‘Средний возраст мужчин =’,(p/k):8:3 ); readln;

end.

Самоконтроль

1.В чем состоит основное преимущество записи?

2.Почему записи называют комбинированным типом записи?

3.Чем записи отличаются от массивов?

4.Что называется полем записи?

5.Какие требования предъявляются к идентификаторам поля записи?

6.Как определить объем памяти, требуемый для размещения записи?

7.С какой целью при обращении к полю записи используется оператор with … do?

Задание

ответить на вопросы самоконтроля;

выполнить индивидуальное задание (ИДЗ №2), на примере программы использования массива записей. ИДЗ №2 выбрать из таблицы по номеру варианта (Приложение 2).

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

1.Титульный лист (Приложение 1).

2.Формулировка задачи:

Создать массив записей, содержащий сведения о сотрудниках фирмы. Каждая запись содержит поля – фамилия сотрудника, наименование отдела, оклад, трудовой стаж. Написать программу, выдающую следующую информацию:

107

список сотрудников отдела Х с указанием оклада и трудового стажа;

подсчитать среднюю заработную плату сотрудников отдела Х. Название отдела Х вводится по запросу с клавиатуры.

3.Таблица идентификаторов

 

Наименование переменной

Обозначения в

Тип переменной

 

 

 

программе

 

 

 

 

 

 

1

 

Имя массива

f

record

 

 

 

 

(запись)

 

 

 

 

 

2

 

Количество сотрудников

n

integer

 

 

 

 

 

3

 

Поле фамилия

surname

string

 

 

 

 

 

4

 

Поле отдел

otdel

string

5

 

Поле оклад

oklad

real

6

 

Поле стаж

Stag

integer

7

 

Средняя зарплата

Sred

real

8

 

Отдел поиска Х

X

string

9

 

Количество сотрудников в отделе

K

integer

 

 

Х

 

 

 

 

 

 

 

10

 

Индексы массива

i

integer

 

 

 

 

 

4.

Листинг программы

 

 

program rec_1; uses crt;

type

firma = record; {запись} surname : string[20]; otdel : string[20];

oklad : real; Stag : integer; end;

var

f:array[ 1..30 ] of firma; {массив записей} X:string[20];

i,n,k:integer;

sred:real; begin clrscr;

writeln(‘Введите n’); readln(n); writeln(‘Введите информацию о сотрудниках’); for i:=1 to n do

with f[i] do begin

writeln(‘Введите фамилию ’); readln(surname);

108

writeln(‘Введите отдел ’); readln(otdel); writeln(‘Введите оклад ’); readln(oklad); writeln(‘Введите стаж ’); readln(Stag); end;

writeln(‘Введите название отдела’); readln(X); sred:=0; k:=0;

writeln(‘Список сотрудников отдела ’,X); for i:=1 to n do

if f[i].otdel=X then begin

writeln(f[i].surname,’ ‘,f[i].oklad:8:3); sred:=sred+f[i].oklad;

k:=k+1;

end;

writeln(‘Средняя зарплата отдела=’,(sred/k):8:3); readln;

end.

5. Результаты вычислений

109

Соседние файлы в предмете Информатика