- •Коренькова Татьяна Николаевна
- •Часть 2
- •Практическая часть
- •Типизированные файлы.
- •Нетипизированные файлы.
- •Библеотека graph
- •Практическая часть Основные графические операторы для построения изображений:
- •Процесс построения изображений с помощью графических процедур разбивается на отдельные этапы:
- •Пример программы построения графика функции.
- •Практическая часть
- •Практическое занятие №24. Изучение интегрированной среды разработчика.
- •Ход работы
- •1. Загрузите систему визуального программирования Delphi.
- •Закройте окно программы Forml, минимизируйте главное окно Delphi и создайте на рабочем диске папку с названием группы, а в ней папку, названную вашей фамилией. Снова активизируйте окно Delphi.
- •Сохраните созданную программу в своей папке.
- •6. Визуально ознакомьтесь со свойствами формы Left, Тор, Width и Height.
- •7. Исследуйте, как изменение значений свойств Left, Тор, Width или Height формы в окне ObjectInspector ведет к изменению расположения или размера формы.
- •8. Измените цвет фона формы.
- •Выполните программу еще раз (см. Пункт 3).
- •Вставьте в форму текстовое поле (объект типа Label) с текстом «Анкета студента».
- •12. Вставьте в форму объект типа Image (картинка).
- •13. Вставьте свою портретную фотографию с помощью свойства Picture (иллюстрация) объекта Imagel.
- •14. Наложите свою художественную фотографию на портретную, вставив в форму еще один объект типа Image.
- •15. Поэкспериментируйте со свойством Visible (видимость) двух изображений, каждый раз выполняя программу (см. Пункт 3).
- •16. Вставьте в форму кнопки для поочередного отображения наложенных одна на другую фотографий - два объекта типа Button с названиями Buttonl и Button2.
- •17. Запрограммируйте кнопку «Портретная фотография» так, чтобы после ее нажатия в форме появлялась портретная фотография.
- •18. Запрограммируйте кнопку «Художественная фотография» соответственно ее назначению (см. Пункт 17).
- •Запустите программу и убедитесь, что кнопки выполняют свои функции. Закройте окно программы «Анкета студента».
- •Создайте ехе-файл проекта
- •Практическое занятие №25 Создание простого проекта. Задачаобобменевалюты
- •Ход работы
- •1. Вставьте в форму два объекта типа RadioButton (переключатель), как показано на рис. 7.
- •2. Задайте начальное значение второго переключателя как активное.
- •16. Запустите программу и убедитесь, что переключатели выполняют предписанные им функции.
- •17. Запрограммируйте кнопку «Выход».
- •18. Запрограммируйте кнопку «Вычислить».
- •24. Создайте ехе-файл Вашей программы.
- •25. Закройте среду Delphi, запустите созданную программу и выполните вычисления для разных входных данных.
- •26. Продемонстрируйте созданную форму преподавателю. За- кончите работу.
- •Практическое занятие №26 Объявление класса, создание экземпляров класса.Задачатабулированияфункции Объекты Memo, MainMenu, PopupMenu, CheckBox, GroupBox. Программирование циклов
- •Ход работы
- •Загрузите среду визуального программирования Delphi.
- •Поменяйте заголовок (Caption) формы с «Forml» на «Табулирование функции» (без кавычек) и увеличьте размеры формы в вертикальном направлении.
- •Смените пиктограмму в левом Верхнем углу формы, указав конкретный файл с рисунком пиктограммы в поле значения свойства Icon (пиктограмма) формы.
- •21. Запрограммируйте команду «Табулировать».
- •Практическое занятие №27 Создание наследованного класса. Задачаобиржеценныхбумаг
- •Ход работы
- •8. В окне текста программы перед разделом implementation введите описание констант и переменных программы:
- •10. В окне текста программы после раздела implementation введите описание метода Refresh формы.
- •Сохраните выполненную на данный момент работу в своей папке.
- •Практическое занятие №28 Перегрузка методов. Задачаотелефонномсправочнике
- •Ход работы
- •8. Сохраните выполненную на данный момент форму в своей папке.
- •9. С помощью мыши задайте ширину столбцов таблицы, на- пример так, как показано на рис. 16.
- •10. Добавьте на форму главное меню и введите названия его команд, как показано на рис. 16 и рис. 17.
- •11. Создайте окно формы «о программе» (см. Рис. 18).
- •Сохраните работу и запустите проект на выполнение.
- •18. Добавьте на форму два объекта - стандартные диалоги Windows для открытия и сохранения файлов.
- •19. Запрограммируйте процедуры открытия и сохранения фай- лов телефонного справочника (команды главного меню «Прочитать из файла» и «Записать в файл»).
- •20. Напишите процедуру создания формы.
- •21. Напишите процедуру заполнения полей редактирования NewEdit.
- •22. Напишите процедуру заполнения комбинированного списка NewComboBox.
- •Сохраните работу, запустите программу, заполните таблицу данными и убедитесь в том, что программа правильно записывает на диск и считывает с диска файлы телефонных справочников.
- •Запрограммируйте команду главного меню «Сохранить изменения в списке записей».
- •Практическое занятие №29 Создание проекта с использованием кнопочных компонентов.
- •Ход работы
- •5. Дважды щелкните на первом таймере и запрограммируйте мигание сообщения «Обязательно нажмите на кнопку «Готово» после размещения рисунков!!» так:
- •6*. Введите описание глобальных переменных программы:
- •6**. Введите описания глобальных констант и переменных программы:
- •Аналогично запрограммируйте соответствующие события для перетягивания двух других рисунков.
- •Создайте еще один метод формы tForml — функцию ImagelnShape для проверки расположения рисунка (объекта Image) в середине некоторой геометрической фигуры (объекта Shape).
- •11*. Запрограммируйте кнопку "Готово", проверяющую правильность расположения рисунков в середине фигур и выводящую информационное окно с сообщением "Правильно!" или "Неправильно!":
- •11**.Запрограммируйте кнопку "Готово", проверяющую правильность расположения рисунков в середине фигур:
- •Сохраните программу и проект в своей папке.
- •Запустите программу. Перетягивайте мышью рисунки на середину соответствующих фигур.
- •Создайте ехе-файл программы и поупражняйтесь с ней.
- •Упражнения. Совершенствование проекта
- •Практическое занятие №31 Создание проекта с использованием компонентов ввода и отображения чисел, дат и времени. Калькулятор
- •Постановка задачи.
- •Ход работы.
- •Упражнения. Совершенствование проекта.
- •Практическое занятие №33 Разработка оконного приложения. Создание новых форм с меню, геометрическими фигурами, палитрой и со шкалой.
- •Практическое занятие №34 Разработка оконного приложения с несколькими формами. Разработка проекта Halfbottle.
- •Постановка задачи.
- •Ход работы
- •Упражнения. Совершенствование проекта.
- •Практическое занятие №35 Разработка многооконного приложения. Проект “Худой или полный?”.
- •Упражнения
- •Сообщения и коды ошибок
- •50. Do expected (Нуженоператор do).
- •54. Of expected (Требуется of).
- •55. Interface expected (Требуется интерфейсная секция).
- •57. Then expected (Требуется then).
- •58. To or downto expected (ТребуетсяТОили downto).
- •73. Implementation expected (Отсутствует исполняемая часть модули).
- •102. String constant expected (Нужнаконстантастроковоготипа).
- •106. Character expression expected (Предшествующее выражение должна иметь символьный тип).
- •161. Code generation error (Ошибка генерации кода).
- •162. Asm expected (Отсутствует зарезервированное слово asm). Ошибки, возникающие во время выполнения программ
- •Ошибки ввода-вывода
- •Критические ошибки
- •Фатальные ошибки
- •Литература
Практическая часть Основные графические операторы для построения изображений:
PutPixel (X, Y, цвет) - вывод точки на экран, где X, Y - координаты точки ; Line ( X1, Y1, X2, Y2 ) - проводит линию из точки с координатами (X1, Y1 ) в точку с координатами ( X2, Y2 ); Rectangle (X1, Y1, X2, Y2 ) - прямоугольник со сторонами, параллельными осям координат; (X1, Y1) и (X2, Y2) - координаты, определяющие одну из диагоналей прямоугольника ; Bar ( X1, Y1, X2, Y2 ) - закрашенный прямоугольник (без окантовки); Circle ( X, Y, радиус ) – на экран выводится окружность с центром в точке ( X, Y )(тип integer) ; Arc (X, Y, начальный угол, конечный угол, радиус) - на экран выводится дуга окружности с центром в точке (X, Y ); углы задаются в градусах; дуга рисуется ПРОТИВ часовой стрелки; Ellipse ( X, Y, начальный угол, конечный угол, горизонтальный радиус, вертикальный радиус) - на экран выводится эллиптическая дуга с центром в точке с координатами ( X, Y ) (тип integer); SetFillStyle (заполнение, цвет) – определение вида и цвета заполнения области; FloodFill (x, y, цвет границы) – заливка замкнутой области.
Процесс построения изображений с помощью графических процедур разбивается на отдельные этапы:
1. Переключить монитор в графический режим с помощью оператора InitGraph (Driver, mode, <путь к драйверу>). 2. Установить разрешающую способность экрана по умолчанию режимом Detect или процедурой SetGraphMode. Режим Detect устанавливает разрешающую способность экрана 640*480 пикселей, т.е. координата Х может принимать значения от 0 по 639, а У от 0 по 479. 3. Очистить и инициализировать графический экран процедурой ClearDevice. 4. Установить цвет фона оператором SetBkColor и цвет изображения оператором SetColor. 5. Вывести на экран точки, отрезки, прямоугольники, дуги, окружности, эллипсы. 6. Вывести на экран закрашенные фигуры. 7. Вывести тексты и подписи на экран. Для использования операторов Write и Writeln в графическом режиме необходимо выполнить следующую операцию присваивания : DirectVideo := FALSE; Или использовать процедуру Outtextxy(x,y,st), которая выводит строку st, начиная с позиции x, y
Пример программы построения графика функции.
program graphic; uses graph; var driver, mode, errorcode : integer; xm,ym,i,j : integer; pi,pi300,x1,y1,x2,y2, sc : real; st1,st2,st3 : string; function f(x:real) : real; begin f:=sin(x)+sin(2*x)+sin(3*x)-1-cos(x)-cos(2*x);{ функция для построения} end; {графика} begin st1:='x';st2:='y'; st3:=' Press ENTER'; sc:=50; driver:=9; {egavga} mode:=2; {640х480 пикселей} initgraph(driver,mode,'d:\bp\bgi'); {инициализация графического режима } errorcode:=graphresult; if errorcode<>grok then {ошибка } begin writeln('Error init Graph'); closegraph; halt; end; xm:=getmaxx div 2; ym:=getmaxy div 2; { xm=320;ym=240;центр экрана} line(xm,20,xm,460);{ось y} line(20,ym,620,ym);{ ось x} outtextxy(630,ym,st1); {маркировка оси х} outtextxy(xm,10,st2); {маркировка оси у} pi:=3.1415926; pi300:=pi/300; x1:=-pi; for i:=0 to 24 do {разметка оси х вертикальными черточками} begin line(xm+round(80*x1),230,xm+round(80*x1),250); x1:=x1+pi300*25; end; x1:=-pi; {собственно построение графика отрезками прямых} while x1<pi do begin y1:=f(x1);x2:=x1+pi300; y2:=f(x2); line(xm+round(80*x1), ym-round(sc*y1), xm+round(80*x2), ym-round(sc*y2)); x1:=x2; end; outtextxy(270,470,st3); readln; closegraph; end.
Программа компилируется и выдает график функции.
Задачи для дополнительного решения:
Представьте, что вы встретились с хранителем времени и он открыл вам тайну звезд. Почему мерцают звезды на небе ? Потому, что каждая звезда - жизнь одного человека. Вам нужно вовремя погасить старую и зажечь новую. Помогите хранителю времени решить задачу Решение задачи начинается с построения модели: пусть на экране каждая точка обозначает звезду и всего горит 20 (выбранных случайным образом) звезд; теперь необходимо погасить первую зажженную точку и нарисовать ее в любом другом месте, затем перейти ко второй и т.д. Когда погаснет двадцатая, необходимо вновь перейти к первой и т.д.
Напишите программу "дождь" - на экране появляется (случайным образом) рисуется 50 точек и они движутся сверху вниз. В тот момент, когда одна из точек достигнет нижней границы экрана, точка появляется в верхней части.
Измените программу "дождь" так, чтобы некоторые точки двигались быстрее, другие медленнее.
Измените программу "дождь" так, чтобы точки начинали движение в левом нижнем углу и заканчивали в правом верхнем.
Контрольные вопросы:
Какие размеры имеет экран в графическом режиме ЯП Паскаль?
Где находится точка начала координат?
Как изменяются координаты х и у в Паскале?
Какого типа должны быть координаты объектов?
Какие стандартные функции позволяют перевести действительное числа в целые?
Какие команды рисования объектов вы знаете?
Как установить графический режим?
Практическое занятие №22 - 23 Создание библиотеки подпрограмм. Использование библиотеки подпрограмм.
Цель работы: научить студентов работать с подпрограммами
Теоретическая часть
Основные понятия о подпрограммах
При разработке сложных программ используют так называемый структурный подход к программированию и нисходящее проектирование программ, когда сложная программ разбивается на более (или менее) функционально-законченные части, каждая из которых проще исходной программы. Такие программы легче отлаживать и использовать. Отдельные части программы называют подпрограммами. Использование подпрограмм наиболее эффективно в тех случаях, когда одна и та же подпрограмма может использоваться в программе не один раз, возможно с различными параметрами. Это позволяет экономить память компьютера.
Подпрограммы, в свою очередь, могут разбиваться на более мелкие части, реализуемые также в виде подпрограмм более низкого уровня.
В языке Турбо Паскаль используют подпрограммы двух типов: процедуры (Procedure) и функции (Function). Подпрограммы по структуре сходны с программой, но они обязательно имеют оригинальное имя, которое указывается в заголовке. Подпрограммы описываются в разделе описаний, использующих (вызывающих) их программ (или подпрограмм).
Процедура — это независимая именованная часть программы, которую можно вызвать по имени для выполнения определенных действий. Структура повторяет структуру программы. Процедура не может выступать как операнд в выражении. Упоминание имени процедуры в тексте программы приводит к активизации процедуры и называется ее вызовом.
Функцияаналогична процедуре, но имеются два отличия: функция передает в точку вызова скалярное значение; имя функции может входить в выражение как операнд. Например, функция Sqr(X) — возведет в квадрат значения целого или вещественного X и возвратит в точку вызова вычисленное значение квадрата числа X.
Итак, отличие подпрограмм-процедур от подпрограмм-функций состоит в том,что процедуры служат для задания совокупности действий, направленных на изменение внешней по отношению к ним программной обстановки, а функции, являясь частным случаем процедур, отличаются от них тем, что они обязательно возвращают в точку вызова основной программы единственный результат как значение имени этой функции.
Все процедуры и функции языка Турбо Паскаль делятся на две группы: встроенные (стандартные) и определенные пользователем. Первые входят в состав языка я вызываются для выполнения по строго фиксированному имени. Вторые разрабатываются и именуются самим пользователем.
Выделим глобальные переменные, которые используются в главной программе: М1, М2, К1, К2, Мах1, Мах2.
Uses crt;
Type Tmas=array[1..1000] of integer;
Var M1, M2: Tmas;
K1, K2, Max1, Max2 : integer;
{ Процедура ввода длины массива и самого массива }
Procedure Vvod(Var K:integer; Var M:Tmas);
Var i:integer;
Begin
Write(' Введитедлинумассива');
Readln(K);
Writeln(' Введите элементы массива целых чисел, через пробел');
For i:=1 to K do
Read(M[i]); readln;
End; { конец процедуры ввода}
{ Процедура поиска максимального элемента в массиве}
Procedure Poisk_max(K:integer; M:Tmas; Var Max:integer);
Vari:integer;
Begin
Max:=M[1]; { За максимум принимаем первый элемент}
For i:=2 to K do
If M[i]>Max then Max:=M[i]; {Запоминаем новый максимум}
End;
{ Начало основной программы}
Begin
Clrscr;
Writeln(' Ввод первого массива');
Vvod(K1, M1);
Writeln(' Ввод второго массива');
Vvod(K2,M2);
Poisk_max(K1, M1, Max1);
Poisk_max(K2, M2, Max2);
If Max1>Max2 then writeln(' Max1 большеионо = ',Max1)
Elsewriteln(' Max2 больше и оно = ',Max2);
Readkey; { Останов для просмотра результатов}
End.
