Объектно-ориентированное, визуальное программирование в Delphi на уроках

Разработка уроков работы в среде Delphi 7 для всех разделов программирования основного базового курса информатики. Примеры программ для вычисления математических выражений. Использование оператора ветвления, составление программ с движущимися объектами.

Рубрика Программирование, компьютеры и кибернетика
Вид учебное пособие
Язык русский
Дата добавления 24.07.2012
Размер файла 3,8 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

56

Размещено на http://www.allbest.ru/

МОУ Межшкольный учебный комбинат № 1 г. Кирова

Объектно-ориентированное, визуальное программирование в Delphi на уроках

“ИНФОРМАТИКА и ИКТ”

2007 г.

Данная книга составлена для учителей и учеников, изучающих предмет “Информатика и ИКТ”. Здесь представлены уроки работы в среде Delphi 7 для всех разделов программирования основного базового курса. Уроки составлены так, что ученик, выполняя поурочные задания, научится основам программирования и познакомится с основными конструкциями объектно-ориентированного программирования языка Delphi 7 (Pascal). Кроме этого обучающийся самостоятельно может выполнить задания и подготовиться к уроку. Примеры программ, используемые в книге, представлены в электронном виде.

Данный сборник составил преподаватель МУК №1 г. Кирова Бурков В.С. для учителей информатики и ИКТ.

Оглавление

  • Введение
    • Некоторые специальные символы
    • Знакомство со средой DELPHI
  • Первый урок - первая программа
    • Сохранение и запуск проекта на выполнение
      • Сохранение проекта
      • Запуск проекта на выполнение
    • Примерные задания для первого урока
    • Вопросы для самоконтроля
  • Второй урок - вычисление математических выражений
    • Код программы
    • Примерные задания для второго урока
    • Вопросы для самоконтроля
  • Третий урок - ввод целочисленных данных
    • Компонент Edit
    • Код программы
    • Примерные задания для третьего урока
    • Вопросы для самоконтроля
  • Четвёртый урок - использование оператора ветвления
    • Код программы
    • Примерные задания для третьего урока
    • Вопросы для самоконтроля
  • Пятый урок - использование Shape для “рисования”
    • Как убрать часть графического примитива:
    • Примерные задания для пятого урока
    • Вопросы для самоконтроля
  • Шестой урок - использование Timer для “движения” объектов на форме 3
    • Объект Timer
    • Как заставить графический объект “двигаться”?
    • Примеры программ на движение
      • Первая программа - движение слева направо
      • Вторая программа - движение ракет вверх с использованием Shape, картинки и панели
    • Как выполнить движение по диагонали?
    • Примерные задания для шестого урока
    • Вопросы для самоконтроля
  • Седьмой урок - цикл с параметром (For)
    • Вопросы для самоконтроля
  • Приложения
    • Приложение № 1 Некоторые параметры объектов и их использование
    • Приложение № 2 Математические операции и некоторые функции в Pascal-е и Delphi
    • Приложение № 3 Стандартные математические функции Object Pascal
    • Приложение № 4 Типы числовых данных в Pascal-е и Delphi
      • Целые типы
      • Вещественные типы
    • Приложение № 5 Стандартные конструкции языка Pascal

Введение

урок информатика программирование объект

Значительно более мощные системы Windows, OS/2 и другие привели к повсеместному вытеснению старой “доброй” DOS (MS DOS, DR DOS). В этих системах программировать было существенно сложнее, чем в MS-DOS. Разработчики систем программирования, и, прежде всего такие корпорации, как Microsoft и Borland, не замедлили выпустить соответствующие средства. Так Borland уже в 1991 году, т. е. сразу после появления Windows 3.1, выпускает Turbo Pascal for Windows, а в 1992 - усовершенствованную версию этой системы программирования - Borland Pascal with Objects 7.0. Эти первые специализированные инструменты требовали основательного знания Windows и были сложны в освоении. В 1993 году Microsoft выпустила первую визуальную среду программирования Visual Basic, и программирование для Windows стало даже проще, чем программирование для MS-DOS. В ответ на это Borland в 1995 году выпустила первую версию Delphi, а затем, с интервалом в 1 год, - еще 4 версии: 2, 3, и 5. Наконец, в середине 2001 г. выпускается 6-я версия, затем, через некоторое время, 7. Восьмая версия ориентирована на платформу Net и по виду отличается от стандартных. Здесь будет использована версия Delphi 7 для разбора заданий. Все эти примеры можно так же использовать и в 8-й версии, но состав компонентов и список их параметров будет иметь другой вид и находиться в другом месте.

Эта книга рассчитана на тех, кто уже познакомился со стандартными конструкциями языка Pascal. Если вы ещё не знакомы с ними, то в приложении № 5 они кратко описаны.

Некоторые специальные символы:

- замечания, нужно запомнить.

Знакомство со средой DELPHI

Для загрузки Delphi нужно запустить файл Delphi32.exe из папки Bin каталога Delphi7. Можно также это сделать через кнопку “Пуск” (см. рисунок № 1).

рис. № 1

После загрузке Delphi вы увидите, примерно, следующее:

рис. № 2

Перечислим некоторые объекты и окна, с которыми вам придётся постоянно работать: окно формы, окно свойств и процедур-событий, линейка палитры компонентов, компоненты (объекты, интерфейсные элементы) конкретной закладки, кнопка запуск приложения ( или F9).

На форме выставляются интерфейсные элементы, в окне Inspector (см. рис. № 2) на вкладке Properties (свойства) можно установить их начальные значения для параметров. В приложении № 1 перечислены часто встречающиеся свойства компонентов.

Палитра компонентов содержит компоненты как стандартные, так и созданные независимыми пользователями (не поставляются фирмой Borland). На уроках мы познакомимся с некоторыми компонентами у палитр Standard, Additional, Win32 и System и возможными применениями их в программах.

Первый урок - первая программа

Задание:

На вашей форме после запуска должна появиться примерно следующая информация (см. рис. № 3):

рис. № 3

Естественно ФИО, класс, группа должны соответствовать вашим данным. При нажатии на кнопку “ВЫХОД” приложение должно закрыться.

Примерный порядок действий:

1. Запускаем Delphi;

2. С помощью стандартных манипуляций с окном формы перемещаем его в центр экрана и изменяем размеры; Это должно выглядеть, примерно, так (см. рис № 4):

рис. № 4

3. Для замены заголовка Form1 на ваши фамилию, имя, отчество и урок № 1 нужно воспользоваться окном инспектора (Object Inspector) и закладкой параметры - Properties (см. рис № 5).

Если данного окна не оказалось на экране, то нажмите F11.

Выберите строчку Caption и замените Form1 на ваш текст. Данное свойство присутствует во многих компонентах, где есть надписи, заголовки.

- нельзя менять Form1 в параметре Name. Значение свойства Name для любых компонентов является идентификатором и используется для обращения к объекту в коде программы. Вам пока не надо менять стандартные значения.

рис. № 5

рис. № 6

После наших действий можно увидеть изменённую форму (см. рис № 6)

Сейчас мы должны научиться выставлять компонент Label, на котором можно писать в параметре Caption любой текст. Выполним надпись ФИО в две строки: первая - фамилия, вторая - имя и отчество. Для этого:

Щелкните по иконке Label (см рис. № 7) в линейке интерфейсных элементов Standard.

рис. № 7

Компонент будет выделен, т.е. как бы вдавлен.

Выделите прямоугольную область под метку на форме. Можно не беспокоиться о размере, т.к. для метки параметр AutoSize (по размеру) по умолчанию равен True (истина).

В параметре Caption напишите свою фамилию и через пробел имя (см. рис. № 5). На форме отобразится введенный вами текст.

В параметре Font (шрифт) установите нужный вам размер и цвет текста.

В параметре WordWrap замените False на True - текст будет отображаться в несколько строк. Измените размер компонента Label1 так, чтобы текст отобразился согласно заданию, т.е. в две строки и переместите его на нужное место.

Повторите это для строки с “классом” и “первой программы”. Здесь параметр WordWarp можно оставить по умолчанию - False.

4. Компонент кнопка (см. рис. № 7) выставляем на форму и, так же как для метки, определяем надпись “выход”, размер шрифта, положение и размер.

- цвет фона и шрифта не изменяется для компонента Button вкладки Standard.

Что бы вставить действия на щелчок, дважды кликните на кнопке - Button1. Вы войдёте в код процедуры Click для данной кнопки (рис. № 9).

рис. № 9

В пустой строке между begin и end; напишите команду Close; - это команда закрытия активной формы. У вас должно получиться следующее:

Begin

Close; { место записи команд языка Pascal }

End;

Close не обязательно писать с заглавной буквы. Delphi понимает команды - английские слова, в любом сочетании, например: заглавная, прописная, заглавная … и т.д.

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

Сохранение и запуск проекта на выполнение

Сохранение проекта

Возможны как минимум три варианта:

1. Меню File, строка Save All с подсказкой горячих клавиш Shift+Ctrl+S;

2. Щёлкнуть по иконке двух дискет ;

3. Shift+Ctrl+S.

После любого из этих вариантов в первый раз Delphi попросит вас сохранить с начала форму - Unit1 c расширением pas, а затем проект - Project1 c расширением dpr (Delphi project). В дальнейшем запросов на ввод имени проекта и формы не будет. Кнопка двух дискет будет недоступной, если не было никаких изменений ни в проекте, ни на/в форме. Если кнопка двух дискет будет доступна, следовательно, перед запуском нужно сохранить изменения - это хороший стиль отладки.

- Сохраняйте каждый свой проект в отдельной папке.

- Не переименовывайте пока стандартные названия проекта и форм.

Запуск проекта на выполнение

Возможны минимум три варианта:

1. Меню Run, строка Run с подсказкой горячих клавиш F9;

2. Щёлкнуть по иконке зелёного треугольника ;

3. F9.

Примерные задания для первого урока

1. С помощью программы напечатайте на экране любое четверостишье и затем, через пустую строку, добавьте автора.

Контрольный пример:

Грубым дается радость.

Нежным дается печаль.

Мне ничего не надо,

Мне ничего не жаль.

Сергей Есенин

2. С помощью программы напечатайте на экране расписание уроков на любой день недели, кроме воскресенья и затем, через пустую строку, добавьте номер школы и класс с буквой.

Контрольный пример:

Вторник

1 - геометрия

2 - английский язык

3 - физика

4 - литература

5 - история

Школа N 15, 9 А класс

3. Ослик Иа, путешествуя от дома к озеру, потерял свой хвост. Он так расстроился, что забыл путь назад до дома. Помогите ему, составив инструкцию, если путь от дома был такой:

По тропинке на север до первой развилки.

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

Поляну обойти по кромке леса слева и идти до развилки.

Выбрать левую тропинку и, пройдя 100 шагов, повернуть налево.

Пройти 200 шагов и окажитесь у озера.

Контрольный пример:

Инструкция для ослика Иа:

Выбрать южную часть озера.

По дороге пройти 200 шагов и т.д.

Название формы - ваши фамилия и имя, затем, через тире, программа № 1.

Вопросы для самоконтроля

1. Какой язык используется в Delphi?

2. Как запустить Delphi?

3. Изменяя какой параметр можно вывести различные надписи?

4. Как назначить действие клик - щелчок по кнопке?

5. Для запуска формы (проекта) нужно …

6. Для изменения параметров шрифта (цвет, размер, начертание, гарнитура) нужно …

Второй урок - вычисление математических выражений

Delphi можно использовать как калькулятор, хотя это не совсем удачная идея. Это всё равно, что на КАМАЗе перевозить спичечный коробок. Для этого есть специальные программы. На этом занятии мы познакомимся с вычислением математических выражений. Сначала посмотрите на таблицу соответствия математических операций и языка Pascal в приложении № 2. В языке Pascal и соответственно в Delphi нет операции возведения в степень. Это большое упущение. Можно воспользоваться математической формулой:

XY = exp(Y * Ln(X)),

например, 23 = exp(3 * ln(2)).

Так как надстрочные символы в коде программы не напишешь, то для степени при подсказках используют символ титла - ^. В нашем примере для отображения в метке 23 нужно записать 2 ^ 3.

Таблица с математическими операциями и некоторыми функциями в Pascal-е и Delphi находятся в конце урока.

Рассмотрим первый пример из первого задания и h) из третьего (смотри в конце урока). Третий пример на вычисление корня пятой степени

При запуске формы можно увидеть следующее:

Можно заметить, что количество Label на одну больше, чем вариантов. Появилась кнопка “вычислить”, после нажатия на которую выводятся результаты вычисления математических выражений. Обычно номер задания указывается с закрывающей круглой скобкой.

Код программы

Рассмотрим код процедуры Click для кнопки “вычислить”:

procedure TForm1.Button1Click(Sender: TObject);

var

x : real; { вещественный тип переменной }

begin

x := 28.1 - 36.8 / (50.08 + 49.92);

Label2.Caption := 'a) ' + floattostr(x);

x := sqrt((89.6 - 133.72 / 33.3)/(888.8 + (48 -

396.1 * 1.1)));

Label3.Caption := 'h) ' + floattostr(x);

Label4.Caption := '3) 345025251 ^ (1/5) = '

+ floattostr(exp(1/5 * ln(345025251)));

end;

В выражениях используются вещественные числа, поэтому переменная Х объявлена как вещественное число. Для перевода вещественного числа в строку воспользуемся функцией FloatToStr()так как в параметре Caption компонента Label данные строкового типа.

десятичные числа с дробной частью в языках программирования записываются с использованием точки, которая является разделителем целой и дробной частей В Англии точка разделитель целой и дробной частей, а США в своё время была колонией Англии, поэтому там используется английская система записи вещественного числа..

после вычисления первого примера скопируйте две строки и замените номер Label и математическое выражение (Ctrl+C, затем Ctrl+V).

Для вывода нескольких строковых данных (переменных, констант) воспользуемся операцией сцепления (конкатенации) для строковых данных. Эта операция “+”. С помощью её данные как в паровозике образуют состав, который воспринимается как одна строковая величина.

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

Примерные задания для второго урока

1) Дмитрию задали на дом решить несколько примеров по математике. Помогите ему проверить свои вычисления:

a) 28,1 - 36,8 : (50,08 + 49,92)

b) 54 x 3465 - 9025 : 95 + 360 272 : 712

c) (32,24 x 0,32 + 366,032 x 0,1) : 23

d) 62,92 : 5,2 - 4,2 x (7 - 6,3)

e) 6,56 x 4,36 - 3,36 : (0,736 + 2,464)

f) 7225 : 85 + 64 x 2345 - 248 878 : 613

Ответы: a) 27,732 b) 187 521 c) 2,04 d) 9,16e) 27,5516 f) 149 759

2) Марианну попросили составить программу вычисления следующих математических выражений:

a)

b)

c)

d)

Ответы: а) 25,52 b) 197,476 c) -2,13 d) 3

3) Язык программирования позволяет проще вычислять математические выражения. Для этого сложную конструкцию (дроби, корни и т.д.) нужно представить в виде строчного математического выражения, используя для этого круглые скобки. Попробуйте вычислить следующие математические выражения, округлив данные до трёх цифр в дробной части:

a)

b)

c)

d)

e)

f)

g)

h)

Ответы: а) 22,822 b) 553,124 c) 41,072 d) 64,817 e) 8.768 f) 62.284 g) 1.435 h) 0.413

Вопросы для самоконтроля

1. Какой математической операции нет в Delphi?

2. Как изменить порядок выполнения операций Delphi?

3. В каком порядке выполняются операции одного приоритета?

4. Назовите стандартные математические функции в Delphi для извлечения квадрата из числа и получения квадрата числа.

5. Сколько “строк” можно использовать для записи математического выражения в Delphi?

6. Как обозначаются операции деления и умножения в Delphi?

Третий урок - ввод целочисленных данных

Пусть нам нужно выполнить следующую задачу:

Маша и Даша собирали грибы. Маша принесла a грибов, а Даша - b грибов. Сколько всего грибов собрали девочки?

Данные для переменных a и b нужно ввести с клавиатуры.

После запуска форма может выглядеть так:

По щелчку на кнопке ОПРЕДЕЛИТЬ появится результат:

Компонент Edit

Находится на вкладке Standard. Используется для ввода текстовых данных через параметр Text.

После изменения данных в любом из компонентов Edit можно снова пересчитать результат, нажав на кнопку ОПРЕДЕЛИТЬ.

- при создании данного приложения мы будем опираться на знания и опыт предыдущего задания - первой программы. В дальнейшем разбираем только новый материал и, возможно, некоторые особенности задания.

Код программы

Рассмотрим код процедуры Click для кнопки “определить”:

procedure TForm1.Button1Click(Sender: TObject);

var

a, b : integer;

begin

// В переменные a и b заносим целочисленные

//значения

a := StrToInt(Edit1.Text);

b := StrToInt(Edit2.Text);

Label5.Caption := IntToStr(a + b);

end;

Примерные задания для третьего урока

1. Катя нашла A грибов, а Слава B. Среди этих грибов оказалось C несъедобных. Сколько съедобных грибов было собрано?

Контрольный пример:

А = 64, В = 89, С = 17, ответ: 136

2. Монгольский воин за 7 секунд выпускает обычную стрелу, а за 10 - зажженную. За какое время воин выпустит А обычных и В зажженных стрел?

Контрольный пример:

4 обычных, 5 зажженных - 78 секунд

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

Контрольный пример:

12 коров, 4 гуся, ответ: 16 голов и 56 ног и лап.

Вопросы для самоконтроля

1. С помощью какого компонента ввели числа в этой программе?

2. Какие данные хранит компонент Edit?

3. Какой функцией воспользовались для получения целых чисел?

4. Какой функцией воспользовались для получения из целых чисел строковой величины?

5. Как поменять цвет шрифта в Label и Edit?

6. Как создать процедуру Click (щелчок по кнопке)?

Четвёртый урок - использование оператора ветвления

До этого урока все алгоритмы программ (процедур) были линейными, т.е. все команды выполнялись друг за другом. В данном уроке рассмотрим задачи, в которых нужно, в зависимости от условия, выполнить различные действия. Перед вами следующая задача:

Константину нужно вычислить модуль введенной числовой величины (расстояние от начала координат) с помощью программы. Он не знает стандартной функции Pascal abs. Помогите ему это сделать (использовать стандартную функцию нельзя).

Контрольный пример:

-17,78 ответ: 17,78 3 ответ: 3

После запуска форма может выглядеть так:

По щелчку на кнопке ОПРЕДЕЛИТЬ появится результат:

После изменения данных в любом из компонентов Edit можно снова пересчитать результат, нажав на кнопку ОПРЕДЕЛИТЬ.

Код программы

Процедура Click для кнопки ОПРЕДЕЛИТЬ с дополнительным заданием

procedure TForm1.Button1Click(Sender: TObject);

begin

a := strtofloat(edit1.Text); { получаем число }

if a < 0 then { не полная форма оператора ветвления }

a := -a;

Label5.Caption := floattostr(a);

end;

Дополнительное задание для тех, кто сделал задачу о модуле числа:

Вывести сообщение в следующем виде после нажатия на кнопку ОПРЕДЕЛИТЬ - “модуль числа | число | = модель числа”

Пример: модуль числа | -17,78 | = 17,78

- символ | на кнопке, где \ / на английской раскладке

Примерные задания для третьего урока

1. Для созревания картофеля нужно 90 дней. Прошло N дней после посадки. Можно ли выкапывать картофель?

Контрольный пример:

N - 67, ответ: рано.

N - 90, ответ: можно выкапывать.

2. *Усложним предыдущую задачу.

До 85 - “рано”, от 85 до 89, “в принципе можно”, от 90 - 110 дней - “время выкапывать”, более 110 дней - “можешь все проспать”.

3. Молодой богатырь Данило Забияка решил мир посмотреть и себя показать. Взял с собой он сумму в A рублей (не менее 50). Вот подъезжает он к перекрестку и видит камень, на котором написано, - “налево пойдешь - пол суммы потеряешь и еще 20 рублей, направо пойдешь - утроишь свою сумму”. Данило подумал, что это вранье, да и не пристало добру молодцу кого-то бояться и поехал налево. Все случилось пописанному. Вернулся Данило к перекрестку и решил поехать направо. Снова все получилось, как написано на камне. Интересно - в проигрыше ли оказался Данило?

Контрольный пример:

A = 60 Ответ: в проигрыше

A = 200 Ответ: в выигрыше

4. Сестры подсчитали свои денежные накопления, у них оказались разные суммы. Какая сестра должна дать другой денег и сколько, чтобы у обеих сестер суммы стали равными?

Контрольный пример:

24,50 13, 48 ответ: первая сестра 5,51

20, 30 ответ: вторая сестра 5

5. Коля, Вася и Маша решили купить в столовой комплексный обед (фиксированный набор продуктов, следовательно, фиксированная цена одного обеда) стоимостью A рублей. Смогут ли они купить обед на каждого, если у Коли B рублей, Васи С рублей, а у Маши D рублей?

Контрольный пример:

A = 19,50; B = 4,8; C = 23,1; D = 20,1 Ответ: нет

A = 19,50; B = 14,8; C = 23,1; D = 20,1 Ответ: да

6. Коля, Вася и Маша собирали ягоды. После окончания сбора Маша решила отдать свои ягоды тому, кто меньше собрал ягод. Если же мальчики собрали одинаковое количество (в литрах), то разделить ягоды поровну. Сколько стало ягод у Коли и Васи, если ребята соответственно собрали A, B и C литров ягод?

Контрольный пример:

3 4,5 4 ответ: 7 4,5

4,5 4,5 6 ответ: 7,5 7,5

7. Кролик и бобер участвовали в одной команде по переноске воды из одного блюда в другое, используя соответственно чашку и кружку. Их команда проиграла. Кролик обвинил бобра в том, что тот медленно бегал. На это бобер ответил, что в кружке он за один раз переносил больше воды. Помогите им определить, кто из них прав, если кролик A раз вылил воду из чашки, бобр B раз из кружки? В кружку входило по C мл, а в чашку по D мл.

Контрольный пример:

A = 5 B = 3 C = 50 D = 70 - прав кролик

A = 5 B = 4 C = 50 D = 70 - прав бобёр

A = 7 B = 5 C = 50 D = 70 - оба ошиблись

Вопросы для самоконтроля

1. Какая функция переводит строковые данные в вещественные?

2. Какая функция переводит строковые данные в целые?

3. Какая функция переводит вещественные данные в строковые?

4. Какая функция переводит целые данные в строковые?

5. Для запуска формы нужно …?

6. Для сохранения формы и проекта нужно …?

7. Где нельзя ставить символ “;” в операторе ветвления?

8. Сколько операторов можно записать после ключевых слов then и else?

Пятый урок - использование Shape для “рисования”

На этом уроке попробуем рисовать графическими примитивами (Shape), которые есть в Delphi. Данный инструмент для рисования нормальной картинки, не говоря уже о хорошей, использовать, конечно, очень трудно. Обычно Shape используется для рисования нестандартных кнопок. Для изучения возможностей попробуем что-нибудь нарисовать.

Для начала познакомимся с графическими примитивами:

1. Они находятся в закладке Additional, компонент Shape (круг, треугольник, квадрат) - смотри рисунок № 1

рис. № 1

2. При щелчке на форме или выделении области после выбора Shape появится прямоугольник - один из графических примитивов. Всего их шесть: В компоненте Shape выбираем параметр Shape (смотри рисунок № 2). Появится список графических примитивов:

o stCircle - круг;

o stEllipse - эллипс;

o stRectangle - прямоугольник;

o stRoundRect - прямоугольник с закруглёнными углами;

o stRoundSquare - квадрат с закруглёнными углами;

o stSquare - квадрат.

Все графические примитивы располагаются в выделенной прямоугольной области. Изменяя её размеры, мы автоматически изменяем размеры графического примитива.

рис. № 2

В списке нет отрезков, хотя на иконке присутствует треугольник. Горизонтальные и вертикальные отрезки можно получить из прямоугольников, уменьшив высоту или длину до нужного значения.

3. Каждый графический примитив имеет контур и внутреннюю заливку:

a. контур - параметр Pen

Параметр Pen имеет четыре подпараметра

(смотри рисунок № 3):

§ Color - цвет контура, выбираем как обычно;

§ Mode -

§ Style - стиль линии, варианты смотри на рисунке № 4, запомни: psSolid - сплошная линия;

§ Width - толщина линии.

рис. № 3

рис. № 4

заливка - параметр Brush

Параметр Brush имеет два подпараметра:

Color - цвет

Style - стиль заливки

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

· вызвать контекстное меню на объекте;

· из полученного списка выбрать строку Control;

· из появившегося списка:

Bring to Front - на передний план,

Send to Back - на задний план.

Задание:

Нарисовать картину, содержащую минимум: пять прямоугольников, квадратов; пять кругов, эллипсов; три отрезка; фон формы не стандартный. Картина должна отображать какой-нибудь сюжет.

Пусть у вас получился примерно такой рисунок сразу после запуска программы (смотри рис. № 6):

рис. № 6

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

Как убрать часть графического примитива:

· рисуем графический примитив, например, эллипс у рыбки;

· накладываем сверху на эллипс другой графический объект так, чтобы он закрывал часть эллипса;

· убираем у него контур (psClear для Type в Pen) и выставляем цвет закраски в Brush как цвет фона, на котором нарисован плавник.

Примерные задания для пятого урока

Нарисовать картину, содержащую минимум: пять прямоугольников (квадратов); пять эллипсов (кругов); три отрезка; фон формы не стандартный.

1. Новый год

2. Лето

3. Морская или речная тема

4. Космос

5. Природа

6. Твоя комната

Вопросы для самоконтроля

1. Какие графические фигуры можно выбрать в Shape?

2. За что отвечают параметры Pen и Brush?

3. Как убрать контур?

4. Как нарисовать горизонтальную линию?

5. Как нарисовать вертикальную линию?

6. В каких границах находится Shape?

7. Что такое передний и задний планы объекта?

Шестой урок - использование Timer для “движения” объектов на форме

Объект Timer

Познакомимся с новым компонентом Timer, который поможет нам выполнить движение объектов на форме. Timer находится на вкладке System и выглядит как часы (смотри рис. № 1).

рис. № 1

Данный компонент является невидимым при выполнении программы, поэтому его можно разместить на форме в любом месте.

Рассмотрим параметры таймера и единственную процедуру (рис. № 2):

рис. № 2

Enabled - логическая величина, следовательно имеет два значения: true и false. Если значение равно true, то через каждые миллисекунды интервала таймера (interval) выполняется процедура данного таймера. При значении false вызов процедуры таймера не происходит.

Interval - задается в миллисекундах. Использование параметра описано выше.

В закладке инспектора объекта Events - процедуры-события, находится всего одна процедура, которая вызывается, если параметр Enabled равен true.

Для движения объекта на форме воспользуемся возможностями таймера, применив, например, следующий алгоритм:

· начальное значение параметра активности таймера равно false (чтобы графический объект при запуске формы не “поехал”);

· интервал пусть будет 100 миллисекунд;

· в процедуре-событии опишем движение объекта, используя параметры top и left для движения по вертикали или горизонтали;

· запуск работы таймера по событию click на кнопке начало.

Как заставить графический объект “двигаться”?

Как это осуществить? Рассмотрим следующий пример: выполнить движение некоторого графического объекта слева направо.

Пусть картинка как на рисунке № 3 - пять объектов Shape: четыре круга и один прямоугольник. Кроме этого на форме есть кнопка “старт”, и таймер.

рис. № 3

1. Зададим начальные значения параметрам компонента Timer1 (смотри алгоритм);

2. В процедуре click для кнопки запишем команду:

Timer1.Enabled := true;

Включим таймер при нажатии на кнопку;

3. Определяем Shape, у которого самая “правая” часть картинки. В нашем примере это будет Shape3;

4. Записываем команды в процедуре таймера для движения картинки.

Примеры программ на движение

Первая программа - движение слева направо

Просмотрите код Unit1.pas для нашего примера:

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ExtCtrls, StdCtrls, Buttons;

type

TForm1 = class(TForm)

Timer1: TTimer; { таймер }

Shape1: TShape; { первое }

Shape2: TShape; { колесо }

Shape3: TShape; { второе }

Shape4: TShape; { колесо }

Shape5: TShape; { прямоугольник }

BitBtn1: TBitBtn; { кнопка с цветным текстом,}

{ находится в закладке Additional}

procedure BitBtn1Click(Sender: TObject);

procedure Timer1Timer(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

// Таймер активен, следовательно, через каждые

// 100 миллисекунд будет происходить вызов процедуры // Timer1Timer

procedure TForm1.BitBtn1Click(Sender: TObject);

begin

Timer1.Enabled := true;

end;

// Ориентируемся по Shape, у которого самая

// правая граница.

// В нашем примере это Shape3.

// Правая граница Shape3 = левый отступ + длина

// шейп, т.е. Shape3.Left + Shape3.Width

// Timer1 активен пока не достигли почти правой

границы формы

procedure TForm1.Timer1Timer(Sender: TObject);

begin

// 30 пикселей не доходить до правой границы формы

if Shape3.Left + Shape3.Width <

Form1.Width - 30 then

begin

// передвигаем вправо на 3 пикселя все части

// движущейся картинки

Shape1.Left := Shape1.Left + 3;

Shape2.Left := Shape2.Left + 3;

Shape3.Left := Shape3.Left + 3;

Shape4.Left := Shape4.Left + 3;

Shape5.Left := Shape5.Left + 3;

end

else

// достигли правой границы движения -

// выключаем таймер

timer1.Enabled := false;

end;

end.

При движении по вертикали будем использовать параметр Top - отступ от верхней границы формы. Значение высоты объекта находится в параметре Height.

Разберите пример использования нескольких таймеров, а так же применение “подкладки” (Panel) под картинкой для простоты кодирования движения. В примере есть рисунок, который был нарисован в Paint и вставлен как объект Image из вкладки Additional. Для связи картинки с Image в параметре Picture

рис. № 4

Вторая программа - движение ракет вверх с использованием Shape, картинки и панели

Задание: три ракеты стартуют по очереди (старт следующей при достижении верхней границы), с помощью кнопок можно заставить стартовать ракеты раньше.

Расположение объектов на форме можно рассмотреть на рисунке № 5:

· первая ракета из Shape;

· вторая из таких же шейпов на панели (Panel находится в Standard);

· третья нарисована в Paint и вставлена через Image.

После нажатия на кнопку старт она становится недоступной - параметр Enabled становиться равным false.

рис. № 5

Просмотрите как работает программа с тремя ракетами.

var

Form1: TForm1;

step : byte = 3; { шаг смещения ракеты равен 3 пикселям }

implementation

{$R *.dfm}

// Пример движения графических объектов: Shape, Panel, Image

// Вторая ракета стартует после выхода на орбиту первой,

// то же самое и со второй.

// Вторая и третья ракета могут стартовать и при нажатии

// кнопок "старт"

// Обращение к объекту Timer происходит каждый раз по

// прошествии милисекунд, указанных в параметрах таймера.

// Если таймер имеет начальное значение параметра Enabled

// равным true, то он стартует одновременно с активизацией

// формы, иначе (значение false) только тогда, когда

// параметр Enabled будет равен true.

// Процедура движения стандартных графических образов - // Shape

procedure TForm1.Timer1Timer(Sender: TObject);

begin

if Shape4.Top > 50 then { пока не долетели - сдвиг на шаг }

begin

Shape1.Top := Shape1.Top - step;

Shape2.Top := Shape2.Top - step;

Shape3.Top := Shape3.Top - step;

Shape4.Top := Shape4.Top - step;

Shape5.Top := Shape5.Top - step;

Shape6.Top := Shape6.Top - step;

Shape7.Top := Shape7.Top - step;

Shape8.Top := Shape8.Top - step;

end

else

begin

timer1.Enabled := false; { выключить таймер - стоп }

// Вызов процедуры-события Click на кнопке Button2

// для автоматического старта второй ракеты

Form1.Button2.Click; { старт второй ракеты }

end;

end;

// Кнопка старт для первой ракеты

procedure TForm1.Button1Click(Sender: TObject);

begin

timer1.Enabled := true; { включить таймер - старт }

Button1.Enabled := false; { кнопка старт неактивна }

end;

// Процедура движения панели (Panel)

procedure TForm1.Timer2Timer(Sender: TObject);

begin

if Panel1.Top > 50 then { пока не долетели - сдвиг на шаг }

Panel1.Top := Panel1.Top - step

else

begin

timer2.Enabled := false; { выключить таймер - стоп }

// Вызов процедуры-события Click на кнопке Button3

// для автоматического старта третьей ракеты

Form1.Button3.Click; { старт третьей ракеты }

end;

end;

// Кнопка старт для второй ракеты

procedure TForm1.Button2Click(Sender: TObject);

begin

timer2.Enabled := true; { включить таймер - старт }

Button2.Enabled := false; { кнопка старт неактивна }

end;

// Процедура движения графического образа (Image)

procedure TForm1.Timer3Timer(Sender: TObject);

begin

if Image1.Top > 50 then { пока не долетели - сдвиг на шаг }

Image1.Top := Image1.Top - step

else

timer2.Enabled := false;

end;

// Кнопка старт для третьей ракеты

procedure TForm1.Button3Click(Sender: TObject);

begin

timer3.Enabled := true; { включить таймер - старт }

Button3.Enabled := false; { кнопка старт неактивна }

end;

end.

Как выполнить движение по диагонали?

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

Примерные задания для шестого урока

Нарисовать картину на форме или панели (минимум из 6-и Shapes) и выполнить движение:

1. направо, затем вверх из левого нижнего угла формы;

2. налево, затем вверх из правого нижнего угла формы;

3. вниз, затем вправо из левого верхнего угла формы;

4. вниз, затем влево из правого верхнего угла формы

5. Нарисовать в Paint:

· Бабу Ягу в ступе,

· космический корабль;

· автомобиль;

· вертолёт

а) выполнить движения как в вариантах 1 - 4;

б) выполнить движение по диагонали в направлении:

Ш левый нижний - правый верхний;

Ш левый верхний угол - правый нижний;

Ш правый нижний угол - левый верхний;

Ш правый верхний угол - левый нижний

Вопросы для самоконтроля

1. Какие новые компоненты Вы узнали?

2. Расскажите алгоритм движения картинки сверху вниз.

3. Почему параметр Enabled в Timer должен быть true при движении?

4. Зачем при достижении конца движения нужно выключить (сделать неактивным) Timer?

5. Сколько таймеров Вы будете использовать для первого варианта задания?

6. Как выполнить движение графического объекта из правого нижнего угла в левый верхний?

7. Опишите алгоритм программы движения графического объекта по периметру.

Седьмой урок - цикл с параметром (For)

Познакомимся с новым конструкцией - цикл с параметром:

For <1> := <2> to | downto <3> do

<4>;

1 - переменная порядкового типа;

2 - начальное значение переменной;

3 - конечное значение переменной;

4 - оператор;

to - шаг +1;

downto - шаг -1.

Нужно решить следующую задачу: сколько трехзначных чисел имеют удвоенную сумму цифр равную произведению цифр? Напечатать эти числа.

Пусть наша форма будет иметь следующий вид:

Код процедуры Click для кнопки определить

procedure TForm1.Button1Click(Sender: TObject);

begin

n := 0; { счетчик количества цифр }

s := ''; { строковая переменная для вывода результата }

for a := 1 to 9 do { цифра сотен }

for b := 0 to 9 do { цифра десятков }

for c := 0 to 9 do { цифра единиц }

if 2*(a + b + c) = (a * b * c) then

begin

n := n + 1;

if n mod 7 = 0 then { для вывода по семь чисел в

строке }

s := s + inttostr(100*a + 10*b + c) + #13

{ можно и chr(13) }

else

s := s + inttostr(100*a + 10*b + c) + ' ';

end;

Label4.Caption := inttostr(n);

label6.Caption := s;

end;

Вопросы для самоконтроля

1. Какую новую конструкцию языка Pascal Вы узнали?

2. Почему в первом цикле переменная a начинается с 1, а переменные b и c с ноля.

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

4. Как и где можно объявить переменные, встречающиеся в процедуре?

5. Зачем используется #13?

6. Почему в процедуре использовали три цикла с параметром?

7. Сколько циклов с параметром Вы запишете в алгоритме для пятизначных чисел?

8. Для чего после вывода числа добавляли два пробела?

Восьмой урок - цикл с предусловием (While … do)

Познакомимся с новым оператором - цикл с предусловием:

While <1> do // делать, пока условие верно

<2>;

1 - логическое выражение (условие);

2 - оператор;

- цикл выполняется до тех пор, пока логическое выражение истинно;

- после ключевого слова Dо выполняется один оператор. Если нужно выполнить более одного оператора, то их заключают в операторные скобки Beginend;

- в теле цикла обязательно должно произойти событие, которое сделает логическое выражение ложным.

Нам надо решить следующую задачу:

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

а) она откусывает от большей головки столько, сколько весит меньшая головка;

б) если они окажутся не равными, то повторит откусывание для большей головки;

в) иначе - закончит дележ.

Если найденные головки сыра весят M и N гр., то сколько будут весить они после дележа, сколько раз будет лиса откусывать и сколько грамм сыра она съест?

Пусть наша форма будет иметь следующий вид:

Вывод результатов будем производить в три объекта Label.

Код процедуры Click для кнопки подсчитать

Procedure TForm1.Button1Click(Sender: TObject);

var

a, b, z, n : integer; // локальные переменные

begin

a := strtoint(Edit1.Text); // вес первой головки сыра в граммах

b := strtoint(Edit2.Text); // вес второй головки сыра в граммах

n := 0; // количество откусываний

z := a + b; // вес двух головок сыра до дележа

While a <> b do

begin

inc(n);

If a > b then

a := a - b

Else

b := b - a;

end;

Label7.Caption := inttostr(a) + ' гр.';

Label8.Caption := inttostr(z - 2*a) + ' гр.';

Label9.Caption := inttostr(n) + ' раз.';

end; Вопросы для самоконтроля

1. Какую новую конструкцию языка Pascal Вы узнали?

2. Почему тип переменных a и b целочисленный?

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

4. Зачем переменную n перед использованием обнулили (n := 0;)?

5. Как и где ещё можно объявить переменные, встречающиеся в процедуре?

6. Зачем в цикле были использованы ключевые слова: begin, end?

7. Почему в Label7 использовали переменную a, а не b?

8. Что представляет собой в математическом смысле результат выполнения цикла?

9. Для чего использовались функции strtoint и inttostr?

Девятый урок - цикл с постусловием (Repeat … Until)

Познакомимся с новой конструкцией - цикл с постусловием:

Repeat <1> Until <2>;

1 - операторы;

2 - логическое выражение (условие);

- после выполнения тела цикла происходит проверка условия выхода. Выход по верному условию.

- ключевые слова Repeat и Until являются операторными скобками, поэтому между ними можно вставить более одного оператора;

- в теле цикла обязательно должно произойти событие, которое сделает логическое выражение верным.

Пусть надо решить следующую задачу:

Денис после изучения темы циклы заинтересовался, как для натурального числа N с помощью компьютера получить другое число, записанное в обратном порядке. А вы сможете это сделать?

Контрольный пример:

Введено число 12023, новое число 32021.

Пусть наша форма будет иметь следующий вид:

Вывод результата осуществим не в Label, а в Edit.

Объявим переменные как глобальные:

var

Form1: TForm1;

a, b, x : int64; // самый большой целочисленный тип

implementation

Код процедуры Click для кнопки получить новое число. Кнопка из вкладки Additional - цвет надписи на кнопке можно изменить.

procedure TForm1.BitBtn1Click(Sender: TObject);

begin

a := StrToInt64(Edit1.Text);

x := a;

b := 0;

repeat

b := b * 10 + x mod 10; // 1

x := x div 10; // 2

until x = 0; // 3

Edit2.Text := IntToStr(b); // тип int64 максимальный в функции

end;

Вопросы для самоконтроля

1. Какую новую конструкцию языка Pascal Вы узнали?

2. Почему тип переменных a и b int64?

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

4. Зачем переменную b перед использованием обнулили (b := 0;)?

5. Без какой переменной можно было обойтись в программе, у какой переменной в этом случае теряется начальное значение?

6. Почему операторы между Repeat и Until не заключили в операторные скобки Begin … end?

7. Объясните, что выполняет команда с комментарием: 1, 2 и 3?

8. Какой тип данных находится в параметре Text компонента Edit?

9. Когда происходит выполнение процедуры Click?

10. Переделайте алгоритм с цикла Repeat … Until на While … do.

Приложение № 1

Некоторые параметры объектов и их использование

Align

Выравнивание объекта к контейнеру

Alignment

Выравнивание текста: taCenter - по центру, taLeftJustify - по левой границе, taRightJustify - по правой границе

AutoSize

Настройка размера по данным

Caption

Надпись, заголовок

Color

Цвет фона объекта

Cursor

Вид курсора на объекте

ClientHeight

Высота объекта в пикселях (аналог Height)

ClientWidth

Ширина объекта в пикселях (аналог Width)

Enabled

Доступен ли объект (значения true, false)

Font

Color

Height

Name

Size

Style

Параметры шрифта (фонта), шелчёк на - вызов диал. окна

цвет

высота

название (гарнитура)

размер (в пунктах)

стиль - начертание

Hint

Текст подсказки для объекта (без ShowHint не работает)

Icon

Замена стандартной иконки

Layout

Выравнивание текста по высоте, когда AutoSize равен true:

tlBottom - по нижней границе

tlCenter - по центру

tlTop - по верхней границе

Left

Отступ от левой границы в пикселях (окна, формы, контейнера)

Name

Название объекта - лучше не менять стандартные, иначе правила идентификатора

ShowHint

Параметры показа подсказки объекта (значения true - показать, false - не показывать)

Stretch

Растягивает картинку по размерам области вставки (значения: true, false)

Picture

Вставка рисунка

Transparent

Прозрачность фона (значения: true, false)

Top

Отступ от верхней границы в пикселях (окна, формы, контейнера)

Visible

Видимый объект или нет (значения: true, false)

Width

Ширина объекта в пикселях

WordWrap (когда AutoSize true)

Отображение текста в несколько строк (значения: true, false), например, для label (метки), кнопки (button) и т.д.

Приложение № 2

Математические операции и некоторые функции в Pascal и Delphi

порядок

математика

Delphi

пример

1

Возведение в степень

Отсутствует

См. замечания

2

Умножение

Х

*

2 * 56 > 112

Деление

:

/

134 / 4 > 33,5

Целочисленное деление

Div

17 div 3 > 5

Остаток от целочисленного деления

Mod

17 mod 3 > 2

3

Сложение

+

+

17 + 8 > 25

Вычитание

-

-

36,7 - 9,4 > 27,3

4

Операции сравнения

>

>

=

=

<

<

?

<>

?

<=

?

>=

Приложение № 3

Стандартные математические функции Object Pascal

Обращение

Тип параметра

Тип результата

Примечание

abs(x)

Real, Integer

Тип аргумента

Модуль аргумента

ArcTan(x)

Real

Real

Аргтангенс (значение в радианах)

cos(x)

Real

Real

Косинус, угол в радианах

exp(x)

Real

Real

Экспонента

frac(x)

Real

Real

Дробная часть

int(x)

Real

Real

Целая часть числа

ln(x)

Real

Real

Логарифм натуральный

pi

-

Real

= 3б141592653 …

Random

-

Real

Псевдослучайное число, равномерно распределенное в диапазоне 0 … [1]

Random(x)

Integer

Integer

Псевдослучайное число, равномерно распределенное в диапазоне 0 … (x-1)

Randomize

-

-

Инициация генератора псевдослучайных чисел

sin(x)

Real

Real

Синус, угол в радианах

sqr(x)

Real

Real

Квадрат аргумента

sqrt(x)

Real

Real

Корень квадратный

В этой таблице Real означает любой вещественный тип, Integer - любой целый тип.

Приложение № 4

Типы числовых данных в Pascal-е и Delphi

Целые типы

Название

Длинна, байт

Диапазон значений

Byte

1

0 … 255

ShotInt

1

-128 … +127

SmallInt

2

-32 768 … +32 767

Word

2

0 … 65 535

Integer

4

-2 147 483 648 … +2 147 483 647

LongInt

4

-2 147 483 648 … +2 147 483 647

LongWord

4

0…4 294 967 295

Int64

8

-9*10^18 … +9*10^18

Cardinal

4

0… 2 147 483 647

Вещественные типы

Название

Длина, байт

Количество значащих цифр

Диапазон значений

Real

8

15 … 16

5,0*10^-324 … 1,7*10^308

Single

4

7 … 8

1,5*10^-45 … 3,4*10^38

Double

8

15 … 16

5,0*10^-324 … 1,7*10^308

Extended

10

19 … 20

3,4*10^-4951 … 1,1*10^4932

Comp

8

19 … 20

-2^63 … +2^63 - 1

Currency

8

19 … 20

±922 337 203 685 477, 5807

Размещено на Allbest.ru


Подобные документы

  • Использование объектно-ориентированной методологии при программировании математических процессов. Среда языка программирования Delphi для решения математических задач. Объектно-ориентированные, декларативные и императивные языки программирования.

    дипломная работа [1,8 M], добавлен 14.09.2011

  • Delphi - среда быстрой разработки, в которой в качестве языка программирования используется типизированный объектно-ориентированный язык Delphi. Варианты программного пакета. Особенности работы, вид экрана после запуска. Описание структуры программы.

    курсовая работа [1,3 M], добавлен 25.11.2014

  • Основные приемы работы в среде программирования Delphi. Особенности технологии создания простейших приложений. Работа с компонентами среды разработки приложений. Ввод, редактирование, выбор и вывод информации. Аспекты использования структуры ветвления.

    методичка [619,9 K], добавлен 17.11.2011

  • Предмет объектно-ориентированного программирования и особенности его применения в средах Паскаль, Ада, С++ и Delphi. Интегрированная среда разработки Delphi: общее описание и назначение основных команд меню. Процедуры и функции программы Delphi.

    курсовая работа [40,8 K], добавлен 15.07.2009

  • История развития, характеристика, предназначение и особенности языка программирования Delphi. Разработка проекта создания кроссворда на объектно-ориентированном языке Delphi, который состоит из 19 вопросов по горизонтали и 16 вопросов по вертикали.

    курсовая работа [970,5 K], добавлен 15.05.2014

  • Ознакомление с историей создания и особенностями объектно-ориентированного языка программирования Delphi. Разработка приложения, фиксирующего количество повторений какого-либо слова в тексте, введённом в поле MEMO. Описание интерфейса программы.

    курсовая работа [880,1 K], добавлен 21.04.2015

  • Разработка программы по оформлению заказов на билеты Оренбургского государственного областного драматического театра им. Горького. Использование объектно-ориентированного программирования и реализация проекта в среде визуального программирования Delphi 7.

    курсовая работа [6,3 M], добавлен 12.11.2014

  • Создание Windows-приложения на алгоритмическом языке Object Pascal в среде визуального программирования Delphi, которое, как планируется, будет обеспечивать решение специализированных задач по формированию, обработке на ЭВМ и выводу информации.

    курсовая работа [967,6 K], добавлен 20.05.2008

  • Принципы разработки алгоритмов и программ на основе процедурного подхода и на основе объектно-ориентированного подхода. Реализация программы Borland Pascal 7.0, ее интерфейс. Разработка простой программы в среде визуального программирования Delphi.

    отчет по практике [934,7 K], добавлен 25.03.2012

  • Delphi как среда разработки программ, ориентированных на работу в Windows. Назначение и преимущество использования электронных учебников. Описание возможностей среды Delphi 5 для разработки электронного учебника. Варианты применения служб Internet.

    дипломная работа [3,6 M], добавлен 13.07.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.