- •ОСНОВЫ АЛГОРИТМИЗАЦИИ И ПРОГРАММИРОВАНИЯ
- •Требования к оформлению лабораторных работ
- •1. ОСНОВЫ АЛГОРИТМИЗАЦИИ И ПРОГРАММИРОВАНИЯ
- •13.1 План разработки алгоритмов и программ
- •Таблица 1.1 Результат ручной прокрутки после первого этапа
- •Таблица 1.2 Результат ручной прокрутки после первого этапа
- •Таблица 1.3 Итог выполнения ручной прокрутки
- •13.2 Перевод алгоритма в Паскаль-программу
- •13.3 Использование готовых алгоритмов при решении задач
- •Подсчет элементов, обладающих заданным свойством
- •Поиск максимального и минимального элементов
- •Поиск элементов, обладающих заданным свойством
- •Задача 1. Подсчет ненулевых элементов
- •Задача 2. Подсчет элементов, абсолютная величина которых больше 7
- •Задача 3. Поиск элемента равного 7
- •Задача 5. Найти количество элементов массива больших среднего арифметического этих элементов
- •Задача 6. Поиск максимального элемента и подсчет частоты его появления в массиве
- •Задача 7. Поиск нулевого элемента
- •Задача 8. Поиск отрицательного числа с конца массива
- •13.4 Стандартная обработка двумерных массивов
- •Двумерный массив и его части
- •Индексы элементов двумерного массива
- •Индексы строки и столбца двумерного массива
- •Индексы диагоналей двумерного массива
- •Перенос простейших алгоритмов на двумерные массивы
- •13.5 Отладка и тестирование программ
- •2. СОЗДАНИЕ КОНСОЛЬНЫХ ПРИЛОЖЕНИЙ СРЕДСТВАМИ DELPHI 7.0
- •13.1 Создание консольного приложения средствами Delphi
- •13.2 Структура программы в Delphi
- •Таблица 2.1
- •13.3 Введение в типы данных Delphi
- •13.4 Венгерская нотация
- •13.5 Отладка и тестирование программ средствами среды Delphi 7
- •3. ЛАБОРАТОРНАЯ РАБОТА №1 «ЛИНЕЙНЫЕ ПРОГРАММЫ»
- •13.1 Пояснения и примеры к лабораторной работе
- •13.2 Задания к лабораторной работе №1:
- •4. ЛАБОРАТОРНАЯ РАБОТА №2 «АЛГОРИТМЫ С ВЕТВЛЕНИЯМИ»
- •13.3 Пояснения и примеры к лабораторной работе
- •13.2 Реализация алгоритмов с ветвлениями средствами C#
- •13.3 Задания к лабораторной работе №2
- •5. ЛАБОРАТОРНАЯ РАБОТА №3 «ОПЕРАТОР ВЫБОРА»
- •13.1 Пояснения и примеры к лабораторной работе
- •13.2 Реализация оператора выбора в языке C#
- •13.3 Задания к лабораторной работе №3
- •6. ЛАБОРАТОРНАЯ РАБОТА №4 «ЦИКЛИЧЕСКИЕ АЛГОРИТМЫ»
- •13.1 Основные разновидности циклов
- •Цикл с постусловием
- •Цикл с предусловием
- •Цикл с параметром
- •Программное прерывание выполнения циклов
- •13.2 Примеры решения задач с использованием операторов цикла
- •Проверка корректности введенных данных
- •Решение задач с использованием диапазонов чисел
- •Решение задач полным перебором
- •Пояснения к задачам 18, 23, 24, 25:
- •13.3 Задания к лабораторной работе №4
- •7. ЛАБОРАТОРНАЯ РАБОТА №5 «РЯДЫ И ПОСЛЕДОВАТЕЛЬНОСТИ»
- •13.1 Примеры решения задач
- •Вычисление суммы n-первых членов ряда
- •Вычисление суммы n-первых членов последовательности, удовлетворяющих условию
- •Нахождение наименьшего номера члена последовательности, для которого выполняется некоторое условие
- •13.2 Задания к лабораторной работе №5
- •8. ЛАБОРАТОРНАЯ РАБОТА №6 «ТАБУЛИРОВАНИЕ ФУНКЦИЙ»
- •13.1 Пример решения задачи на табулирование функции
- •8.1.2 Организация перенаправления ввода-вывода средствами C#
- •13.2 Задания к лабораторной работе №6
- •9. ЛАБОРАТОРНАЯ РАБОТА №7 «ПОДПРОГРАММЫ»
- •13.1 Задания к лабораторной работе №7
- •13.2 Задания к лабораторной работе №8
- •13.1 Примеры и пояснения к лабораторной работе
- •13.2 Задания к лабораторной работе №9
- •Задания к лабораторной работе №10
- •13.1 Примеры работы со строками
- •Пример 13.2 Удалить из строки символ, указанный пользователем.
- •Пример 13.3 Удалить из строки лишних пробелов (пробелы в начале и в конце строки, между словами также должен быть один пробел).
- •Пример 13.4 Определить количество слов в заданном тексте.
- •13.2 Задания к лабораторной работе №11
- •13.1 Задания к лабораторной работе №12
- •13.1 Пояснения к работе
- •13.1 Задания к лабораторной работе №13
- •13.1 Пояснения к лабораторной работе №14
- •Формирование файла случайных чисел
- •Анализ файла случайных чисел
- •13.2 Задания к лабораторной работе №14
- •13.1 Примеры решения задач с использованием текстовых файлов
- •13.2 Задания к лабораторной работе №15
- •13.1 Задания к лабораторной работе №16
- •13.1 Задания к лабораторной работе №17
- •13.2 Задания к лабораторной работе №18
- •13.1 Задания к лабораторной работе №19
- •ПРИЛОЖЕНИЕ А
- •ПРИЛОЖЕНИЕ Б
- •СПИСОК РЕКОМЕНДУЕМОЙ ЛИТЕРАТУРЫ
- •ОГЛАВЛЕНИЕ
14.ЛАБОРАТОРНАЯ РАБОТА №12 «МНОЖЕСТВА»
Цель работы: Сформировать навыки по созданию и работе со структурами данных (множествами) средствами изучаемого языка программирования
13.1Задания к лабораторной работе №12
1.Известны сорта роз, выращиваемых тремя цветоводами. Определить те сорта, которые имеются у каждого из цветоводов, которые есть хотя бы
уодного из цветоводов, которых нет ни у одного из цветоводов.
2.Заданы имена девочек. Определить, какие из этих имен встречаются во всех классах данной параллели, которые есть только в некоторых классах
икакие из этих имен не встречаются ни в одном классе.
3.Задан некоторый набор товаров. Определить для каждого из товаров, какие из них имеются в каждом из n магазинов, какие товары есть хотя бы
водном магазине и каких товаров нет ни в одном магазине.
4.Имеется список класса (все имена различны). Определить, есть ли в классе человек, который побывал в гостях у всех. (Для каждого ученика составить множество побывавших у него в гостях друзей, сам ученик в это множество не входит.)
5.Имеется множество, содержащее натуральные числа из некоторого диапазона. Сформировать два множества, первое из которых содержит все простые числа из данного множества, а второе — все составные.
6.На трех участках возделывают сельскохозяйственные культуры. Известны виды культур, выращиваемых на каждом из участков. Определить виды тех культур, которые возделывают на каждом из участков; возделывают хотя бы на одном из участков; не возделывают ни на одном участке. (Культуры: картофель, укроп, морковь, горох, капуста, редис.)
7.Известны марки машин, изготовляемых в данной стране и импортируемых за рубеж. Даны некоторые N стран. Определить для каждой из марок, какие из них были:
•доставлены во все страны;
•доставлены в некоторые из стран;
•не доставлены ни в одну страну.
8.В озере водится несколько видов рыб. Три рыбака поймали рыб, представляющих некоторые из имеющихся видов. Определить:
•какие виды рыб есть у каждого рыбака;
•какие рыбы есть в озере, но нет ни у одного из рыбаков.
99
9.В N колхозах выращивают некоторые сельскохозяйственные культуры из имеющегося перечня. Определить культуры:
•возделываемые во всех колхозах;
•возделываемые только в некоторых колхозах.
10.Есть список игрушек, некоторые из которых имеются в N детских садах. Определить игрушки из списка:
•которых нет ни в одном из детсадов;
•которые есть в каждом из детсадов.
11.Составить программу, которая вычисляет сумму тех элементов двумерного массива, номера строк и столбцов которых принадлежат соответственно непустым множествам S1 и S2.
12.Задано некоторое множество М и множество T того же типа. Подсчитать, сколько элементов из множеств T и М совпадает.
13.Из диапазона целых чисел m... n выделить множества чисел:
1)делящихся без остатка или на k, или на m. (k, m — простые числа);
2)делящихся на k и m без остатка.
14.Дан текст из цифр и строчных латинских букв, за которыми следует точка. Определить, каких букв - гласных или согласных - больше в этом тексте.
15.Вычислить количество различных цифр в десятичной записи числа.
16.Напечатать в возрастающем порядке все цифры, не входящие в запись данного натурального числа.
17.Дан текст из строчных латинских букв, за которыми следует точка. Напечатать все буквы, входящие в текст не менее двух раз.
18.Дан текст из строчных латинских букв, за которыми следует точка. Напечатать все буквы, входящие в текст по одному разу.
19.Дан текст, за которым следует точка. В алфавитном порядке напечатать все строчные русские гласные буквы, входящие в этот текст.
20.Дан текст на русском языке. Напечатать в алфавитном порядке все гласные буквы, которые входят в каждое слово.
21.Дан текст на русском языке. Напечатать в алфавитном порядке все согласные буквы, которые не входят ни в одно слово.
22.Дан текст на русском языке. Напечатать в алфавитном порядке все звонкие согласные буквы, которые входят в каждое нечетное слово и не входят ни в одно четное слово.
23.Дан текст на русском языке. Напечатать в алфавитном порядке все звонкие согласные буквы, которые входят хотя бы в одно слово.
24.Дан текст на русском языке. Напечатать в алфавитном порядке все глухие согласные буквы, которые не входят хотя бы в одно слово.
25.Дан текст на русском языке. Напечатать в алфавитном порядке все
100
согласные буквы, которые входят только в одно слово.
26.Дан текст на русском языке. Напечатать в алфавитном порядке все глухие согласные буквы, которые не входят только в одно слово.
27.Дан текст на русском языке. Напечатать в алфавитном порядке все звонкие согласные буквы, которые входят более чем в одно слово.
28.Дан текст на русском языке. Напечатать в алфавитном порядке все гласные буквы, которые не входят более чем в одно слово.
29.Дан текст на русском языке. Напечатать в алфавитном порядке все глухие согласные буквы, которые входят в каждое нечетное слово и не входят хотя бы в одно четное слово.
30.Дан текст на русском языке. Напечатать в алфавитном порядке все цифры, которые входят в каждое слово.
101
15.ЛАБОРАТОРНАЯ РАБОТА №13 «ЗАПИСИ (СТРУКТУРЫ)»
Цель работы: Сформировать навыки по созданию и работе со структурами данных (записями) средствами изучаемого языка программирования.
13.1 Пояснения к работе
Тип-запись включает ряд компонент, называемых полями, которые могут быть разных типов. При задании типа-записи после зарезервированного слова record следует перечислить все поля типа-записи с указанием через двоеточие их типов и завершить задание типа словом end. Поля отделяются друг от друга точкой с запятой, точка с запятой ставится и после завершающего слова end.
Пример: Типы-записи
Type |
|
Data = record |
//Тип - дата рождения |
Year: Integer; |
|
Month: 1..12; |
|
Day: 1..31; |
|
end; |
|
Так, для введенных выше типов можно задать, например:
Var |
Dat: Data; |
Const |
Birthday: Data = (Year: 1971; Month: 12; Day: 9); |
Пример: Использование полей записей
Dat.Year:= 2006;
а можно и так:
with Dat do begin Year:= 2006; Month:= 7; Day:=14;
end;
Пример15.1 Сформировать файл данных о студентах и распечатать всех девушек из данного списка
Данная задача может быть разбита на 2 подзадачи:
•Создание файла и его заполнение данными
•Чтение данных из файла БД и их анализ
Для начала объявим собственный тип данных, описывающий студента Tstudent. Данный тип-запись будет содержать 4 поля, описывающих фамилию (Fam), имя (name), возраст (age) и пол (sex). Для определения пола введем дополнительный перечислимый тип Tsex.
102
type Tsex=(male,female); TStudents=record
Fam:string[20];
name:string[20];
age:byte;
sex:Tsex;
end;
Для заполнения данных о студенте создадим процедуру create_stud, в которую в качестве параметра переменной будет передаваться параметр типа
Tstudents.
Procedure create_stud(var stud:Tstudents); var ch:char;
begin
write('Familiya: '); readln(stud.Fam); write('Name: '); readln(stud.name); write('Age: '); readln(stud.age); repeat
write('Sex of student M/W?'); readln(ch); case Upcase(ch) of
'M': stud.sex:=male; 'W': stud.sex:=female;
end;
until Upcase(ch) in ['M','W']; end;
Для вывода на экран данных о студенте создадим процедуру print_stud, в которую в качестве параметра значения будет передаваться параметр типа
Tstudents.
Procedure print_stud(stud:Tstudents); begin
writeln('Familiya: ',stud.Fam); writeln('Name: ',stud.name); writeln('Age: ',stud.age); case stud.sex of
male: writeln('Sex: Male'); female:writeln('Sex: Female');
end;
end;
В головной программе пользователю будет предложено ввести 1 или 2 для выполнения соответственно следующих действий:
1 - Создание и заполнение файла БД
103
2 – Чтение данных из файла в динамический массив и затем вывод на экран элементов массива, удовлетворяющих условию.
var
f:file of Tstudents; student:Tstudents; ch:char; filename:string; menu,amount,i:byte;
students:array of Tstudents; begin
writeln('For create file press 1'); writeln('For analise file press 2'); readln(menu);
case menu of 1: begin
//Создание и заполнение файла БД repeat
write('Enter file name for DB:'); readln(filename); {$I-}
assign(f,filename);
rewrite(f); {$I+}
if Ioresult<>0 then writeln('File not found') else break;
until false; repeat
create_stud(student); // Формирование переменной write(f,student); // Запись переменной в файл write('Continue Yes/No?'); readln(ch);
until Upcase(ch)='N'; close(f); // Сохранение файла
end; 2: begin
//Подключение к созданному файлу repeat
write('Enter file name of DB:'); readln(filename); {$I-}
assign(f,filename);
reset(f); {$I+}
if Ioresult<>0 then writeln('File not found') else break;
until false; amount:=filesize(f); setlength(students,amount);
104