PascalABC.NET Записи, множества и строки
1.37M
Категория: ПрограммированиеПрограммирование

Лабароторная_№11а_Множество,_записи_и_строки_в_PascalABC_NET

1. PascalABC.NET Записи, множества и строки

Лабораторная
работа № 11
PASCALABC.NET
ЗАПИСИ, МНОЖЕСТВА И СТРОКИ
Дисциплина:
«Основы алгоритмизации и программирования.»
Преподаватель: Шадрин Валерий Георгиевич

2.

Порядок выполнения лабораторной работы.
1. Открыть рабочею папку Ваших работ на рабочем столе :
Sol_Pascal
группа
Фамилия
2. Скачать из папки преподавателя работу:
«лабораторная работа №11»
с методическим материалом, с заданием и примерами для
выполнения лабораторной работы.
3. Изучить методический материал и задание для
выполнения Лабораторной работы
4. Выполнить вначале Контрольные задания, затем задание
для лабораторной и ответить на контрольные вопросы
Сохранить все результаты в созданной Вами папке :
Sol_Pascal
группа
Фамилия
2

3.

Структурированные типы данных
Цель работы: изучить структуры данных: записи (record), множества (set) и
строки (string) в PascalABC; научиться применять их для решения практических
задач.
Любая программа работает с данными. Простые типы (целые, вещественные, символьные,
логические) часто недостаточны для моделирования объектов реального мира. Например, как
одним идентификатором описать студента (ФИО, группа, оценки, дата рождения)? Для этого
нужны структурированные типы, которые объединяют несколько элементов, возможно, разных
типов.
Рассмотрим три таких типа, фундаментальных для Паскаля:
1. Записи (Record) – для описания комплексных объектов.
2. Множества (Set of) – для работы с группами неповторяющихся элементов из ограниченного
диапазона.
3. Строки (String) – для работы с текстовой информацией.
3

4.

Записи (Record) -Это структура данных, объединяющая фиксированное число
именованных компонентов (полей), которые могут быть разных типов.
Синтаксис объявления типа-записи:
```pascal
type
ИмяТипаЗаписи = record
Поле1: Тип1;
Поле2: Тип2;
...
ПолеN: ТипN;
end;
```
Пример 1: Модель студента
```pascal
type
Student = record
FirstName: string;
LastName: string;
Group: string[10]; // строка фиксированной длины
BirthYear: integer;
AvgScore: real;
IsBudget: boolean;
end;
```
Пример 2: Модель точки на плоскости
```pascal
type
Point = record
x, y: real; // несколько полей одного типа можно перечислять через запятую
end;
```
4

5.

Записи (Record)
Иногда возникает необходимость объединить в одном типе несколько разных типов
данных. В PascalABC для этого применяется структурный тип данных — запись.
Запись состоит из фиксированного числа компонентов, называемого полями
записи. Доступ к полям записи осуществляется через оператор точки (.):
В общем
случае описание записи выглядит так:
type
имя_записи = record
поле1: тип;
поле2 : тип;
...
полеN : тип;
end;
```pascal
var
st1, st2: Student;
p1, p2: Point;
arrPoints: array[1..100] of Point; // массив записей
```
5

6.

Записи (Record)
Пример 1: Модель
студента
```pascal
type
Student = record
FirstName: string;
LastName: string;
Group: string[10]; // строка
фиксированной длины
BirthYear: integer;
AvgScore: real;
IsBudget: boolean;
end;
```
Пример 2: Модель точки на плоскости
```pascal
type
Point = record
x, y: real; // несколько полей одного типа можно перечислять через
запятую
end;
```
После объявления типа можно объявлять
переменные:
```pascal
var
st1, st2: Student;
p1, p2: Point;
arrPoints: array[1..100] of Point; // массив записей
6

7.

Работа с записями.
Обращение к полям, with
Доступ к полям записи
осуществляется через оператор
точки (.):
```pascal
st1.FirstName := 'Иван';
st1.LastName := 'Петров';
st1.Group := 'ПИ-21';
st1.BirthYear := 2004;
st1.AvgScore := 4.25;
st1.IsBudget := true;
// Чтение и использование
writeln('Студент: ', st1.LastName, '
', st1.FirstName);
if st1.AvgScore > 4.0 then
writeln('Высокий балл!');
```
Оператор with упрощает доступ к полям, избавляя
от многократного указания имени переменной-записи.
```pascal
with st2 do
begin
FirstName := 'Мария';
LastName := 'Сидорова';
Group := 'ИСП-20';
AvgScore := 4.8;
// Осторожно! Конфликт имен, если есть локальные
переменные с именами FirstName и т.д.
end;
// Можно использовать с несколькими записями, но
осторожно
with st1, p1 do // теперь поля st1 и p1 доступны
напрямую
begin
7
// FirstName относится к st1, x относится к p1
end;
```

8.

Пример работа с записями
Пример . Создать список студентов с указанием фамилии,
имени, года
рождения и номера группы. Вывести на экран список
студентов, у которых
фамилия начинается на букву «Д», с указанием года рождения.
Решение
• program ex61;
const m = 20;
type
student = record // определение типа запись
fam: string[25]; // поле Фамилия
name: string[20]; // поле Имя
db: integer; // поле Год рождения
gn: integer; // поле Номер группы
end;
begin
var a: array[1..m] of student; // описание массива
записей
writeln('Введите список студентов');
for var i:= 1 to m do // заполнение
массива
begin
a[i].fam := ReadlnString('Введите
фамилию');
a[i].name := ReadlnString('Введите
имя');
a[i].db := ReadlnInteger('Введите
дату рождения');
a[i].gn := ReadlnInteger('Введите
номер группы');
end;
var j := 1;
repeat // поиск в массиве записей
if copy(a[j].fam, 0, 1) = 'Д' then
begin
println(a[j].fam, a[j].db);
inc(j)
end
until j > m;
8
end.

9.

Контрольные задания по записям
1.Создать запись "Студент" с полями: ФИО, группа, оценки по 5
предметам. Вывести студентов со средним баллом > 4.0.
2. Запись "Товар": название, цена, количество, дата
поступления. Вывести товары дешевле 1000 руб.
3. Создать массив записей "Книга" (автор, название, год).
Отсортировать по году издания.
4. Запись "Сотрудник": ФИО, должность, стаж, оклад. Найти
сотрудника с максимальным окладом.
5. Запись "Автомобиль": марка, цвет, год выпуска, цена.
Подсчитать количество автомобилей указанного цвета.
6. Создать запись "Комплексное число" (re, im). Реализовать
сложение и умножение.
7. Запись "Треугольник" (3 точки). Вычислить периметр и
площадь.
8. Массив записей "Студент". Найти самого старшего и самого
младшего студента.
9. Запись "Время" (часы, минуты, секунды). Сложение двух
интервалов времени.
10. Создать запись "Дробь" (числитель, знаменатель).
Сокращение дроби.
9

10.

Контрольные задания по записям
11. Запись "Координаты точки". Вычислить расстояние между двумя
точками.
12. Массив записей "Экзамен" (предмет, дата, оценка). Вывести
несданные экзамены (оценка < 3).
13. Запись "Круг" (центр, радиус). Проверить пересечение двух кругов.
14. Создать запись "Контакты" (имя, телефон, email). Поиск по имени.
15. Запись "Прямоугольник" (координаты, ширина, высота). Вычислить
площадь.
16. Массив записей "Продукт" (название, калории, белки, жиры,
углеводы). Поиск продукта с минимальной калорийностью.
17. Запись "Дата" (день, месяц, год). Проверка корректности даты.
18. Создать запись "Вектор" (x, y, z). Вычислить длину вектора.
19. Запись "Счет в банке" (номер, владелец, баланс). Реализовать
операции пополнения и снятия.
20. Массив записей "Фильм" (название, режиссер, год, рейтинг).
Вывести топ-5 по рейтингу.
21. Запись "Многочлен" (степень, коэффициенты). Вычисление значения
в точке.
10

11.

Контрольные задания по записям
22. Создать запись "Отрезок" (начало, конец). Проверить пересечение
отрезков.
23. Запись "Компьютер" (процессор, ОЗУ, HDD, цена). Фильтрация по
минимальным характеристикам.
24. Массив записей "Страна" (название, столица, население,
площадь). Отсортировать по плотности населения.
25. Запись "Уравнение" (a, b, c для ax²+bx+c=0). Найти корни.
26. Создать запись "Геометрическая фигура" с вариантами (круг,
прямоугольник, треугольник). Вычислить площадь.
27. Запись "Спортсмен" (ФИО, вид спорта, результат). Найти
победителя.
28. Массив записей "Заказ" (номер, товар, количество, цена).
Вычислить общую стоимость.
29. Запись "Студент" с вложенной записью "Адрес". Поиск студентов
по городу.
30. Создать запись "Матрица" (размерность, элементы).
Транспонирование матрицы.
11

12.

Множества (Set of)
Множество – это структура, представляющая неупорядоченную коллекцию
уникальных элементов одного базового типа. Базовый тип должен быть
порядковым и ограниченным (чаще всего char, boolean, перечисляемый тип,
диапазон целых 0..255).
Синтаксис:
```pascal
Примеры объявления:
type
```pascal
МножественныйТип = set of БазовыйТип;
type
Объявление переменных и присваивание:
```pascal
var
letters, symbols: CharSet;
digits: DigitSet;
myColors: ColorSet;
begin
digits := ['0'..'9']; // диапазон цифр
letters := ['a'..'z', 'A'..'Z']; // объединение двух
диапазонов
myColors := [Red, Blue]; // конкретные элементы
symbols := []; // пустое множество
end.
CharSet = set of char;
DigitSet = set of '0'..'9';
ByteSet = set of 0..255;
// set of integer - ОШИБКА, слишком
большой диапазон
Colors = (Red, Green, Blue, Yellow);
ColorSet = set of Colors;
```
12

13.

Операции над множествами
Над множествами определены стандартные
математические операции.
Операция Оператор Пример (результат)
Объединение + ['a','b'] + ['b','c'] = ['a','b','c']
Пересечение * ['a','b'] * ['b','c'] = ['b']
Разность - ['a','b','c'] - ['b'] = ['a','c']
Проверка на равенство = ['a','b'] = ['b','a'] -> True
Проверка на неравенство <> ['a'] <> ['b'] -> True
Содержится в <= ['a'] <= ['a','b'] -> True
Содержит >= ['a','b'] >= ['a'] -> True
Принадлежность элемента in 'a' in ['a','b'] -> True
13

14.

Операции над множествами
Пример использования:
```pascal
var
s1, s2, sUnion, sInter: set of 'a'..'z';
ch: char;
begin
s1 := ['a', 'b', 'd'];
s2 := ['b', 'c', 'd'];
sUnion := s1 + s2; // ['a','b','c','d']
sInter := s1 * s2; // ['b','d']
if 'a' in s1 then
writeln('Буква a есть в множестве s1’);// Вывод элементов множества (порядок не
гарантирован!)
writeln('Элементы объединения:');
for ch := 'a' to 'z' do
if ch in sUnion then
write(ch, ' ');
writeln;
end.
14

15.

Пример работа с множествами
Решение
Пример . Даны два множества, содержащие по 8
случайных целых
чисел из промежутка (a; b), где a и b — действительные
числа.
Определить,
сколько в этих множествах одинаковых элементов.
Замечание. Все элементы, входящие в
множество, различны, поэтому если
генератор случайных чисел даст два
одинаковых числа, в множество будет
включено только одно из них. Это означает,
что множества s1, s2 вообще говоря,
содержат не 8 целых чисел, а не более 8
целых чисел
• program ex62;
{преобразуем действительные границы промежутка a и b в целые m и n}
var m := trunc(a);
var n := trunc(b) + 1;
{заполнение множеств s1, s2 случайными целыми
числами из отрезка [m; n]}
var s1, s2: set of integer; // описание множеств s1 и s2
s1 := []; // инициализация множеств s1, s2
s2 := []; // пустыми множествами
for var i := 1 to p do
begin // заполнение множеств s1, s2 случайными целыми
s1 += [random(n, m)]; // числами из промежутка (n; m)
s2 += [random(n, m)];
end;
foreach var k in s1 do print(k); // вывод на экран s1
println;
foreach var k in s2 do print(k); // вывод на экран s2
println;
{определение количества целых чисел из отрезка [m; n],
одновременно принадлежащих множествам s1 и s2}
var k := 0; // счетчик количества одинаковых элементов
for var i := m to n do // подсчет одинаковых элементов
if (i in s1) and (i in s2) then inc(k);
15
println('k =', k);
end.

16.

Практическое применение множеств
Множества идеально подходят для задач классификации и фильтрации.
Пример 1: Проверка корректности ввода.
pascal
var
input: string;
i: integer;
allValid: boolean;
validChars: set of char;
begin
validChars := ['0'..'9', '+', '-', '*', '/'];
write('Введите арифметическое выражение (только цифры и
+-*/): ');
readln(input);
allValid := true;
for i := 1 to length(input) do
if not (input[i] in validChars) then
begin
allValid := false;
break;
end;
if allValid then
writeln('Выражение корректно.')
else
writeln('Обнаружен недопустимый
символ.');
end.
16

17.

Практическое применение множеств
Пример 2: Удаление из строки всех символов, кроме букв и пробела.
pascal
var
s, result: string;
i: integer;
begin
s := 'Hello, World! 2023.';
result := '';
for i := 1 to length(s) do
if (s[i] in ['a'..'z', 'A'..'Z', ' ']) then // или if s[i] in ['А'..'я',' ']
для кириллицы
result := result + s[i];
writeln(result); // 'Hello World '
end.
17

18.

Контрольные задания по множествам
1.Дана строка. Создать множество цифр, встречающихся в строке, и вывести их в порядке
возрастания.
2. Даны две строки. Найти множество общих символов (без учета регистра).
3. Создать множество гласных букв русского алфавита. Подсчитать количество гласных в
заданной строке.
4. Дано множество букв. Удалить из строки все символы, не входящие в это множество.
5. Проверить, все ли буквы заданного слова содержатся в указанном множестве букв.
6. Создать множество простых чисел от 1 до 100. Ввести число и проверить, является ли оно
простым.
7. Даны три множества. Найти их пересечение и вывести элементы в отсортированном виде.
8. Создать множество символов, которые являются знаками препинания. Подсчитать их
количество в тексте.
9. Удалить из строки все повторяющиеся символы, используя множество.
10. Проверить, является ли строка панграммой (содержит все буквы алфавита).
11. Создать множество четных чисел от 2 до 50. Вывести все элементы множества.
12. Даны два множества. Проверить, является ли одно подмножеством другого.
18

19.

Контрольные задания по множествам
13. Найти симметрическую разность двух множеств символов.
14. Создать множество квадратов чисел от 1 до 10. Проверить,
принадлежит ли введенное число этому множеству.
15. Удалить из строки все цифры, используя множество цифр.
16. Дано множество букв. Сформировать строку из случайных
символов этого множества длиной N.
17. Найти мощность множества (количество элементов).
18. Проверить, образуют ли цифры числа множество без
повторяющихся элементов.
19. Создать множество делителей заданного числа.
20. Найти все буквы, которые не входят ни в одну из двух заданных
строк.
21. Создать множество чисел Фибоначчи до N. Проверить
принадлежность числа этому множеству.
19

20.

Контрольные задания по множествам
22. Удалить из строки все гласные буквы.
23. Найти все общие цифры в двух числах, используя
множества.
24. Создать множество согласных букв. Заменить в строке все
согласные на '*'.
25. Проверить, можно ли из символов одного слова составить
другое слово.
26. Найти все уникальные символы в строке.
27. Создать множество степеней двойки до 2^10. Вывести
элементы.
28. Разбить строку на две: одна содержит только буквы, другая
— только цифры.
29. Проверить, является ли множество пустым.
30. Создать множество случайных чисел и вывести его в
упорядоченном виде.
20

21.

Работа со строками на Паскале
Основные понятия и функции
1 Строка представляет собой особую форму одномерного массива символов,
которая имеет существенное отличие. Массив символов имеет фиксированную
длину (количество элементов), которая определяется при описании. Строка имеет
две разновидности длины:
– Общая длина строки, которая характеризует размер памяти, выделяемый строке
при описании;
– Текущая длина строки (всегда меньше или равна общей длине), которая
показывает количество смысловых символов строки в каждый конкретный
момент времени.
2 Строка в Паскале – упорядоченная последовательность символов. Количество
символов в строке называется ее длиной. Длина строки в Паскале может лежать в
диапазоне от 0 до 255. Каждый символ строковой величины занимает 1 байт
памяти и имеет числовой код в соответствии с таблицей кодов ASCII.
3 Для описания строковых переменных в Паскале существует предопределенный
тип string. В общем виде описание строковой переменной будет выглядеть
следующим образом:
Var <имя_переменной>: string[<максимальная длина строки>]
21

22.

Работа со строками на Паскале
4 Операция слияния (сцепления, конкатенации) применяется для соединения
нескольких строк в одну, обозначается знаком «+». Операция слияния
применима для любых строковых выражений, как констант, так и переменных.
5 Операции отношения позволяют сравнивать строки на отношение равенства
(=), неравенства (<>), больше (>), меньше (<), больше или равно (>=), меньше
или равно (<=). В результате сравнения двух строк получается логиче-ское
значение (true или false). Сравнение строк производится слева направо посимвольно до первого несовпадающего символа, большей считается та строка,
в которой первый несовпадающий символ имеет больший код в таблице кодировки. Если строки имеют различную длину, но в общей части символы совпадают, считается, что короткая строка меньше. Строки равны, если они имеют
равную длину и соответствующие символы совпадают.
22

23.

Работа со строками на Паскале
6 Стандартные функции для работы со строками в Паскале :
– Copy (S, poz, n) выделяет из строки S, начиная с позиции poz, подстроку из n
символов. Здесь S – любое строковое выражение, poz, n – целочисленные
выражения.
– Concat (s1, s2,...,sn) выполняет слияние строк s1, s2,...,sn в одну строку.
– Length(S) определяет текущую длину строкового выражения S. Результат –
значение целого типа.
– Pos(subS, S) определяет позицию первого вхождения подстроки subS в строку S.
Результат – целое число, равное номеру позиции, где находится первый символ
искомой подстроки. Если вхождение подстроки не обнаружено, то результат
функции будет равен 0
7 Стандартные процедуры для работы со строками в Паскале:
– Delete (S, poz, n) удаляет из строки S, начиная с позиции poz, подстроку из n
символов. Здесь S – строковая переменная (в данном случае нельзя записать никакое
другое строковое выражение, кроме имени строковой переменной, т.к. только с
именем переменной связана область памяти, куда будет помещен результат
выполнения процедуры); poz, n – любые целочисленные выражения.
– Insert(subS, S, poz) вставляет в строку S, начиная с позиции poz, подстроку subS.
Здесь subS – любое строковое выражение, S – строковая переменная (именно ей
будет присвоен результат выполнения процедуры), poz – целочисленное выражение.
23

24.

Работа со строками на Паскале
8 Процедуры преобразования типов в Паскале:
– Str(x, S) преобразует число x в строковый формат. Здесь x – любое
числовое выражение, S – строковая переменная. В процедуре есть
возможность задавать формат числа x. Например, str(x: 8: 3, S), где 8
– общее число знаков в числе x, а 3 – число знаков после запятой.
– Val(S, x, kod) преобразует строку символов S в число x. Здесь S –
строковое выражение, x – числовая переменная (именно туда будет
помещен результат), kod – целочисленная переменная (типа integer),
которая равна номеру позиции в строке S, начиная с которой
произошла ошибка преобразования, если преобразование прошло без
ошибок, то переменная kod равна 0.
24

25.

Пример решения задания со строками
Пример 1. Дано предложение, в котором имеются цифры.
Найти сумму цифр входящих в него
1.1. Листинг программы
var st: string;
i,n,s: byte;
code: integer;
begin
writeln('Введите предложение');
readln(st);
s:=0;
for i:=1 to length(st) do begin
val(st[i], n, code);
if code=0 then s:=s+n;
end;
writeln('Сумма цифр: ', s:6);
end.
1.2. Результаты работы программы
Введите предложение
auditoria #26
Сумма цифр: 8
25

26.

Пример решения задания со строками
Задание 2. Дано слово. Написать программу,
подсчитывающую долю в % букв ‘a’ в нем
2.1. Листинг программы
var st: string;
i,k: byte;
begin
writeln('Введите слово);
readln(st);
k:=0;
for i:=1 to length(st) do if st[i]= ' a' then k:=k+1;writeln('Доля
в процентах: ', k/length(st)*100:6:2, ' %);
end.
2.2. Результаты работы
программы
Введите предложение
mama
'Доля в процентах: 50%
26

27.

Контрольные задания по строкам
1
Даны 3 слова. Вывести на экран самое длинное и самое короткое слово. В самом коротком слове
все буквы «А» и «О» заменить на «*».
2
В символьной строке имеются буквы «А» и «В». Установите, какая буква встретиться раньше,
если просматривать символы слева направо.
3
Определите номер позиции, в которой в пятый раз встречается буква М в данной символьной
строке. Если такой позиции нет, то сообщите количество букв М в строке.
4
Дана строка, в которой имеются цифры. Вывести на экран все цифры в столбец.
5
Найдите первую и последнюю букву К в предложении и символы между ними замените
звездочками
6
Дано предложение. Все арабские цифры заменить на символ «*»
7
Дана строка. Проверить одинаковое ли количество открывающих и закрывающих скобок в
данной строке.
8
Дана строка. Определить долю в процентах арабских цифр в ней.
9 Дан текст, в котором все предложения отделены друг от друга точкой. Определить количество
предложений.
10 Дан текст. Подсчитать общее число вхождений в него символов «+» и «-»
27

28.

Контрольные задания по строкам
Дано предложение. Определить каких букв в нем больше: «м» или «н»
Дано предложение. Все его символы, стоящие на четных местах, заменить на буквы «ы»
Дано предложение. Все знаки препинаний («.» , «!», «?», «,») заменить на символ «*»
Дана строка. Заменить все двоеточия на точку с запятой. Посчитать количество замен.
Дан текст. Определить долю (в %) букв «Б» в нем (строчных и прописных).
Дан текст. Определить количество цифр в нем.
Дано предложение. Все его символы, стоящие на четных местах, заменить на букву «Е»
Найдите открывающуюся скобку «(« и закрывающуюся скобку «)» в предложении и
символы между ними замените символом «+»
19 Дана строка. Проверить считается ли оно одинаково справа налево и слева направо (то
есть является ли оно палиндромом).
20 Дано предложение. Определить число вхождений в него буквосочетания «ро»
21 В данной строке символов все символы «ДА» замените на «НЕ».
22 Дан текст, в которой все слова отделены друг от друга пробелом. Определить количество
слов в тексте.
11
12
13
14
15
16
17
18
28

29.

Контрольные задания по строкам
23 Дано предложение. Определить число вхождений в него некоторого символа (символ
вводиться с клавиатуры)
24 Дано предложение. Все его символы, стоящие на нечетных местах, заменить на букву «
25 Определите номер позиции, в которой в третий раз встречается буква Т в данной
символьной строке. Если такой позиции нет, то сообщите количество букв Т в строке.
26 Дано предложение. Все знаки препинания заменить на символ «*»
27 Дан текст. Определить среднее арифметическое цифр входящих в него.
Дано предложение. Напечатать все символы, расположенные между первой и второй
запятой. Если второй запятой нет, то должны быть напечатаны все символы,
расположенные после единственной имеющейся запятой.
29 Дан текст. Определить произведение цифр входящих в него.
30 Даны 3 слова. Вывести на экран самое длинное и самое короткое слово. В самом длинном
слове все буквы «А» заменить на «О».
29

30.

Варианты индивидуальных заданий для лабораторной работы (Множество, записи)
1. Дать описание переменной типа запись с 4 полями для записи фамилии, имени, года
рождения, адреса. Полю Фамилия присвоить значение «Иванов», полю Год рождения
— значение 1997, остальные поля оставить без
изменений.
2. Дать описание переменной типа запись с 3 полями для записи фамилии, места
рождения, возраста. Полю Возраст присвоить значение «25»,
остальные поля оставить без изменений.
3. Дать описание переменной типа запись с 4 полями для записи фамилии, имени,
номера группы, оценки за экзамен. Полю Номер группы присвоить
значение «5», остальные поля оставить без изменений.
4. Дать описание переменной типа запись с 4 полями для записи фамилии, имени,
номера квартиры, номера телефона. Полю Номер телефона присвоить значение
«123–321», остальные поля оставить без изменений.
5. Дать описание переменной типа запись с 4 полями для записи курса,
номера группы, фамилии, оценки за экзамен. Полю Оценка за экзамен присвоить
значение «4», остальные поля оставить без изменений.
6. Создать список сотрудников из n строк (число n ввести с клавиатуры), содержащий
следующую информацию: фамилия, место рождения, возраст.
Вывести на экран фамилии сотрудников, возраст которых меньше 30 лет.
30

31.

Варианты индивидуальных заданий для лабораторной работы (Множество, записи)
7. Создать список студентов из n строк (число n ввести с клавиатуры),
содержащий следующую информацию: фамилия, курс, номер группы, оценка
за экзамен. Вывести на экран фамилии студентов 3 группы 1 курса.
8. Создать список жильцов из n строк (число n ввести с клавиатуры),
содержащий следующую информацию: фамилия, имя, номер квартиры, номер
телефона. Вывести на экран список жильцов, проживающих в квартирах с номерами от 21 до 60.
9. Разработать программу для ведения журнала успеваемости группы
студентов, в котором содержится информация о фамилии, номере группы и
оценках за 3 экзамена. Вывести на экран фамилии студентов в порядке убывания среднего балла по результатам
трех экзаменов.
10. Разработать программу для хранения следующей информации об
абитуриентах: фамилия и имя, год рождения, результат ЕГЭ по математике,
суммарный балл ЕГЭ (по трем предметам)
Выполнить следующие задания:
1) определить и вывести на экран количество абитуриентов 1997 и
1998 годов рождения;
2) вывести на экран фамилии абитуриентов, у которых результат ЕГЭ
по математике выше 85 баллов, а суммарный балл выше 250;
3) вывести на экран фамилию и год рождения абитуриентов, у которых суммарный балл ЕГЭ выше 270
а) не используя оператор присоединения;
б) с помощью оператора присоединения;
31
4) вывести на экран фамилии абитуриентов в порядке убывания их
суммарного балла по ЕГЭ, если суммарные баллы совпадают, сравнить баллы по математике.

32.

Варианты индивидуальных заданий для лабораторной работы (Множество, записи)
11. Переменная abc4 имеет тип данных запись. Дайте возможные описания
переменной abc4 (2–3 варианта), если в исполняемой части кода использован
следующий оператор:
with abc4 do
begin
n1 := ‘steel plane’;
n2 := 2010;
n3 := false;
n4 := ‘12–45’;
n5 := ‘+’
end;
12. Переменная xy имеет тип данных запись. Дайте возможные описания
переменной xy, если в исполняемой части кода использованы следующие
операторы:
...
xy.k1:= 1225;
xy.k2:= ‘1225’;
xy.k3:= b > 0;
xy.k4:= ‘yes’;
...
32

33.

Варианты индивидуальных заданий для лабораторной работы (Множество, записи)
13. Переменная sr3 имеет тип данных запись. Дайте возможные описания
переменной sr3 (2–3 варианта), если в исполняемой части кода использован
следующий оператор:
with sr3 do
begin
m1:= ‘6’;
m2:= x*sin(x);
m3:= x <= 1;
m4:= round(x);
m5:= ‘finish’
end;
14. В таблице содержится информация о результатах сессии (фамилия,
имя, номер группы, результаты четырех экзаменов). Назначить студентам
стипендии, используя следующие правила:
а) если все оценки 5, назначается повышенная стипендия;
б) если все оценки не ниже 4, назначается обычная стипендия;
в) если есть оценка 3, стипендия не назначается.
15. В таблице содержится следующая информация об учениках: фамилия, имя,
возраст, рост, вес. Выполнить следующие задания:
1) определить средний рост учеников;
2) определить рост самого высокого и самого низкого учеников;
3) вывести на экран фамилии учеников, у которых рост выше среднего;
4) определить количество учеников, у которых рост выше 170 см.
33

34.

Варианты индивидуальных заданий для лабораторной работы (Множество, записи)
16. N учеников прошли тестирование по M темам предмета. Определить:
1) сколько баллов набрал каждый ученик по всем темам;
2) средний балл, полученный учениками;
3) разницу между лучшим результатом и средним баллом.
17. Описать переменную «экзаменационная ведомость», содержащую
следующие сведения: наименование предмета, номер группы, номера зачетных книжек, фамилии и инициалы студентов, а также их оценки по итогам текущей сессии. Определить, сколько в группе отличников, хорошистов,
троечников и двоечников.
18. Описать переменную «служащий», включающую в себя фамилию,
имя, отчество служащего, дату его рождения, сведения об образовании, профессии и
домашний адрес.
1) Определить имена служащих с высшим образованием.
2) Получить данные о служащих, имеющих указанную профессию.
19. Дан массив записей, содержащих дату (число, месяц, год) и время
(час, минута, секунда). Упорядочить этот массив данных в порядке возрастания, т. е. от
более ранних значений к более поздним.
20. Описать переменную «расписание», содержащую следующие данные: день недели,
количество учебных пар в указанный день, время начала и
конца каждой пары, название предмета, фамилию преподавателя. Вывести всю
информацию о занятиях, относящихся к предмету «Информатика».
34

35.

Варианты индивидуальных заданий для лабораторной работы (Множество записи)
21. Множество состоит из 5 случайных целых чисел в диапазоне от 1 до
20. Вывести их на экран.
22. Создать множество, содержащее точно 10 случайных чисел из диапазона (0, 100) и
вывести его на экран.
23. Создать два множества, содержащих по 10 случайных целых чисел
из диапазона 1..20. Вывести на экран те числа, которые входят в оба множества.
24. Создать множество, которое содержит случайный набор строчных
букв русского алфавита и
1) вывести на экран все гласные буквы, содержащиеся в этом множестве,
2) проверить, можно ли из букв, содержащихся в множестве, составить слово «факел»,
если нет, то добавить в множество необходимые буквы.
25. Множество содержит случайный набор строчных букв русского алфавита.
Проверить,
1) все ли гласные буквы в нем содержатся,
2) можно ли из этих букв составить слово «привет».
26. Множество А содержит арабские цифры. Проверить, все ли цифры
от 0 до 9 входят в множество и вывести соответствующее сообщение.
27. Дан некоторый набор товаров. Определить, какие товары имеются в
каждом из n магазинов, какие есть хотя бы в одном магазине и каких нет ни в
одном из магазинов.
35

36.

Варианты индивидуальных заданий для лабораторной работы (Множество, записи)
28. Множество содержит натуральные числа из некоторого диапазона.
Сформировать из него два множества, первое из которых содержит все числа,
кратные 3 или 7, а второе — все остальные числа.
29. Множество содержит натуральные числа из некоторого диапазона.
Сформировать из него два множества, первое из которых содержит все простые
числа, а второе — все составные числа.
30. Дан двухмерный массив действительных чисел. Вычислить сумму
элементов, номера строк и столбцов которых принадлежат соответственно
непустым множествам S1, и S2.
31. Из диапазона целых чисел m..n выделить множество чисел, делящихся без
остатка или на k, или на p (к, p — простые числа), и множество чисел,
делящихся на произведение kp.
32. Создать два множества из символов, которые вводятся пользователем с
клавиатуры. Вывести на экран элементы, которые содержатся
1) в первом и втором множествах одновременно;
2) только в первом множестве;
3) только во втором множестве.
36

37.

Контрольные вопросы
1. Что такое строка в языке Паскаль?
2. Чему равна длина строки в Паскале?
3. Операции над строками в Паскале
4. Стандартные функции работы со строками
5. Процедуры преобразования типов в Паскале
6. Объявление строковых и символьных переменных
7. Строковые выражения.
8. Строковые операции
9. Стандартные процедуры и функции для работы со строками
10. Что такое запись в PascalABC?
11. Как обратиться к полю записи?
12. Что такое множество? Как задать множество символов?
13. Какие операции определены для множеств?
14. Как определить длину строки?
15. Какие процедуры и функции для работы со строками вы знаете?
16. Как удалить подстроку из строки?
17. Как проверить принадлежность элемента множеству?
37

38.

38
English     Русский Правила