284 22 3MB
Russian Pages [43] Year 2001
Министерство сельского хозяйства и продовольствия
ТУ
Белорусский государственный аграрный технический университет
Б ГА
Кафедра информационных процессов и технологий
Программирование
по зи то ри й
на языке Object Pascal в визуальной среде Delphi
Методические указания к лабораторным занятиям по дисциплине “Основы информатики и вычислительной техники”
Ре
Часть 2
Для студентов факультета предпринимательства и управления
Минск - 2001 СИСТЕМЫ СЧИСЛЕНИЯ
3 Лабораторная работа №6 ПРОГРАММИРОВАНИЕ АЛГОРИТМОВ С ИСПОЛЬЗОВАНИЕМ ЗАПИСЕЙ
ТУ
Цель лабораторной работы: создать приложение, в котором используются данные типа запись.
Б ГА
6.1.Пример создания приложения Задание: создать Windows-приложение для обработки ведомости об успеваемости учащихся в количестве 9 человек. Каждая запись должна содержать фамилию, инициалы, а также оценки по физике, математике и сочинению. Вывести список учащихся, отсортированный в порядке уменьшения их среднего балла. Один из возможных вариантов панели интерфейса создаваемого приложения показан на рис.6.1.
по зи то ри й
6.1.1. Размещение компонентов на Форме При работе с записями ввод и вывод информации на экран удобно организовывать с помощью компонента StringGrid.
StringGrid
Рис. 6.1
Ре
В этом задании для нанесения соответствующих надписей в колонках и строках используется фиксированная зона компонента StringGrid, поэтому в Инспекторе Объектов значения свойств FixedCols и FixedRows установите равными 1. В соответствии с заданием установите значение свойства ColCount=6, а значение свойства RowCount=10. Для возможности просмотра всего списка учащихся в компоненте StringGrid удобно использовать вертикальную линейку прокрутки, поэтому установите свойство ScrollBars в состояние ssVertical. Откройте список опций свойства +Options и установите значение goEditing в True – это даст возможность редактировать информацию в компоненте StringGrid с помощью клавиатуры и “мыши”.
4 6.1.2 Создание процедур обработки событий FormCreate и Button1Click Двойным нажатием клавиши “мыши” на Форме и кнопке Button1 создайте соответствующие процедуры обработки событий. Используя текст модуля UnZap, внимательно наберите операторы этих процедур. 6.1.3 Текст модуля UnZap
Ре
по зи то ри й
Б ГА
ТУ
Unit UnZap; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, Grids; type TForm1 = class(TForm) StringGrid1: TStringGrid; Button1: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} type zap=record // объявление записи fio :string[20]; mat,fiz,soch:integer; srbal :extended end; var MZap:array[1..9] of zap; // объявление массива записей procedure TForm1.FormCreate(Sender: TObject); var i:integer; begin with StringGrid1 do begin // занесение информации в ячейки StringGrid1 Cells[0,0]:='№пп’; Cells[1,0]:='Фамилия,инициалы'; Cells[2,0]:='Математика'; Cells[3,0]:='Физика'; Cells[4,0]:='Сочинение';
5
Ре
по зи то ри й
Б ГА
ТУ
Cells[5,0]:='Ср.балл'; for i:=1 to 9 do Cells[0,i]:=IntToStr(i); Cells[1,1]:='Первый П.П.'; Cells[2,1]:='3'; Cells[3,1]:='3'; Cells[4,1]:='3'; Cells[1,2]:='Второй В.В.'; Cells[2,2]:='3'; Cells[3,2]:='3'; Cells[4,2]:='4'; Cells[1,3]:='Третий Т.Т.'; Cells[2,3]:='3'; Cells[3,3]:='4'; Cells[4,3]:='4'; Cells[1,4]:='Четвертый Ч.Ч.'; Cells[2,4]:='4'; Cells[3,4]:='4'; Cells[4,4]:='4'; Cells[1,5]:='Пятый П.П.'; Cells[2,5]:='3'; Cells[3,5]:='4'; Cells[4,5]:='5'; Cells[1,6]:='Шестой Ш.Ш.'; Cells[2,6]:='5'; Cells[3,6]:='4'; Cells[4,6]:='4'; Cells[1,7]:='Седьмой С.С.'; Cells[2,7]:='5'; Cells[3,7]:='5'; Cells[4,7]:='4'; Cells[1,8]:='Восьмой В.В.'; Cells[2,8]:='5'; Cells[3,8]:='5'; Cells[4,8]:='5'; Cells[1,9]:='Девятый Д.Д.'; Cells[2,9]:='3'; Cells[3,9]:='5'; Cells[4,9]:='5'; for i:=1 to 9 do with MZap[i] do begin // формирование полей массива записей fio:=Cells[1,i]; mat:=StrToInt(Cells[2,i]); fiz:=StrToInt(Cells[3,i]); soch:=StrToInt(Cells[4,i]); srbal:=(mat+fiz+soch)/3; // вычисление значения ср. балла Cells[5,i]:=FloatToStrF(srbal,ffFixed,5,2); // вывод значения ср.балла end; // в последнюю колонку StringGrid1 end; end; procedure TForm1.Button1Click(Sender: TObject); var i,j :integer; vper:zap; begin for i:=1 to 9 do with StringGrid1,MZap[i] do begin fio:=Cells[1,i]; mat:=StrToInt(Cells[2,i]); fiz:=StrToInt(Cells[3,i]); soch:=StrToInt(Cells[4,i]); srbal:=(mat+fiz+soch)/3; Cells[5,i]:=FloatToStrF(srbal,ffFixed,5,2); end; for i:=2 to 9 do // сортировка методом "пузырька" for j:=9 downto i do if MZap[j-1].srbalMZap[j].fio then begin vper:=MZap[j-1]; MZap[j-1]:=MZap[j]; MZap[j]:=vper; end; for i:=1 to n do // заполнение ячеек StringGrid1 полями массива записей with StringGrid1,MZap[i] do begin Cells[0,i]:=IntToStr(i); Cells[1,i]:=fio; Cells[2,i]:=IntToStr(mat); Cells[3,i]:=IntToStr(fiz); Cells[4,i]:=IntToStr(soch); end; end;
Ре
по зи то ри й
{ Создание нового файла записей} procedure TForm1.BitBtnNewClick(Sender: TObject); var i:integer; begin // вывод на экран окна с предупреждающим сообщением if MessageDlg('Содержимое существующего файла будет уничтожено. Вы уверены?', mtConfirmation, mbYesNoCancel, 0)=mrYes then begin for i:=1 to n do with StringGrid1,MZap[i] do begin // формирование полей массива записей fio:=Cells[1,i]; mat:=StrToInt(Cells[2,i]); fiz:=StrToInt(Cells[3,i]); soch:=StrToInt(Cells[4,i]); end; with OpenDialog1 do begin Title:='Создание файла'; // заголовок окна диалога if Execute then // выполнение стандартного диалога выбора имени файла begin FileNameZap:=FileName; // присваивание имени файла AssignFile(FileZap,FileNameZap); // назначить файлу FileZap имя FileNameZap ReWrite(FileZap); // открыть файл на запись for i:=1 to n do write(FileZap,MZap[i]); // запись в файл массива записей
CloseFile(FileZap); end; end; end; end;
15 // закрытие файла записей
по зи то ри й
Б ГА
ТУ
{Обработчик кнопки изменения размера} procedure TForm1.SpinEdit1Change(Sender: TObject); var i,m:integer; begin m:=StrToInt(SpinEdit1.Text); // присвоить новое значение размера with StringGrid1 do begin RowCount:=m+1; // пересчитать количество строк if m>n then // если строки добавлены то for i:=n+1 to m do // инициализировать новые ячейки begin Cells[0,i]:=IntToStr(i); Cells[1,i]:=''; Cells[2,i]:=''; Cells[3,i]:=''; Cells[4,i]:=''; end; end; n:=m; // запомнить новое значение размера end;
Ре
{ обработчик нажатия кнопки Open } procedure TForm1.BitBtnOpenClick(Sender: TObject); var i:integer; begin with OpenDialog1 do begin Title:='Открытие файла'; // заголовок окна диалога if Execute then // выполнение стандартного диалога выбора имени файла begin FileNameZap:=FileName; // присваивание имени файла AssignFile(FileZap,FileNameZap); // назначить файлу FileZap имя FileNameZap ReSet(FileZap); // открыть файл на чтение n:=0; // инициализация счетчика кол-ва прочитанных из файла элементов while not EoF(FileZap) do begin n:=n+1; // увеличение счетчика
по зи то ри й
Б ГА
ТУ
16 read(FileZap,MZap[n]); // чтение из файла n-го элемента массива записей end; SpinEdit1.Text:=IntToStr(n); // занести кол-во прочитанных записей в SpinEdit StringGrid1.RowCount:=n+1; // присвоить кол-во строк for i:=1 to n do with StringGrid1,MZap[i] do begin // заполнение ячеек StringGrid1 полями массива записей Cells[0,i]:=IntToStr(i); Cells[1,i]:=fio; Cells[2,i]:=IntToStr(mat); Cells[3,i]:=IntToStr(fiz); Cells[4,i]:=IntToStr(soch); end; CloseFile(FileZap); // закрытие файла записей end; end; BitBtnSort.Show; // показать кнопку “Sort” BitBtnSave.Show; // показать кнопку “Save” end;
Ре
{ Сохранение данных в текстовом файле} procedure TForm1.BitBtnSaveClick(Sender: TObject); var i:integer; begin with SaveDialog1 do if Execute then // выполнение стандартного диалога выбора имени файла begin FileNameText:=FileName; // присваивание имени файла AssignFile(FileText,FileNameText); // назначить файлу FileText имя FileNameText ReWrite(FileText); // открыть текстовый файл на запись for i:=1 to n do with MZap[i] do // запись в текстовый файл writeln(FileText,i:3,fio:20,mat:5,fiz:5,soch:5); CloseFile(FileText); // закрытие текстового файла по окончании записи end; BitBtnSort.Hide; // спрятать кнопку ”Sort” end; end. 7.1.4 Работа с приложением Запустите созданное приложение. Занесите в соответствующие поля панели интерфейса информацию об успеваемости учащихся. Кнопкой “New” сохраните данные в файле. Завершите выполнение приложения.
Б ГА
ТУ
17 Вновь запустите приложение и кнопкой “Open” откройте только что созданный файл. Убедитесь, что информация не содержит ошибок. При необходимости обнаруженные ошибки можно исправить, а также дополнить ведомость новой информацией. Для сортировки ведомости в алфавитном порядке воспользуйтесь кнопкой “Sort” и сохраните отсортированную информацию кнопкой “New”. Еще раз завершите и вновь запустите приложение. Кнопкой “Open откройте файл и убедитесь, что в нем теперь содержится ведомость, отсортированная в алфавитном порядке. Кнопкой “Save” сохраните информацию в текстовом файле. Для просмотра содержимого текстового файла воспользуйтесь, например, приложением “Microsoft Word”. Используя все управляющие компоненты панели интерфейса, убедитесь в правильном функционировании приложения во всех предусмотренных режимах работы.
по зи то ри й
7.2 Индивидуальные задания Во всех заданиях предусмотреть сохранение вводимых данных в файле и возможность чтения из ранее созданного файла. Результаты выводить в панель интерфейса и в текстовый файл.
Ре
1. Ведомость абитуриентов, сдавших вступительные экзамены в университет содержит: Ф.И.О. абитуриента, оценки. Определить средний балл по университету и вывести список абитуриентов, средний балл которых выше среднего балла по университету. Первыми в списке должны идти студенты, сдавшие все экзамены на 5. 2. В радиоателье хранятся квитанции о сданной в ремонт радиоаппаратуре. Каждая квитанция содержит следующую информацию: наименование группы изделий (телевизор, радиоприемник и т. п.), марка изделия, дата приемки в ремонт, состояние готовности заказа (выполнен, не выполнен). Вывести информацию о состоянии заказов на текущие сутки по группам изделий. 3. У администратора железнодорожных касс хранится информация о свободных местах в поездах дальнего следования на ближайшую неделю в следующем виде: дата выезда, пункт назначения, время отправления, число свободных мест. Оргкомитет международной конференции обращается к администратору с просьбой зарезервировать m мест до города N на k-й день недели с временем отправления поезда не позднее t часов вечера. Вывести время отправления или сообщение о невозможности выполнить заказ в полном объеме. 4. Разработать программу формирования ведомости об успеваемости студентов. Каждая запись этой ведомости должна содержать: номер группы, Ф.И.О. студента, оценки за последнюю сессию. Вывести списки студентов по группам. В каждой группе Ф.И.О. студентов должны быть расположены в порядке убывания среднего балла.
Ре
по зи то ри й
Б ГА
ТУ
18 5. В справочной аэропорта хранится расписание вылета самолетов на следующие сутки. Для каждого рейса указаны: номер рейса, тип самолета, пункт назначения, время вылета. Вывести все номера рейсов, типы самолетов и времена вылета для заданного пункта назначения в порядке возрастания времени вылета. 6. В исполкоме формируется список учета нуждающихся в улучшении жилищных условий. Каждая запись этого списка содержит: порядковый номер, Ф.И.О., величину жилплощади на одного члена семьи и дату постановки на учет. По заданному количеству k-квартир, выделяемых по данному списку в течение года, вывести весь список с указанием ожидаемого года получения квартиры. 7. Ведомость абитуриентов, сдавших вступительные экзамены в университет содержит: Ф.И.О., адрес, оценки. Определить количество абитуриентов, проживающих в г.Минске и сдавших экзамены со средним баллом не ниже 4.5, вывести их фамилии в алфавитном порядке. 8. Имеется список женихов и список невест. Каждая запись списка содержит пол, имя, возраст, рост, вес, а также требования к партнеру: наименьший и наибольший возраст, наименьший и наибольший вес, наименьший и наибольший рост. Объединить эти списки в список пар с учетом требований к партнерам без повторений женихов и невест. 9. Информация о сотрудниках предприятия содержит: Ф.И.О., номер отдела, должность, дату начала работы. Вывести списки сотрудников по отделам в порядке убывания стажа. 10. В библиотеке имеется список книг. Каждая запись этого списка содержит: фамилии авторов, название книги, год издания. Вывести информацию о книгах, в названии которых встречается некоторое ключевое слово (ввести с клавиатуры). 11. Различные цеха завода выпускают продукцию нескольких наименований. Сведения о выпущенной продукции включают: наименование, количество, номер цеха. Для заданного цеха необходимо вывести количество выпущенных изделий по каждому наименованию в порядке убывания количества. 12. В магазине имеется список поступивших в продажу автомобилей. Каждая запись этого списка содержит: марку автомобиля, стоимость,расход топлива на 100 км, надежность (число лет безотказной работы), комфортность (отличная, хорошая, удовлетворительная). Вывести перечень автомобилей, удовлетворяющих требованиям покупателя, которые вводятся с клавиатуры в виде некоторого интервала допустимых значений. 13. Для книг, хранящихся в библиотеке, задаются: регистрационный номер книги, автор, название, год издания, издательство, количество страниц. Вывести список книг с фамилиями авторов в алфавитном порядке, изданных после заданного года. 14. Каждая запись списка вакантных рабочих мест содержит: наименование организации, расстояние в км от центра города, должность, квалификация(разряд или образование), стаж работы по специальности,
19
Ре
по зи то ри й
Б ГА
ТУ
заработная плата, наличие социального страхования(да/нет), продолжительность ежегодного оплачиваемого отпуска. Вывести список рабочих мест в соответствии с требованиями клиента. 15. Информация об участниках спортивных соревнований содержит: наименование страны, название команды, Ф.И.О. игрока, игровой номер, возраст, рост, вес. Вывести информацию о самой молодой, рослой и легкой команде. 16. В технической службе аэропорта имеется справочник, содержащий записи следующей структуры: тип самолета, год выпуска, расход горючего на 1000 км. Для определения потребности в горючем техническая служба запрашивает расписание полетов. Каждая запись расписания содержит следующую информацию: номер рейса, пункт назначения, дальность полета. Вывести суммарное количество горючего, необходимое для обеспечения полетов на следующие сутки. 17. Информация о сотрудниках фирмы включает: Ф.И.О., табельный номер, количество проработанных часов за месяц, почасовый тариф. Рабочее время свыше 144 часов считается сверхурочным и оплачивается в двойном размере. Вывести размер заработной платы каждого сотрудника фирмы за вычетом подоходного налога, который составляет 12% от суммы заработка. 18. Для участия в конкурсе на замещение вакантной должности сотрудника фирмы желающие подают следующую информацию: Ф.И.О., год рождения, образование(среднее, специальное, высшее), знание иностранных языков(английский, немецкий, французский, владею свободно, читаю и перевожу со словарем), владение компьютером (MSDOS,Windows), стаж работы , наличие рекомендаций. Вывести список претендентов в соответствии с требованиями руководства фирмы. 19. На междугородней АТС информация о разговорах содержит дату разговора, код и название города, время разговора, тариф, номер телефона в этом городе и номер телефона абонента. Вывести по каждому городу общее время разговоров с ним и сумму. 20. При постановке на учет в ГАИ автолюбители указывают следующие данные: марка автомобиля, год выпуска, номер двигателя, номер кузова, цвет, номерной знак, Ф.И.О и адрес. владельца. Вывести список автомобилей, проходящих техосмотр в текущем году, сгруппированных по маркам автомобилей. Учесть, что если текущий год четный, техосмотр проходят автомобили с четными номерами двигателей, иначе – с нечетными номерами. 21. В справочной автовокзала хранится расписание движения автобусов. Для каждого рейса указаны его номер, тип автобуса, пункт назначения, время отправления и прибытия. Вывести информацию о рейсах, которыми можно воспользоваться для прибытия в пункт назначения раньше заданного времени. 22. Для участия в конкурсе исполнителей необходимо заполнить следующую анкету: Ф.И.О., год рождения, название страны, класс музыкального инструмента(гитара, фортепиано, скрипка, виолончель). Вывести список самых молодых лауреатов конкурса по классам инструментов в порядке занятых мест.
Ре
по зи то ри й
Б ГА
ТУ
20 23. Для получения места в общежитии формируется список студентов, который включает Ф.И.О. студента, группу, средний балл, доход на одного члена семьи. Общежитие в первую очередь предоставляется тем, у кого доход на одного члена семьи меньше двух минимальных зарплат, затем остальным в порядке уменьшения среднего балла. Вывести список очередности предоставления мест в общежитии. 24. Список группы студентов содержит следующую информацию: Ф.И.О., рост и вес. Вывести Ф.И.О. студентов, рост и вес которых чаще всего встречаются в списке. 25. Список товаров, имеющихся на складе, включает в себя наименование товара, количество единиц товара, цену единицы и дату поступления товара на склад. Вывести в алфавитном порядке список товаров, хранящихся больше месяца, стоимость которых превышает 1000000 руб., а также общую стоимость всех этих товаров. 26. Список группы студентов содержит следующую информацию: Ф.И.О., рост и вес. Вывести Ф.И.О. студентов, рост и вес которых являются в списке уникальными. 27. В магазине формируется список лиц, записавшихся на покупку товара повышенного спроса. Каждая запись этого списка содержит: порядковый номер, Ф.И.О., домашний адрес покупателя и дату постановки на учет. Удалить из списка все повторные записи, проверяя Ф.И.О. и домашний адрес. 28. Разработать приложение, которое формирует файл F1, содержащий целые числа, и переписывает этот файл в другой файл – F2, помещая в него из F1 только положительные числа. 29. Разработать приложение, переписывающее в текстовый файл T2 содержимое текстового файла T1, но без строк, содержащих цифры. 30. Разработать приложение для слияния двух отсортированных по убыванию значений элементов файлов F1 и F2. Результатом слияния должен быть файл F3, элементы которого упорядочены по возрастанию.
21 Лабораторная работа №8 ПРОГРАММИРОВАНИЕ АЛГОРИТМОВ С ИСПОЛЬЗОВАНИЕМ ФУНКЦИЙ И ПРОЦЕДУР. СОЗДАНИЕ МОДУЛЕЙ
значений функции Y ( x) (1
2
выводит
таблицу
x x ) cos x sin x и ее разложения в ряд в 2 2
Б ГА
Задание:
8.1. Пример создания приложения создать Windows-приложение которое
ТУ
Цель лабораторной работы: освоить методику создания модулей, содержащих процедуры и функции, и использования их в проекте.
2n 2 1 2 n x для значений x от xn до xk c шагом виде суммы S ( x) (1) ( 2 n )! n 0 n
n
по зи то ри й
h=(xk - xn)/10. Создать модуль, в котором вычисление значений Y (x) оформить в виде функции, а вычисление S (x) - в виде процедуры. Подключить модуль к проекту и выполнить созданное приложение. Один из возможных вариантов панели интерфейса создаваемого приложения показан на рис.8.1. 8.1.1. Размещение компонентов на Форме Разместим на Форме компоненты Label, Edit, SpinEdit, BitBtn и Memo. SpinEdit
Edit
BitBtn n
Ре
Label
Рис. 8.1 Сохраним модуль под именем UnModul (текст модуля приведен в п.8.1.4).
22
по зи то ри й
Б ГА
ТУ
8.1.2. Создание модуля и подключение его к проекту В соответствии с заданием создадим модуль, в котором вычисление значений Y (x) оформим в виде функции, а вычисление S (x) - в виде процедуры. Для создания модуля откроем в главном меню пункт File и щелкнем “мышью” на опции New…(Новый…). Delphi откроет панель New Items(Репозиторий), в которой сделаем активной пиктограмму Unit(Модуль) и нажмем кнопку OK. Откроется окно с “пустым” модулем Unit2. С помощью опции Save As… меню File сохраним модуль в папке c файлами проекта, присвоив ему имя, например, UnFuncProc. В этом модуле операторы вычисления Y(x) в виде подпрограммыфункциии F и операторы вычисления S(x) в виде подпрограммы-процедуры Sum оформим по правилам создания модулей (текст модуля UnFuncProc приведен в п.8.1.3). Для подключения модуля UnFuncProc к проекту необходимо сделать активным окно с текстом модуля UnModul, затем в меню File выбрать опцию Use Unit…и в открывшемся окне Use Unit указать имя используемого модуля – UnFuncProc. Убедитесь в том, что в разделе Implementation модуля UnModul появился оператор Uses UnFuncProc; , который Delphi вставила в текст модуля UnModul. Откройте главный файл проекта и убедитесь в том, что проект не содержит посторонних модулей и файлов. 8.1.3. Текст модуля UnFuncProc unit UnFuncProc; interface
var n:integer; // количество слагаемых в сумме S Function F(x:extended):extended; Procedure Sum(x:extended;Var s:extended); Implementation
Ре
Function F(x:extended):extended; begin result:=(1-x*x*0.5)*cos(x)-0.5*x*sin(x); end; Procedure Sum(x:extended;Var s:extended); var c:extended; k:integer; begin c:=-x*x*0.5; S:=1; for k:=1 to n do
23
ТУ
begin s:=s+c*(2*k*k+1); c:=-c*x*x/((2*k+1)*(2*k+2)); end; end; end. 8.1.4. Текст модуля UnModul Unit UnModul;
по зи то ри й
type TForm1 = class(TForm) Memo1: TMemo; Label1: TLabel; Label2: TLabel; Label3: TLabel; Edit1: TEdit; Edit2: TEdit; SpinEdit1: TSpinEdit; BitBtn1: TBitBtn; procedure FormCreate(Sender: TObject); procedure BitBtn1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
Б ГА
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Spin, Buttons;
Ре
Type func=function(x:extended):extended; // функциональный тип proc=procedure(x:extended;Var s:extended); // процедурный тип var Form1: TForm1; implementation uses UnFuncProc; {$R *.DFM}
// Delphi подключает модуль UnFuncProc
24
ТУ
procedure TForm1.FormCreate(Sender: TObject); begin SpinEdit1.text:='4'; // начальное значение N Edit1.text:=’0.1’; // начальное значение Xn Edit2.text:=’2.0’; // начальное значение Xk Memo1.Clear; Memo1.Lines.Add('Лабораторная работа №8 - Создание модулей'); end;
Ре
по зи то ри й
Б ГА
{В процедуре Tablica вычисляется и выводится таблица значений x, S(x) и Y(x)} procedure Tablica(Sum:proc;F:func;n:integer;xn,xk,h:extended); var x,y,s:extended; begin Form1.Memo1.Lines.Add(#9+'x'+#9+'S'+#9+'Y');// заголовок таблицы x:=xn; repeat // цикл по x Sum(x,s); // вызов процедуры Sum для вычисления S(x) y:=F(x); // обращение к функции F для вычисления Y(x) Form1.Memo1.Lines.Add(#9+FloatToStrF(x,ffFixed,5,2) // вывод x +#9+FloatToStrF(s,ffFixed,6,3) // вывод S // вывод Y +#9+FloatToStrF(y,ffFixed,6,3)); x:=x+h; until x>xk; end; procedure TForm1.BitBtn1Click(Sender: TObject); var xn,xk,h:extended; begin n:=StrToInt(SpinEdit1.Text); xn:=StrToFloat(Edit1.Text); xk:=StrToFloat(Edit2.Text); h:=(xk-xn)*0.1; // шаг h Tablica(Sum,F,n,xn,xk,h); // вызов процедуры Tablica для вычисления таблицы end; end.
8.2. Выполнение индивидуального задания По указанию преподавателя выберите из таблицы два варианта индивидуальных заданий. Создайте модуль, в котором вычисление значений S (x) реализуйте в виде подпрограммы-процедуры, а вычисление значений Y (x) - в виде подпрограммы-функции. На панели интерфейса установите компонент, с помощью которого реализуйте возможность выбора соответствующего варианта задания и вывод таблицы значений x, S i ( x),Yi ( x) , где i-номер варианта. Созданный модуль подключите к проекту и выполните приложение.
25 Индивидуальные задания В заданиях необходимо вывести на экран таблицу значений функции Y(x) и ее разложения в ряд S(x) для значений x от x n до x k с шагом
h ( x k xn ) / 10 .
xn
xk
S(x)
ln 3 ln 2 3 2 ln n 3 n 1 x x ... x 1! 2! n!
8
cos 2 x cos nx ... 2 n
18
0.1
1
2
5
9 5
cos x
по зи то ри й
1
n
3
5
4 5
sin x
4
0.1
0.8
x sin x 2 sin 2 ... x n sin n 4 4 4
12
0.8
x5 x 4 n1 x ... 5 4n 1
16
0.1
Ре
5
6
0.1
1
sin 2 x sin nx ... (1) n1 2 n
cos x cos nx 1 ... 1! n!
Y(x)
3x
Б ГА
№
ТУ
Близость значений S(x) и Y(x) во всем диапазоне значений x указывает на правильность вычисления S(x) и Y(x).
6
14
ln 2 sin
x 2
x 2
4 1 2 x cos x 2 4 x sin
1 1 x 1 ln arctgx 4 1 x 2
e cos x cos(sin x)
26
0.1
1
0.8
0.2
x 1 1 x 1 1 x 1 ... x 1 3 x 1 2n 1 x 1
2 n 1
6
0.8
cos 2 x cos 4 x cos 2nx ... 2 3 15 4n 1
11 0.1 12 0.1
1
13 0.1
0.8
Ре
14 0.1
15 5
16 -1
0.8
1 sin x 2 4 x2 x 18 (1 ) cos x sin x 2 2 20
2 3 2 n 2n 1 2 n 1 x ... (1) x 2 (2n)!
1 ln x 2
1 2 2 (x ) 16 4 3
cos 2 x cos nx ... (1) n 2 2 n2
cos x
по зи то ри й
10 5
1
2
1 2 ln( 1 2 x cos x ) 10 2 3
x 2 cos 2 x n cos n 3 3 ... 3 1 2 n
x cos
3
9
8
(1 2 x 2 )e x
ТУ
8
0.1
3 2 2n 1 2 n x ... x 1! n!
Б ГА
7
1
x cos x 2 cos 2 ... x n cos n 14 4 4 4
3x 8x 2 ... n(n 2) x n
cos 3x cos(2n 1) x cos x 2 ... 3 (2n 1) 2
1
n x2 x3 x 4 n 1 x x ... (1) 2 3 4 n
12 18
10
x cos x 2 4 1 2 x cos x 2 4
x(3 x) (1 x) 3
2 8
4
x
ln(1 x)
27
18 -2
-0.1
19 0.1 1
2n (1 x) 4 n (1 x) (1 x) ... (1) 16 2 n
2n (2 x) 2 (2 x) 4 n (2 x) ... (1) 2 24 (2n)!
8
2(cos2 x 1)
10
xarctgx ln 1 x 2
12
2
21 0.1 0.5
x
22 0.1 1
x n2 1 x 1 2 ... 2 n! 2
Б ГА
20 0.1 0.8
x2 x4 x 2n n 1 ... (1) 2 12 2n(2n 1) x3 x 2 n 1 ... (1) n 3 2n 1
15
arctgx
14
x2 x e 2 1 4 2
по зи то ри й
n
23 0.1 1 24 0.1 1 25 0.1 1
26 0.1 1 27 0.1 1
Ре
28 0.1 1
29 0.1 1
30 0.1 1
2x (2 x) n 1 ... 1! n!
2 n 1 x3 x5 n 1 x ... (1) 3 15 4n 2 1 x3 x 2n 1 x ... 3! (2n 1)!
x2 x4 x6 x 2n ... (1) n n! 1! 2! 3! 2 2n x x 1 ... (1) n 2! (2n)!
1
1
cos
1! 2
4 x ...
cos n n!
e2 x
12
1 x2 x arctgx 2 2
8
e x e x 2
2 n 1 x3 n x x ... (1) 3! (2n 1)!
x2
14
e
8
cos x x cos
4
12
e
10
e x e x 2
16
sin x
2n
x x 1 ... 2! (2n)!
x
10
4 xn
ТУ
17 0.2 0.8
1 x 1 sh x ch x 4 x 1 ln 2 2x x2
x 4x2 n2 ... xn 3! 5! (2n 1)!
cos(x sin
4
)
28 Лабораторная работа №9 ПРОГРАММИРОВАНИЕ АЛГОРИТМОВ С ИСПОЛЬЗОВАНИЕМ ДИНАМИЧЕСКИХ СТРУКТУР ДАННЫХ
Примеры создания приложений
ТУ
Цель лабораторной работы: освоить методику создания приложений, в которых используются динамические структуры данных.
по зи то ри й
Б ГА
9.1 Использование динамических массивов Задание: создать приложение для вычисления наименьшего и наибольшего из всех значений элементов целочисленной матрицы A={aij}, где i=1,2,…, m; j=1,2,…, n. Значения m и n задаются пользователем на панели интерфейса, а элементы матрицы A генерируются с помощью датчика случайных чисел и размещаются в памяти динамически. Один из возможных вариантов панели интерфейса создаваемого приложения показан на рис.9.1. 9.1.1. Размещение компонентов на Форме Разместим на Форме компоненты Label, SpinEdit, Button и StringGrid.
Label
SpinEdit
Label
StringGrid
Button
Label
Ре
Рис. 9.1 Сохраним модуль под именем UnDinMas (текст модуля приведен в п.9.1.3). 9.1.2 Создание процедур обработки событий FormCreate и Button1Click Двойным нажатием клавиши “мыши” на Форме и кнопке Button1 создайте соответствующие процедуры обработки событий. Пользуясь текстом модуля UnDinMas, внимательно наберите операторы этих процедур. При желании можно создать процедуру, которая будет выделять заданным цветом границы ячеек с наименьшим и наибольшим значениями в
9.1.3 Текст модуля UnDinMas
interface
Б ГА
Unit UnDinMas;
ТУ
29 компоненте StringGrid. Для создания такой процедуры сделайте активным компонент StringGrid и на странице Events(события) Инспектора Объектов дважды щелкните “мышью” в правой части события OnDrawCell. В ответ Delphi создаст обработчик этого события – процедуру procedure TForm1.StringGrid1DrawCell и установит курсор между операторами begin и end этой процедуры. Используя текст модуля UnDinMas, внимательно наберите операторы процедуры TForm1.StringGrid1DrawCell.
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Spin, Grids, Buttons;
Ре
по зи то ри й
type TForm1 = class(TForm) Label1: TLabel; SpinEdit1: TSpinEdit; SpinEdit2: TSpinEdit; Label8: TLabel; StringGrid1: TStringGrid; Label2: TLabel; Label5: TLabel; Label3: TLabel; Button1: TButton; Label4: TLabel; Label6: TLabel; Label7: TLabel; Label9: TLabel; procedure FormCreate(Sender: TObject); procedure SpinEdit1Change(Sender: TObject); procedure SpinEdit2Change(Sender: TObject); procedure StringGrid1DrawCell(Sender: TObject; Col, Row: Integer; Rect: TRect; State: TGridDrawState); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
30 var Form1: TForm1;
Ре
по зи то ри й
Б ГА
ТУ
implementation {$R *.DFM} Type Mas=array[1..1] of integer; // массив целочисленных значений pMas=array[1..1] of ^mas; // массив указателей var // объявление глобальных переменных pA:^pMas; // указатель на массив указателей m,n,max,min:integer; procedure TForm1.FormCreate(Sender: TObject); begin m:=6; // начальное значение m n:=8; // начальное значение n SpinEdit1.Text:='6'; SpinEdit2.Text:='8'; StringGrid1.RowCount:=m; // количество строк StringGrid1.ColCount:=n; // количество столбцов end; procedure TForm1.SpinEdit1Change(Sender: TObject); begin m:=StrToInt(SpinEdit1.Text);// m присваивается содержимое поля редактора StringGrid1.RowCount:=m; end; procedure TForm1.SpinEdit2Change(Sender: TObject); begin n:=StrToInt(SpinEdit2.Text);// n присваивается содержимое поля редактора StringGrid1.ColCount:=n; end; procedure TForm1.Button1Click(Sender: TObject); label 1; var i,j,k,l,r:integer; begin Randomize; // инициализация датчика случайных чисел GetMem(pA,4*m); // выделение памяти для массива из m указателей for i :=1 to m do begin // формирование i-й строки массива { Выделение памяти для n элементов i-й строки} GetMem(pA^[i],SizeOf(integer)*n); pA^[1]^[1]:=Random(1000);// случайное целое число занести в массив for j:=1 to n do begin // формирование j-го элемента строки 1: r:=Random(1000); // генерирование случайного числа
31
Ре
по зи то ри й
Б ГА
ТУ
for k:=1 to i do for l:=1 to j do if r=pA^[k]^[l] then // если такое число уже есть в массиве тогда... goto 1; pA^[i]^[j]:=r; // случайное число занести в массив end; end; for i:=1 to m do // элементы массива занести в ячейки for j:=1 to n do // компонента StringGrid1 StringGrid1.Cells[j-1,i-1]:=IntToStr(pA^[i]^[j]); { Поиск min и max значений среди элементов массива} max:=pA^[1]^[1]; min:=max; for i:=1 to m do for j:=1 to n do if pA^[i]^[j]max then max:=pA^[i]^[j]; Label7.Caption:=IntToStr(min); // вывод min значения Label9.Caption:=IntToStr(max); // вывод max значения for i:=1 to m do { Освобожение памяти, занимаемой n элементами i-й строки} FreeMem(pA^[i],SizeOf(integer)*n); { Освобождение памяти, занимаемой массивом из m указателей} FreeMem(pA,4*m); end; procedure TForm1.StringGrid1DrawCell(Sender: TObject; Col, Row: Integer; Rect: TRect; State: TGridDrawState); begin with StringGrid1.Canvas do if StringGrid1.Cells[Col,Row]=IntToStr(min) then // если элемент ячейки begin // равен min тогда... Brush.Color:=clGreen; // установить цвет кисти зеленый FrameRect(Rect); // выделить границы ячейки заданным цветом end else if StringGrid1.Cells[Col,Row]=IntToStr(max) then // если элемент ячейки begin // равен max тогда... Brush.Color:=clRed; // установить цвет кисти красный FrameRect(Rect); // выделить границы ячейки заданным цветом end end; end.
Б ГА
ТУ
32 9.2 Использование динамических списков Задание2: создать приложение для формирования стека, который заполняется путем ввода целых положительных чисел с клавиатуры. Как только будет введено первое отрицательное число, содержимое стека выводится на панель интерфейса, а память занимаемая его элементами освобождается. Один из возможных вариантов панели интерфейса создаваемого приложения показан на рис.9.2. 9.2.1. Размещение компонентов на Форме Разместим на Форме компоненты Label, Edit, Button и Memo.
Memo
Label
по зи то ри й
Edit
Button
Рис. 9.2
Сохраним модуль под именем UnStek (текст модуля приведен в п.9.2.3).
Ре
9.2.2 Создание процедур обработки событий FormCreate и Button1Click Двойным нажатием клавиши “мыши” на Форме и кнопке Button1 создайте соответствующие процедуры обработки событий. Используя текст модуля UnStek, внимательно наберите операторы этих процедур. 9.2.3 Текст модуля UnStek
Unit UnStek; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Label1: TLabel;
33
Ре
по зи то ри й
Б ГА
ТУ
Edit1: TEdit; Button1: TButton; Label2: TLabel; Label3: TLabel; Memo1: TMemo; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} Type PSt=^Zap; Zap=record inf:integer; adr:PSt end; Var // объявление глобальных переменных: PVer, // указатель вершины стека PTek:PSt; // текущий указатель ElSt:integer; // элемент стека procedure TForm1.Button1Click(Sender: TObject); begin New(PTek); // выделить память ElSt:=StrToInt(Edit1.Text);// в ElSt занести значение из Edit1 PTek^.inf:=ElSt; // в информационную часть стека занести ElSt PTek^.adr:=PVer; // в адресную часть занести указатель на вершину PVer:=PTek;// указатель вершины должен указывать на последний элемент if ElSt>=0 then // если элемент стека неотрицательный тогда... begin Edit1.Text:='';// очистить окно редактора Edit1 Edit1.SetFocus;// передать фокус ввода редактору Edit1 end else begin Memo1.Lines.Add('Элементы стека:'); // вывести заголовок repeat Memo1.Lines.Add(#9+IntToStr(PTek^.inf));// вывод элементов PVer:=PTek^.adr; Dispose(PTek); // освободить память
34
Б ГА
end; procedure TForm1.FormCreate(Sender: TObject); begin PVer:=nil; // инициализировать указатель вершины ElSt:=0; // инициализировать элемент стека end; end.
ТУ
PTek:=PVer until PTek=nil; end;
9.3. Выполнение индивидуального задания По указанию преподавателя выберите два варианта индивидуальных заданий. В заданиях №1-№15 необходимо использовать динамические массивы, а в заданиях №16-№30 – динамические списки. Во всех заданиях необходимо предусмотреть контрольный вывод исходных данных.
Ре
по зи то ри й
1. Создать приложение, которое осуществляет ввод k значений элементов одномерного массива с клавиатуры, меняет местами элементы с наибольшим и наименьшим значениями среди четных и выводит полученный массив. 2. Создать приложение, которое осуществляет ввод m строк и n столбцов двумерного массива с клавиатуры и выводит номер строки и номер столбца наименьшего из всех значений его элементов. 3. Создать приложение, которое осуществляет ввод k значений элементов одномерного массива с клавиатуры и выводит порядковый номер элемента с наименьшим значением среди нечетных. 4. Создать приложение, которое осуществляет ввод значений элементов двумерного массива n-го порядка с клавиатуры и выводит значение наибольшего из элементов главной диагонали. 5. Создать приложение, которое осуществляет ввод k значений элементов одномерного массива с клавиатуры, изменяет порядок следования элементов на противоположный и выводит полученный массив. 6. Создать приложение, которое осуществляет ввод k значений элементов одномерного массива с клавиатуры и выводит порядковый номер элемента с наибольшим значением среди четных. 7. Создать приложение, которое осуществляет ввод значений элементов двумерного массива n-го порядка с клавиатуры и выводит значение суммы элементов главной диагонали. 8. Создать приложение, которое осуществляет ввод k значений элементов одномерного массива с клавиатуры, меняет местами элементы с минимальным и максимальным значениями и выводит полученный массив.
Ре
по зи то ри й
Б ГА
ТУ
35 9. Создать приложение, которое осуществляет ввод k значений элементов одномерного массива с клавиатуры и выводит порядковый номер элемента с наименьшим значением среди положительных. 10. Создать приложение, которое осуществляет ввод значений элементов двумерного массива n-го порядка с клавиатуры, изменяет порядок следования элементов главной диагонали на противоположный и выводит преобразованный массив. 11. Создать приложение, которое осуществляет ввод k значений элементов одномерного массива с клавиатуры, меняет местами элементы с минимальным и максимальным значениями среди положительных и выводит полученный массив. 12. Создать приложение, которое осуществляет ввод k значений элементов одномерного массива с клавиатуры и выводит порядковый номер элемента с наибольшим значением среди отрицательных. 13. Создать приложение, которое осуществляет ввод k значений элементов одномерного массива с клавиатуры, меняет местами элементы с наибольшим значением среди отрицательных и наименьшим среди положительных и выводит полученный массив. 14. Создать приложение, которое осуществляет ввод k значений элементов одномерного массива с клавиатуры и выводит среднее арифметическое значение элементов массива. 15. Создать приложение, которое осуществляет ввод k значений элементов одномерного массива с клавиатуры, меняет местами элементы с наименьшим значением среди четных и наибольшим среди нечетных и выводит полученный массив. 16. Создать приложение, которое заносит в стек целые положительные числа с клавиатуры, выводит содержимое стека и среднее арифметическое значение его элементов. 17. Создать приложение, которое заносит в стек символы с клавиатуры, выводит содержимое стека и сообщение о том, содержится или нет в стеке заданный символ. 18. Создать приложение, которое заносит в каждый элемент стека английское слово с клавиатуры и, как только будет введено слово “end”, выводит содержимое стека. 19. Создать приложение, которое заносит в стек произвольные целые числа с клавиатуры, выводит содержимое стека и сообщение о том, содержится или нет в стеке заданное число. 20. Создать приложение, которое заносит в стек символы с клавиатуры, выводит содержимое стека и сообщение о том, упорядочены ли элементы стека по алфавиту или нет. 21. Создать приложение, которое заносит в стек положительные целые числа с клавиатуры и, как только будет введено число, равное сумме введенных чисел, выводит содержимое стека.
Ре
по зи то ри й
Б ГА
ТУ
36 22. Создать приложение, которое заносит в стек произвольные числа с клавиатуры, выводит содержимое стека и сообщение о том, упорядочены ли элементы стека по убыванию. 23. Создать приложение, которое заносит в каждый элемент стека русское слово с клавиатуры и, как только будет введено слово “конец”, выводит содержимое стека и сообщение о том, содержится или нет в стеке заданное слово. 24. Создать приложение, которое заносит в стек произвольные числа с клавиатуры, выводит содержимое стека и удаляет из стека наибольший элемент. 25. Создать приложение, которое заносит в стек произвольные целые числа с клавиатуры. Как только сумма введенных чисел станет равна нулю, приложение должно вывести содержимое стека. 26. Создать приложение, которое заносит в каждый элемент стека русское слово с клавиатуры и, как только будет введено слово “конец”, выводит содержимое стека и затем удаляет из него любое слово, содержащееся в стеке (ввести с клавиатуры). 27. Создать приложение, которое заносит в стек произвольные целые числа с клавиатуры. Как только будет введено число 0(ноль), приложение должно вывести содержимое стека, а затем сформировать из него два новых стека: в первом должны находиться положительные, а во втором – отрицательные числа. 28. Создать приложение, которое символы, упорядоченные по алфавиту, вводит с клавиатуры и заносит в стек. Приложение должно вывести содержимое стека, ввести с клавиатуры заданный символ и вставить его в стек так, чтобы элементы стека опять оказались упорядоченными по алфавиту. 29. Создать приложение, которое заносит в стек буквы русского и латинского алфавитов в произвольном порядке с клавиатуры. Как только будет введен символ “.”(точка), приложение должно вывести содержимое стека, а затем сформировать из него два новых стека: в первом должны находиться буквы русского, а во втором – буквы латинского алфавита. 30. Создать приложение, которое заносит в стек целые числа с клавиатуры. Как только будет введено число 9999, приложение выводит содержимое стека и реверсирует стек(направления ссылок в стеке изменяются так, что вершина и дно стека меняются местами).
37 Лабораторная работа №10 СОЗДАНИЕ WINDOWS-ПРИЛОЖЕНИЙ
ТУ
Цель лабораторной работы: совершенствовать навыки использования возможностей визуальной среды Delphi для создания Windows-приложений.
Ре
по зи то ри й
Б ГА
Выполнение индивидуального задания 1. Используя визуальные компоненты Edit, Label и Button, создать приложение, реализующее простейший калькулятор с четырьмя арифметическими действиями (сложение, вычитание, умножение и деление). 2. Используя визуальные компоненты Edit, Label и Button, создать приложение, реализующее простейший калькулятор с двумя арифметическими действиями (сложение, вычитание) и памятью. 3. Используя визуальные компоненты Edit, Label и Button, создать приложение, реализующее простейший калькулятор с двумя арифметическими действиями (сложение, вычитание) и функциями (sin, cos). 4. Используя визуальные компоненты Edit, Label и Button, создать приложение, реализующее простейший калькулятор с двумя арифметическими действиями (умножение, деление) и функциями (Exp, Ln). 5. Используя визуальные компоненты Edit, Label, Button и ListBox, создать приложение, реализующее простейший калькулятор с двумя арифметическими действиями (сложение, вычитание) и памятью в виде ListBox. 6. Используя визуальные компоненты Edit, Label, Button и ListBox, создать приложение, реализующее простейший калькулятор с двумя арифметическими действиями (умножение, деление) и памятью в виде ListBox. 7. Используя визуальные компоненты Edit, Label, Button и ListBox, создать приложение, реализующее простейший калькулятор с двумя арифметическими действиями (сложение, вычитание), функциями (sin, cos) и памятью в виде ListBox. 8. Используя визуальные компоненты Edit, Label, Button и ListBox, создать приложение, реализующее простейший калькулятор с двумя арифметическими действиями (умножение, деление), функциями (Exp, Ln) и памятью в виде ListBox. 9. Используя визуальные компоненты Edit, Label и Button, создать приложение, реализующее ввод строки из нескольких слов и подсчет количества слов в строке. 10. Используя визуальные компоненты Edit, Label и Button, создать приложение, реализующее ввод строки из нескольких слов и вывод слова наибольшей длины. 11. Используя визуальные компоненты Edit, Label, Button и ListBox, создать приложение, реализующее ввод строки из нескольких слов и сортировку в ListBox слов в алфавитном порядке.
Label Строка
Б ГА
ТУ
38 12. Используя визуальные компоненты Edit, Label, Button и ListBox, создать приложение, реализующее ввод строки из нескольких слов и перестановку в ListBox слов в порядке, обратном введенному. 13. Используя визуальные компоненты Edit, Label, Button и ListBox, создать приложение, реализующее ввод отдельных строк, добавление их в ListBox и удаление из списка ListBox. 14. Используя визуальные компоненты Edit, Label, Button и ListBox, создать приложение, реализующее ввод отдельных строк, добавление их в ListBox и удаление из списка ListBox. 15. Создать приложение, реализующее вывод текстового файла в компонент Memo. 16. Создать приложение, на панели интерфейса которого с помощью кнопок “Добавить” и “Удалить” можно обновлять список строк.
Список строк
Edit1
по зи то ри й
ListBox1 Добавить
Button
Удалить
Выход
17. Создать приложение, на панели интерфейса которого из заданного в программе ценника(ListBox1) формировать счет оплаты за товары (ListBox2). С помощью кнопок “Добавить” и “Удалить” реализовать возможность корректировки строк счета. Label
Счет оплаты за товары
Товар
Цена
Товар
Количество
ListBox1
Количество
Цена
ListBox2
Ре
Edit1
Добавить Удалить Выход Итого: Button
Edit2
39 18. Создать приложение, на панели интерфейса которого вводится имя текстового файла и нажатием кнопки “Читать” поле Memo1 заполняется строками этого файла. С помощью кнопки “Очистить” реализовать возможность очистки Edit1 и Memo1. Имя текстового файла: Edit1
Текст файла:
ТУ
Memo1 Читать
Б ГА
Очистить Выход
по зи то ри й
19. Создать приложение, на панели интерфейса которого вводится строка, а кнопкой “Добавить” формируется поле “Список строк1”. Кнопка “Перенести” служит для переноса сразу нескольких выбранных строк из поля “Список строк1” в поле “Список строк2”. Кнопка “Очистить” должна очищать все поля. Список строк1 Список строк2 Введите строку: Edit1
ListBox1
ListBox2
Добавить
Перенести Очистить Выход
20. Создать приложение для формирования ведомости с панелью интерфейса следующего вида
экзаменационной
Экзаменационная ведомость
Ре
Группа
Группа:
ComboBox1
Ф.И.О.:
Edit1
Оценка:
ComboBox2
Добавить
Очистить
▼
▼ Выход
ListBox1
Ф.И.О.
Оценка
40 21. Создать приложение для перевода вещественных чисел из десятичной системы счисления в шестнадцатеричную систему и обратно с панелью интерфейса следующего вида Число в 10 с/с:
Число в 16 с/c: Edit2
ТУ
Edit1 Выход
1016
1016
Телефон:
Добавить
Edit1
ListBox1
Время
Edit2
Тариф: Edit3
Сумма
Очистить
по зи то ри й
Время:
Телефон
Б ГА
22. Создать приложение для учета оплаты за телефон с панелью интерфейса следующего вида
Выход
Итого:
Edit4
23. Создать приложение для перезаписи файлов, выбранных из каталога 1, в каталог 2 с панелью интерфейса следующего вида Каталог 1
Edit1
Каталог 2
Edit2
Имена файлов:
ListBox2
Ре
ListBox1
Имена файлов:
Показать
Переписать
Выход
41 24. Создать приложение для вывода содержимого текстового файла с панелью интерфейса следующего вида Каталог
выбранного
Содержимое выбранного файла: Показать
Edit1
ListBox1
ComboBox1
ТУ
Файлы:
Выход
Б ГА
Вывести
25. Создать приложение для организации списка адресов с панелью интерфейса следующего вида Фамилия
Список адресов
Добавить
Фамилия
Областной Улица Дом Кв центр
по зи то ри й
Edit1 Обл. центр
ComboBox1 ▼
Убрать
ListBox1
Улица
Сортировка
Edit2
Дом
Кв.
Выход
26. Создать приложение для организации ведомости сдачи экзаменов с панелью интерфейса следующего вида Дисциплина
Добавить
Edit1
Ре
Оценка
Очистить
Фамилия Дисциплина
Оценка
ListBox1
Edit2
Фамилия,инициалы Edit3
Ведомость сдачи экзаменов
Сортировка Выход Средний балл:
Label1
42 27. Создать приложение для организации списка сотрудников фирмы с панелью интерфейса следующего вида Фамилия Должность Оклад
Фамилия Добавить
Edit1 Должность
Сортировать Выход
Edit2
Б ГА
Оклад
ТУ
Очистить ▼
ComboBox1
ListBox1
28. Создать приложение для организации списка приема пациентов с панелью интерфейса следующего вида Врач ComboBox1
Список приема пациентов ▼
Добавить
Врач
Время
Пациент
по зи то ри й
ListBox1
Время приема
ComboBox2
▼
Пациент
Очистить
Выход
Edit1
29. Создать приложение для организации расписания вылета самолетов с панелью интерфейса следующего вида Номер рейса ComboBox1 ▼
Расписание вылета самолетов
Добавить
Рейс
ListBox1
Ре
Тип самолета ComboBox2 ▼
Сортировать
Пункт назначения ComboBox3
▼
Очистить
Время вылета Edit1
Выход
Самолет
Город Время
43 ЛИТЕРАТУРА
6.
Ре
по зи то ри й
7. 8. 9.
ТУ
5.
Фаронов В.В. DELPHI 3: Учебный курс. – М.: Нолидж, 1998. Федоров А.Г. Delphi 3.0 для всех.. - М.: КомпьютерПресс, 1998. Гофман В., Хомоненко А. Delphi 5. СПб.: БХВ- Санкт-Петербург, 2000. Программирование на языке Borland Pascal в среде Windows. Лабораторный практикум по курсу “Программирование”. В 2-х частях для студентов радиотехнических и экономических специальностей / А.В.Епихин, А.Б.Закалюкин, С.В.Колосов, А.А.Навроцкий, А.И.Шакирин; Под общ. ред. С.В.Колосова. – Мн.:БГУИР, 1997. Программирование в среде Delphi: Лабораторный практикум для студентов всех специальностей / А.Б.Закалюкин, С.В.Колосов, А.А.Навроцкий, А.К.Синицын, А.И.Шакирин; Под общей ред. А.К.Синицина. – Мн.: БГУИР, 1998. Лабораторный практикум по программированию. Ч.2./ А.А.Бурцев, С.В.Колосов, Д.В.Офицеров, В.И.Убийконь, А.И.Шакирин; Под общ. ред. С.В.Колосова. -Мн.:БГУИР, 1994. Н.Вирт. Алгоритмы + структуры данных = программы. _М.:Мир, 1985. Д.Кнут. Искусство программирования для ЭВМ. т.3 – М.: Мир, 1978. Прищепов М.А., Степанцов В.П., Севернева Е.В. Основы алгоритмизации и программирования. Мн.: Элайда, 2000.
Б ГА
1. 2. 3. 4.
44
Содержание
Стр.
Программирование алгоритмов с использованием записей…………………. 3 Программирование алгоритмов с использованием файлов………………….. 10
ТУ
Программирование алгоритмов с использованием функций и процедур. Создание модулей……………………………………………………………… 21 Программирование алгоритмов с использованием динамических структур данных…………………………………………………………………………… 28
Б ГА
Создание Windows-приложений……………………………………………….. 37
Ре
по зи то ри й
Литература………………………………………………………………………. 43