Объектно-ориентированное программирование на языке Delphi

advertisement
Объектно-ориентированное программирование на языке Delphi
Разработчик - Нефедова Виктория Юрьевна,
ассистент кафедры ИМПИ
Оренбургского государственного педагогического университета
email: victory2410@yandex.ru
Информатика – это область человеческой деятельности, связанная с
процессами преобразования информации с помощью компьютеров и их
взаимодействием со средой применения. Информатика появилась благодаря
развитию компьютерной техники и немыслима без нее.
Одним
из
программирование.
важнейших
Язык
разделов
информатики
программирования
–
это
является
формальный,
искусственно созданный язык для написания и реализации алгоритма на
компьютере.
Данное методическое пособие предназначено для изучения основ
объектно-ориентированного языка программирования Delphi (ООП) без
ориентации на структурную парадигму.
Среди
главных
причин,
объектно-ориентированного
принесших
заслуженную
программирования,
популярность
следует
отметить
следующие:
 почти полное разрешение проблемы кризиса в программном
обеспечении, за счет уменьшения времени на разработку
программного продукта и высокой технологии программирования;

переход от существующих языков программирования к новым,
прогрессивным информационным технологиям и сходство идей
объектно-ориентированного
других областей науки.
программирования
с
идеями
из
Методы ООП для решения технических задач нередко используются в
повседневной жизни, поэтому, обучение языкам объектно-ориентированного
программирования не вызывает особых трудностей.
Методическое пособие может быть рекомендовано для студентов,
изучающих объектно-ориентированное программирование.
Оглавление
Алгоритмы и исполнители ..................................................................................... 5
Основные понятия объектно-ориентированного программирования ............... 6
Проверочная работа №1. Алгоритмы и исполнители. Основные понятия
ООП........................................................................................................................ 8
Форма и размещение на ней простейших объектов .......................................... 10
Лабораторная работа №1 ................................................................................... 12
Расположение объектов на форме ....................................................................... 17
Лабораторная работа №2 ................................................................................... 18
Дополнительные возможности при работе с объектами Edit, Memo. Кнопка с
изображением BitBtn............................................................................................. 19
Лабораторная работа №3. MainMenu - главное меню формы ....................... 20
Проверочная работа №2. Работа с компонентами. ......................................... 21
Арифметические операции в ООП ...................................................................... 22
Лабораторная работа № 4 .................................................................................. 24
Лабораторная работа №5. Алгоритм решения математический задачи на
языке. ................................................................................................................... 25
Стандартные арифметические функции ............................................................. 26
Лабораторная работа № 6 .................................................................................. 27
Флажки (CheckBox) и переключатели (RadioButton). Условный оператор .... 27
Лабораторная работа №7 ................................................................................... 32
Проверочная работа №3. Условный оператор. ............................................... 34
Оператор варианта ................................................................................................ 39
Лабораторная работа №8 ................................................................................... 40
Работа со строками в объектно-ориентированном программировании.
Оператор цикла с параметрами............................................................................ 41
Лабораторная работа №9 ................................................................................... 44
Программирование циклических алгоритмов. Циклы «до» и «пока» ............. 45
Лабораторная работа №10 ................................................................................. 46
Проверочная работа №4. Строки. Циклы ........................................................ 49
Рассмотрение дополнительных компонентов для ввода/вывода строк ........... 52
Оператор присоединения (With) .......................................................................... 54
Графические компоненты..................................................................................... 55
Лабораторная работа №11 ................................................................................. 57
Работа с таблицами ............................................................................................... 59
Лабораторная работа №12 ................................................................................. 60
Массивы ................................................................................................................. 61
Лабораторная работа №13 ................................................................................. 63
Проверочная работа №5. Массивы ................................................................... 64
Обработка событий мыши. Регулировка прозрачности формы ....................... 67
Процедуры и функции вызова диалоговых окон ............................................... 68
Лабораторная работа №14 ................................................................................. 69
Работа с датой и временем ................................................................................... 70
Лабораторная работа №15 ................................................................................. 74
Компоненты вкладки Samples. Обработка событий OnDownClick и
OnUpClick............................................................................................................... 74
Лабораторная работа №16 ................................................................................. 75
Компоненты вкладки Dialogs ............................................................................... 76
Лабораторная работа №17 ................................................................................. 76
Контрольная работа............................................................................................ 78
Список рекомендуемой литературы ................................................................. 80
Алгоритмы и исполнители
Термин алгоритм происходит от имени узбекского ученого 9в. АльХорезми, который в своем труде "Арифметический трактат", переведенном в
12в. с арабского на латынь, изложил правила арифметических действий над
числами. Эти правила и называли алгоритмами. Таким образом, правила
вычитания, сложения, умножения, построения геометрических фигур - все
это алгоритмы.
С течением времени данное понятие расширялось и теперь, алгоритмами
называют определенную последовательность действий, приводящую к
определенному результату.
Рассмотрим пример:
Дано: улица с движением, пешеходный переход.
Найти: переход на другую сторону улицы.
1) остановиться на тротуаре;
2) посмотреть налево;
3) если транспорта нет, то идти до середины дороги и остановиться,
иначе ждать пока проедет транспорт, затем идти до середины дороги и
остановиться;
4) посмотреть направо;
5) если транспорта нет, то идти до тротуара противоположной стороны
улицы, иначе ждать пока проедет транспорт, затем идти до тротуара
противоположной стороны улицы;
6) конец.
Свойства алгоритмов:
1. Дискретность (разбиение на последовательность отдельных шагов)
2. Понятность
3. Детерминированность или однозначность (не должно быть шагов,
которые можно воспринять неоднозначно)
4. Результативность
5. Массовость
Способы записи алгоритмов:
1. словесный

естественный язык (кулинарный рецепт)

язык программирования
2. графический (блок-схемы)
Ни один алгоритм не может работать без исполнителя – человека,
животного или машины который понимает команды и исполняет их
формально, т.е. не задумываясь.
У каждого исполнителя есть своя система команд исполнителя (СКИ).
Если по каким-либо причинам он не может выполнить команду, поступает
сообщение «не могу». Если команда не входит в СКИ, поступает сообщение
«не понимаю».
Основные понятия объектно-ориентированного программирования
Язык программирования – это искусственно созданный язык для записи
алгоритма с помощью ЭВМ. Программа – алгоритм, записанный на языке
программирования.
Языки программирования:
1. неструктурный (Basic)
2. структурный (Pascal);
3. логический (Prolog);
4. объектно-ориентированный (Delphi);
5. функциональный (Lisp («черный ящик»)).
Преимущество ООП в наглядном представлении программы с помощью
объектов (кнопок, строк для ввода информации и др.). Каждый объект
принадлежит
определенному
классу.
Например,
кнопка
(Button1)
принадлежит классу кнопок TButton. В класс входит сколь угодно много
объектов, объединенных в одну группу согласно их свойствам и поведению в
среде окружения, в которой они существуют и взаимодействуют.
TButton
Button1
Button2
Button3
…
ButtonN
Чаще всего объекты включают в свою программу путем визуального
программирования, используя заготовки – компоненты.
Компонент класса TButton
Каждый объект обладает свойствами, событиями и методами.
Свойства характеризуют отличительные особенности компонента (Name
(Имя), Caption (Заголовок) и др.).
События – сообщение, которое компонент принимает от приложения,
если во время работы программы выполняется определенное действие
(например, нажатие на кнопку).
Методы – программный код, обрабатывающий значения свойств.
Класс характеризуется:

Наследованием – любой класс может быть порожден от другого
класса. Порожденный класс автоматически наследует поля, методы и
свойства своего родителя и может добавлять новые.

Инкапсуляцией.
Класс
представляет
собой
единство
трех
сущностей – полей, методов и свойств. Объединение этих сущностей в
единое целое и называется инкапсуляцией. Представляет собой сокрытие
отдельных деталей внутреннего устройства классов от внешних по
отношению к нему объектов или пользователей.

Полиморфизмом – это свойство классов решать схожие по смыслу
проблемы разными способами. Действия, выполняемые одноименными
методами, могут отличаться в зависимости от того, какому из классов
относится тот или иной метод.
Проверочная работа №1. Алгоритмы и исполнители. Основные
понятия ООП
Вариант №1.
1.
От имени какого ученого произошел термин алгоритм?
_______________________________________________________
2.
Перечислите свойства алгоритма
a. ______________________________
b. ______________________________
c. ______________________________
d. ______________________________
e. ______________________________
3.
Дайте определение исполнителя
_______________________________________________________
_______________________________________________________
_______________________________________________________
4.
Что
мы
понимаем
под
языком
программирования?
_______________________________________________________
_______________________________________________________
5.
Приведите пример класса и объекта ему принадлежащего.
_______________________________________________________
Вариант №2*.
1.
Дайте определение алгоритма.
________________________________________________________
________________________________________________________
________________________________________________________
2.
Перечислите способы записи алгоритма в виде схемы
____________________
____________________
____________________
3.
____________________
Что такое СКИ? __________________________________________
4.
Что такое программа?
________________________________________________________
________________________________________________________
5.
Чем обладает объект?
____________________
____________________
____________________
Форма и размещение на ней простейших объектов
Среда программирования Delphi состоит из:
1. Главного меню. В нем располагаются стандартные операции работы
с файлами (создать, сохранить, закрыть и т.д.)
Ниже располагаются вкладки объектов: Standard, Additional и прочие.
Для открытия вкладки необходимо щелкнуть по ней кнопкой мыши.
2. Окно формы. На нее наносятся все объекты необходимые для работы
создаваемого проекта.
3. Окно программного кода. В нем записывается методы для работы
программы.
4. Окна инспектора объектов
Состоит из окна свойств (Properties) и
событий (Events). При настройке свойств
объектов на форме необходимо выделить
данный объект щелчком мыши по нему и
изменить
поле
слева
свойства.
Например,
от
для
названия
изменения
свойства Caption (надпись) у объекта
Form1 (см. рис.) необходимо стереть в
левом столбце Form1. Внимание! Нельзя
путать свойства Caption и Name. Первое
отвечает за название на форме, а второе –
за имя объекта
Для нанесения объекта на форму нужно выбрать его в главном меню и
щелкнуть в нужное место формы.
Лабораторная работа №1
1.
Запустите среду программирования Delphi
2.
Перед вами открылся новый проект, состоящий из Формы
(Form), на которую будете наносить объекты и окно Программного кода
(Unit), куда будете записывать программу
Создание графического интерфейса объекта. Создать приложение, в
котором после запуска на форме печатается некоторый текст, например,
«Первый проект на языке Delphi».
Создадим заготовку проекта, для этого свойству Caption (заголовок)
формы
Form1
присвоим
значение
“Первый
проект’.
Для
этого
активизировать форму Form1 щелчком мыши (чтобы вокруг компонента
появились черные квадратики – маркеры для изменения размера). В окне
Object Inspector (Инспектор объектов) → Properties (Свойств объекта)
выбрать свойство Сaption и присвоить ему значение «Первый проект»
(написать в ячейке справа от Caption Первый проект).
Выведем
на форму текстовое
сообщение.
Это
различными способами:

С помощью элемента управления Label (Метка)
можно
сделать

С помощью элемента управления Edit (Одна строка)

С помощью элемента управления Memo (Несколько строк)
Разместим на форме метку Label1 и присвоим свойству Сaption
(Надпись) значение выводимого текстового сообщения
3.
Выбрать на Панели инструментов класс управляющих элементов
TLabel и разместить экземпляр метки Label1 на форме Form1
4.
Активизировать метку Label1 щелчком мыши. В окне Object
Inspector (Инспектор объектов) → Properties (Свойства объекта) выбрать
свойство Caption (заголовок) и присвоить ему значение ‘Первый проект на
языке Delphi’.
Разместим на форме текстовое поле Edit1 и присвоим свойству Text
значение выводимого сообщения (сделать самостоятельно)
Событийные процедуры. Любой объект можно связать с набором
процедур, исполняемых при наступлении определенных событий, такие
процедуры называют событийными процедурами
Двойной щелчок мышью по объекту вызывает окно Программного кода
с пустой заготовкой событийной процедуры (метода). Если
(Unit)
осуществить двойной щелчок по метке Memo1, то появится заготовка
событийной
процедуры
TForm1.Memo1Change (…);
появляется автоматически!)
procedure TForm1.Memo1Change(Sender: TObject);
begin
… end;
(эта
надпись
В теле процедуры (между служебными словами begin и end) должен
быть записан метод, т.е. последовательность операторов, которые будут
выполняться при наступлении событий (нажатии на Memo1)
5. Выбрать на Панели инструментов класс
управляющих элементов TMemo и разместить
экземпляр многострочного редактора Memo1 на
форме
Form1.
В
свойстве
Lines
удалить
существующую надпись Memo1. (щелкнув по
многострочному
полю
Memo1,
кликнуть
напротив свойства Lines и удалить там надпись
Memo1).
6. Активизировать Memo1 двойным щелчком
мыши, тем самым вызвать окно Программного
кода с пустой процедурой
TForm1.Memo1.Change (…); (эта надпись
появляется автоматически)
7. В теле процедуры записать
Memo1.Text:='Второй проект на языке Delphi';
т.е. при запуске программы, щелкнув по Memo1, появится надпись «Второй
проект на языке Delphi»
Использование
кнопок.
Обычно,
при
работе
с
событийными
процедурами используют Кнопки (TButton). Логично, что при нажатии на
кнопку с определенным именем происходит какое-либо действие. Теперь
необходимо решить предыдущую задачу, но с помощью Кнопки. В
дальнейшем большинство задач будет решаться при обработке события
OnClick – двойной щелчок по кнопке.
8. Выбрать на Панели инструментов класс управляющих элементов
Button и разместить экземпляр кнопки Button1 на форме Form1
9.
Выбрать на Панели инструментов класс управляющих элементов
TLabel и разместить экземпляр метки Label2 на форме Form1
10. Активизировать кнопку Button1. В окне Свойств объекта выбрать
свойство Caption и присвоить ему значение Моя кнопка (щелкнув по кнопке
Button1, написать в колонке Properties Моя Кнопка в ячейке справа от
Caption).
11. Активизировать Button1 двойным щелчком мыши, тем самым
вызвать
окно
Программного
TForm1.Button1Click(Sender:
кода
TObject);
с
(эта
пустой
процедурой
надпись
появляется
автоматически)
12. В теле процедуры записать Label2.Caption:='Третий проект на языке
Delphi';
т.е. при запуске программы, щелкнув по Моей кнопке, появится надпись
на метке Label2 «Третий проект на языке Delphi»
Выход из программы легко осуществлять записывая в событийной
процедуре оператор Close;
Установка цвета формы и параметров шрифта. Сделаем внешний вид
более
привлекательным
и
для
этого
изменим
свойства
объектов,
определяющих их внешний вид.
13. Активизировать форму Form1. В окне свойства объекта выбрать
свойство Сolor (цвет фона) и двойным щелчком открыть диалоговое окно с
цветовой палитрой. Выбрать цвет, например желтый.
14. Активизировать метку Label1. В окне свойства объекта установить
значения Color – синий, Font – Arial, жирный, 26 размер, травяной цвет
символов.
15. Поэкспериментировать с объектами Memo1, Edit1, Label2
Для того, чтобы менять параметры шрифта с помощью кнопки при
запуске программы необходимо в событийной процедуре указать, например
Label2.Font.Size:=30; Label2.Font.Сolor:=clWhite; Т.е. при нажатии на кнопку
размер шрифта метки 2 станет равным 30, а цвет - белым.
Для изменения начертания шрифта пишем
 Label2.Font.Style:=fsbold; {полужирный},
 Label2.Font.Style:=fsitalic; {курсив},
 Label2.Font.Style:=fsunderline; {полужирный}.
Если необходимо поменять шрифт пишем Label2.Font.Name:=’Arial’;
{Arial} или Label2.Font.Name:=’Times New Roman’; {Times New Roman}
Задание для самостоятельной работы:
1. Создать проект «Вывод сообщений», в котором на форму выводится
текстовое сообщение «Первое задание выполнено!» с помощью метки, одной
строки и многострочного редактора, а выход из программы осуществляется
щелчком по кнопке Выход. Придумать графический интерфейс программе.
2. Создать проект «Вывод сообщений в строку», в котором два различных
варианта текста выводятся в строку Edit1 по щелчку по двум кнопкам.
Предусмотреть возможность выхода из программы по третьей кнопке.
3. Создать проект «Печать на форме», в котором в нескольких метках при
нажатии на кнопки тексты будут со следующими параметрами:
 «Times New Roman, 18, курсив, красный»
 «Courier New, 40, полужирный, зеленый»
 «Arial, 22, подчеркнутый, синий»
 «Webdings, 12, подчеркнутый курсив, желтый»
 «Monotype Corsiva, 32, полужирный»
Расположение объектов на форме
Местоположение объекта, которое он будет занимать на форме после
запуска приложения на выполнение, можно легко изменить.
Для этого достаточно перетащить объект с помощью мыши в любое
место
экрана.
Если
необходимо
установить
точные
значения
местоположения и размеров объектов, то это можно сделать, установив
значения свойств Left (расстояние по горизонтали от левого верхнего угла
монитора до верхнего левого угла формы), Top (расстояние по вертикали от
левого верхнего угла монитора до верхнего левого угла формы), Width
(ширина формы), Height (высота формы).
Для этого необходимо активизировать, например
Edit. В окне Свойства объекта последовательно
присвоить свойствам Left, Top, Width, Height значения
32, 104, 225, 30.
Лабораторная работа №2
Расположение управляющих элементов на форме. Расположение на
форме и размеры управляющих элементов можно легко изменять с помощью
мыши. Для этого необходимо активизировать объект щелчком мыши (он
будет выделен восемью квадратиками - маркерами) и перетащить его на
новое место или изменить размер элемента.
Точное
месторасположение
и
размеры
выделенных
элементов
управления отображаются двумя парами чисел: Left, Top, Width и Height.
1. Активизировать
метку
Label1.
В
окне
свойства
объекта
последовательно присвоить свойствам Left, Top, Width и Height значения 30,
0, 100, 100.
2. Активизировать
метку
Label2.
В
окне
свойства
объекта
последовательно присвоить свойствам Left, Top, Width и Height значения 70,
0, 450, 100
3. Активизировать
метку
Label3.
В
окне
свойства
объекта
последовательно присвоить свойствам Left, Top, Width и Height значения 0,
330, 100, 30.
Задачи для самостоятельного выполнения:
1. Создать проект «Перемещение кнопки по форме», в котором,
например, в центре, располагаются кнопки и по щелчку перемещаются в
заданное место на форме, например по углам формы
2. Создать проект «Перемещение формы на экране», в котором будет
изменяться местоположение формы на экране монитора с помощью четырех
командных кнопок. Кнопки расположить в углах формы. После щелчка по
кнопке, форма должна переместиться в соответствующую часть экрана.
Перемещение формы должно сопровождаться комментариями, выводимыми
с помощью надписи в центре формы.
Дополнительные возможности при работе с объектами Edit, Memo.
Кнопка с изображением BitBtn
Для межстрочного поля Memo существует способность отображать
множество строк. Все они, как известно, содержаться в свойстве Lines. Метод
Add добавляет новую строчку к имеющемуся в межстрочном поле набору
строк. Memo1.Lines.Add(’Привет!’);
В
языке
программирования
Delphi
облегчает
работу
оператор
Edit1.SetFocus; С помощью этого оператора поле Edit1 получает фокус ввода,
т.е. связывает указанный компонент с клавиатурой.
Одной
из
разновидностью
кнопок
служит
BitBtn
–
кнопка
с
изображением. Она находится во вкладке Additional. Свойство Kind для такой
кнопки определит одну из 11 стандартных разновидностей кнопки. Если у
кнопки был изменен рисунок (свойство Glyph), Delphi автоматически
присваивает свойству Kind кнопки значение bkCustom.
Лабораторная работа №3. MainMenu - главное меню формы
Компонент класса TMainMenu определяет главное меню формы
(программы).
1. Установите компонент на форму
2. Создайте пункты меню. Для этого следует дважды щелкнуть по
компоненту мышью.
Меню обладает свойством Caption, в котором можно задать его имя.
Каждый пункт меню может раскрываться в подменю или являться конечной
командой. Для создания подпунктов:
3. Щелкните мышью ниже пункта меню и введите имя первого пункта
подменю.
В названиях пунктов можно указать символ амперсанда (&) перед тем
символом, который определит клавишу быстрого вызова.
Для вставки разделительной черты, определяющей пункты меню, нужно
ввести в качестве имени очередного пункта меню дефис (-).
В Delphi имеется возможность связывать с пунктами меню небольшие
изображения. Эти изображения можно задать либо свойством BitMap, либо
свойством ImageIndex. Изображение (если оно есть) появляется слева от
пункта меню.
Задание для самостоятельной работы: создать проект для работы с
компонентом класса TMainMenu (см рис.). Все пункты меню должны быть
рабочими.
Проверочная работа №2. Работа с компонентами.
Вариант №1.
1. Что такое компонент?
____________________________________________________________
____________________________________________________________
2. Охарактеризуйте данные компоненты и перечислите их основные
свойства.
Button1
__________________________________________________________
Edit1
__________________________________________________________
Form1
__________________________________________________________
Вариант №2*.
1. Из чего состоит окно инспектора объектов?
____________________________________________________________
____________________________________________________________
2. Охарактеризуйте данные компоненты и перечислите их основные
свойства.
Label1
___________________________________________________________
Memo1 ___________________________________________________________
BitBtn1 ___________________________________________________________
Арифметические операции в ООП
В объектно-ориентированном программировании можно выполнять
любые арифметические действия. Для этого необходимо использовать не
числа, как в математике, а переменные – символы, которые будут обозначать
цифры в общем виде. Существуют специальные знаки, позволяющие
записывать арифметические действия:
1. := - присваивание (А:=В).
2. операции языка: + - сложение (А:=В+С)
* - умножение
− - вычитание
/ - деление
3. знаки операций отношения: <, >, =, <=, >=, <>
4. {..} или // - комментарии, то есть необязательный текст в окне
программного кода, который служит для пояснения и не влияет на
выполнение задачи.
5. ; - символ для разделения инструкций языка (операторов)
Для решения арифметических задач необходимо описывать все
используемые переменные:
Var a, b, c, dude: integer; //целые числа
x, y, z, max: real;
// вещественные числа
Т.е. пример a+b=c мы будем решать следующим образом:
1. Заведем 3 переменные a, b, c.
2. Запись c:=a+b будет означать, что результат суммы двух чисел,
лежащих в ячейках a и b будет записан в переменную с. В языке
программирования Delphi запись с=а+b будет означать, что сумма чисел а и
b равна с.
Теперь, если нам необходимо решить пример 2+4=6, при запуске
программы мы в переменную a положим 2, в b – 4 и программа выдаст
ответ 6.
Для
решения
примеров
мы
будем
использовать
функции
IntToStr (<переменная>) (перевод числа из целого в строчный тип) и
StrToInt (<переменная>) (перевод из строкового в целый тип). Это
необходимо в связи с тем, что при вводе числа в строку Edit оно становится
строкового типа, а со строками нельзя выполнить арифметических операций.
Для вычисления необходимо преобразовывать тип из строкового в целый, а
для вывода результата нужно обратно переводить из целого в строчный тип.
Однако если ответ задачи лежит в переменной вещественного типа, то
для вывода его в строчном поле классов TEdit или TMemo необходимо
использовать функцию FloatToStr(<переменная>).
Лабораторная работа № 4
Решим простейший пример: найти сумму трех чисел.
1. Описываем после служебного слова VAR несколько переменных
целого типа для удобства решения: Var a, b, c, s: integer;
2. На форму заводим 3 метки: Label1, Label2, Label3. У каждой из них в
свойстве Caption написать соответственно а=, в=, с=.
3. Наносим однострочные элементы управления Edit1, Edit2, Edit3. В
них будем вводить числа. Для этого в свойстве Text нужно удалить надписи.
4. Заводим кнопку, которую называем Cумма
5. Наносим элемент управления
Memo1 и удаляем все надписи в
многострочном редакторе. Для этого в окне Свойства объекта выбираем
свойство Lines и удаляем все надписи в нем.
Примерно ваша форма должна выглядеть так:
6. Активируем двойным щелчком мыши кнопку. Появляется процедура
TForm1.Button1Click(Sender: TObject);
7. В теле процедуры присваиваем заведенным переменным значения
строк следующим образом a:=StrToInt(Edit1.text); (аналогично для b и c)
8. Вычисляем сумму s:=a+b+c;
9. Выводим
результат
Memo1.Text:=IntToStr(s);
в
Memo1.
Для
этого
записываем
Продумать свое графическое оформление этой задачи.
Задания для самостоятельной работы:
1. Вычислить произведение четырех чисел. Графическое оформление
задачи самостоятельное.
2. Решить
пример
a=b+c/m*k.
Графическое
оформление
задачи
самостоятельное.
Лабораторная работа №5. Алгоритм решения математический
задачи на языке.
Алгоритм решения задачи имеет 3 основные части:
1. ввод данных
Например:
a:=StrToInt(Memo1.text); // занести в переменную а содержимое
многострочного редактора Memo1, переведенное из строкового в числовую
форму для выполнения математических действий.
b:=StrToInt(Edit1.text);
//
занести
в
переменную
b
содержимое
однострочного редактора Edit1, переведенное из строкового в числовую
форму для выполнения математических действий.
2. проведение определенных действий, требуемых в условии задачи.
3. вывод результата или сообщения о проведенном анализе данных.
Вывод результата: c:=a+b; // ответ с
Memo1.text:=IntToStr(c); // вывод результата решения примера в
многострочный редактор Memo1 путем перевода ответа из числовой в
строковую форму.
Вывод сообщения: Edit1.text:=’Задача решена успешно!’; // вывод
сообщения о проведенном анализе данных в многострочный редактор Edit1.
Перевод
сообщения
из
числовой
в
строковую
форму
НЕ
ОСУЩЕСТВЛЯЕТСЯ!
Стандартные арифметические функции
abs(x)
Модуль х
cos(x)
Косинус х
exp(x)
Экспонента
frac(x)
Дробная часть от х
int(x)
Целая часть от х
random
псевдослучайное
число [0,1)
random(x)
псевдослучайное
число [0,x)
sin(x)
Синус х
sqr(x)
квадрат х
sqrt(x)
корень квадратный
Возведение в степень: xy = exp(y*ln(x))
Для работы с арифметическими функциями необходимо выполнять
простое правило:
1. Для вывода значения функции х2 нужно описать две переменные x и y
целого типа.
2. Ввести х с клавиатуры. Например, x:=StrToInt(Edit1.Text);
3. В программе y:=sqr(x);
4. Вывести значение у. Например, Memo1.Text:=IntToStr(y);
Лабораторная работа № 6
Для работы с арифметическими функциями необходимо выполнять
простое правило:
1. Для вывода значения функции х2 нужно описать две переменные x и y
целого типа.
2. Ввести х с клавиатуры. Например, x:=StrToInt(Edit1.Text);
3. В программе y:=sqr(x);
4. Вывести значение у. Например, Memo1.Text:=IntToStr(y);
Задания для самостоятельной работы:
1.
2
y 
2.
a 
b  d 


 r
x  cos ( a) 
sin ( b )
c
d
3. Дано число. Вывести на экран его целую и дробную части.
4. Даны числа a, b, c. Возвести в третью степень a, в квадрат произведения b
на с и найти модуль суммы этих чисел.
Флажки (CheckBox) и переключатели (RadioButton). Условный
оператор
Флажки
в
среде
программирования
используются
для
выбора
собственного решения (да/нет или да/нет/не уверен). В последнем случае
флажок устанавливается, но выглядит блекло. Это решение отражается в
свойстве State компонента, доступном как для чтения, так и для записи. State
может быть 3 типов:
 Установлен (Checked)
 Не установлен (Unchecked)
 Не уверен (Alignment)
Переключатели предназначены для выбора одного из нескольких
взаимоисключающих решений. На форме помещаются, по меньшей мере, два
таких компонента. Они могут иметь только два состояния, определяемых
свойством Checked.
Условный оператор позволяет проверить некоторое условие и в
зависимости от результатов проверки выполнить то или иное действие. То
есть Условный оператор - средство ветвления вычислительного процесса.
Структура условного оператора в общем виде:
IF <УСЛОВИЕ> THEN <ОПЕРАТОР №1> ELSE <ОП.2>;
где IF, THEN, ELSE - ЗАРЕЗЕРВИРОВАННЫЕ СЛОВА (если, то, иначе)
<условие> - произвольное выражение логического типа,
<операторы> - любые операторы, т.е. действия.
Далее можно разъяснить алгоритм работы условного оператора:
1. Вычисляется <условие>.
2. Если оно TRUE (истина), то выполняется оператор 1, а оператор 2
пропускается.
3. Если результат - FALSE (ложь), наоборот <оп.1> пропускается, а
выполняется <оп.2>.
Рассмотрим структуру неполного ветвления. Запишем ее в общем виде:
IF <УСЛОВИЕ> THEN <ОПЕРАТОР>;
Условный
оператор
может
быть
использован
для
решения
математических задач. Для облегчения работы с оператором на начальном
этапе работы с ним, рассмотрим таблицу:
<Условие>
<Оператор>
a>0
k:=0; k:=k+1: //количество
a<0
s:=0; s:=s+a; //сумма
(a mod 2=0) а нацело
p:=1; p:=p*a; //произведение
делится на 2, а четное
…
…
В структуру условного оператора
IF <УСЛОВИЕ> THEN <ОПЕРАТОР №1> ELSE <ОП.2>;
вместо <УСЛОВИЕ> и <ОПЕРАТОР> вставляем нужные поля таблицы.
В предлагаемые столбцы, можно вводить какие угодно условия и операторы,
необходимые для решения задачи.
Запомним основные правила для работы с условным оператором:
перед else ; никогда не ставится;
если необходимо использовать составное условие, то каждое подусловие
записывается в скобках через логические операции «и» (and) или «или» (or).
Например: Даны числа x, y, z. Найти количество чисел, которые больше
5 и меньше 10.
Var x, y, z, k : integer;
Обработаем событийную процедуру:
{раздел ввода данных}
x := StrToInt(Edit1.Text);
y := StrToInt(Edit2.Text);
z := StrToInt(Edit3.Text);
k := 0;
{раздел основного алгоритма}
if (x>5) and (x<10) then k := k+1;
if (y>5) and (y<10) then k := k+1;
if (z>5) and (z<10) then k := k+1;
{раздел вывода результата}
Memo1.Text := IntToStr(k);
Если на одной из ветвей находятся несколько операторов необходимо
использовать операторные скобки begin … end.
Например: Увеличить значение t и m на единицу, если k – четное и
уменьшить в обратном случае.
Var t, m, k : integer;
Рассмотрим алгоритм записи условия:
… if (k mod 2 = 0) then
Begin
t := t+1; m := m+1;
end // перед else ; не ставится!!!
else
Begin
t := t-1; m := m-1;
end; …
Другая форма записи увеличения на единицу числа: inc(<число>);
для уменьшения - pred(<число>); тогда решение представленного выше
примера может быть записано следующим образом:
… if (k mod 2 = 0) then
Begin
inc (t); inc (m);
end
else
Begin
pred(t); pred (m); end; …
Лабораторная работа №7
Флажки. При активизации двойным щелчком мыши CheckBox1
появится процедура TForm1.CheckBox1Click(Sender: TObject);
Задача: При установке флажка текст в Метке1 должен становиться
жирным.
Procedure TForm1.CheckBox1Click(Sender: TObject);
begin
if checkbox1.Checked=true
then Label1.font.Style:=font.style+[fsbold]
else Label1.font.Style:=font.style-[fsbold]
end;
То есть, если (if) флажок установлен, (then) текст в Метке1 должен
становиться жирным, (else) а при повторном нажатии на флажок – обычным.
Рассмотрим применение таблицы для первого случая, когда необходимо
текст в многострочном редакторе сделать жирным при установке флажка и
обычным при повторном нажатии.
<Условие>
CheckBox1.checked
<Оператор>
Memo1.Font.Style:=Memo1.Font.Style+[fs
Bold]
Memo1.Font.Style:=Memo1.Font.Style[fsBold]
Вставив условия и операторы в шаблон получим:
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
if CheckBox1.checked then
Memo1.Font.Style:=Memo1.Font.Style+[fsBold]
else
Memo1.Font.Style:=Memo1.Font.Style-[fsBold]
end;
Переключатели. Задача: При установке переключателей текст в Метке1
должен становиться желтым либо красным.
procedure TForm1.RadioButton1Click(Sender: TObject);
begin
if RadioButton1.Checked=true then Label1.Font.Color:=clyellow
end;
procedure TForm1.RadioButton2Click(Sender: TObject);
begin
if RadioButton2.Checked=true then Label1.font.Color:=clred
end;
Задания для самостоятельной работы:
1. Создать
простейший
текстовый
процессор,
содержащий
переключатели цвета шрифта, флажки для определения стиля.
2. Вычислить наибольшее (max) из двух введенных чисел а и b.
3. Вычислить наименьшее (min) из трех чисел a, b, c.
4. Даны числа x, y, z. Найти количество чисел больших нуля.
5. Даны числа x, y, z. Найти сумму чисел меньших нуля и произведение
чисел больших нуля.
6. Даны числа a, b, c. Вычислить модуль чисел меньших нуля, квадрат
чисел не равных нулю и корень из чисел больших нуля.
7. Найти значение выражения z=3x-4, 0<x<=1и z=|x-x2|, 1<x<=10
8. s=max(x,y), x<0 s=min(x,y), x>=0
9. Известно, что из четырех чисел а1, а2, а3, а4 одно отлично от трех
других, равных между собой. Вывести это число.
10.Даны два действительных числа x и y,
не равные друг другу.
Меньшее из этих чисел заменить половиной их суммы.
Придумать и решить несколько задач по данной теме.
Проверочная работа №3. Условный оператор.
Вариант №1.
1. Для чего необходим условный оператор?
________________________________________________________________
________________________________________________________________
2. Переведите на язык программирования следующие высказывания
a. Если a больше b тогда c присвоить 1.
___________________________________________________________
b. Если a равно 5 тогда c присвоить b, иначе c присвоить b2.
___________________________________________________________
___________________________________________________________
c. Если a меньше 0 тогда b присвоить 5, c присвоить 10, иначе c
присвоить 5 и d присвоить b.
___________________________________________________________
___________________________________________________________
d. Если 1>a>3 тогда c присвоить модуль a иначе c присвоить
корень квадратный из b.
___________________________________________________________
___________________________________________________________
3. Напишите алгоритм нахождения наибольшего из 2 чисел.
________________________________________________________________
________________________________________________________________
4. Напишите алгоритм нахождения суммы положительных чисел из
a, b, c.
________________________________________________________________
________________________________________________________________
________________________________________________________________
5. Как ввести целое число в однострочное поле?
a. a:=IntToStr(Edit1.text);
b. a:=StrToInt(Memo1.text);
c. a:=IntToStr(Memo1);
d. a:=StrToInt(Edit1.text);
6. Выберите синтаксически правильную запись (может быть несколько
вариантов ответа)
a. If a>b then c:=d; else c:=b;
b. If a>b then c:=5 and d:=7;
c. If a>b then c:=5+s;
d. If a<10 then c:=1 else c:=0;
e. If a=1 and b=6 then k:=k+1;
f. If (a=5) or (b=5) then c:=5;
g. If a≠10 then s:=s+b;
h. If a≥1 then
begin
c:=4; b:=4;
else
c:=5; b:=5;
end;
i. if a>0 then
begin
c:=1; d:=1;
end else k:=1;
Вариант №2*.
a. Приведите формат записи условного оператора (общий вид).
________________________________________________________
2. Переведите на язык программирования следующие высказывания
a. Если a равно b тогда c присвоить их сумму.
___________________________________________________________
b. Если a не равно b тогда c присвоить квадрат a иначе c присвоить
корень квадратный из b.
___________________________________________________________
c. Если a меньше 10 тогда b присвоить модуль d, c присвоить
квадрат a иначе c присвоить корень квадратный из b и d
присвоить сумму a и b.
___________________________________________________________
___________________________________________________________
d. Если 1>a>10 тогда c присвоить верхнюю границу интервала
иначе c присвоить нижнюю границу интервала.
___________________________________________________________
3. Напишите алгоритм нахождения наименьшего из 3 чисел.
________________________________________________________________
________________________________________________________________
4. Напишите алгоритм нахождения количество положительных чисел и
произведение отрицательных из x, y, z.
________________________________________________________________
________________________________________________________________
________________________________________________________________
5. Как вывести вещественное число в многострочное поле?
a. Memo1.Text:=IntToStr(a);
b. Edit1.Text:=StrToInt(a);
c. Memo1:=a;
d. Memo1.Text:=FloatToInt(a);
e. Memo1.Text:=FloatToStr(a);
f. Edit1.Text:=StrToFloat(a);
6. Выберите синтаксически правильную запись (может быть несколько
вариантов ответа)
a. If x>y then c:=2; else c:=5;
b. If a>b then z:=2 and z:=2;
c. If a>1 then c:=sqr(s);
d. If a<=10 then c:=10 else c:=0;
e. If (a=1) and (b=6) then k:=k+1; z:=2; else k:=1; z:=z+2;
f. If (a=5) or (b=5) then c:=5;
g. If a≠10 then s:=sqrt(w);
h. If a≥1 then
begin c:=4; b:=4; end;
else c:=5; b:=5; end;
i. if a>0 then
begin c:=1; d:=1; end
else begin k:=1; z:=1 end;
Оператор варианта
Оператор варианта Case является обобщением оператора if и позволяет
сделать выбор из произвольного числа вариантов.
Он состоит из выражения, называемого селектором, и списка
параметров, каждому из которых предшествует список констант выбора
(список может состоять из одной константы). Как и в операторе if, здесь
может присутствовать else, имеющее тот же смысл.
Формат:
Case <выражение-селектор> of
<список 1>: <оператор 1>;
<список 2>: <оператор 2>;
…
<список N>: <оператор N>
else <оператор>
end;
Селектор может иметь любой скалярный тип, кроме вещественного.
Использование строкового типа в качестве селектора запрещено. Список
констант выбора может состоять из произвольного количества значений или
диапазонов, отделенных друг от друга запятыми.
Тип констант в любом случае должен совпадать с типом селектора.
Рассмотрим примеры:
1. селектор интервального типа.
Case i of
1..10: Memo1.Lines.Add (‘число’, I:4, ‘в диапазоне 1-10’);
11..20: Memo1.Lines.Add (‘число’, I:4, ‘в диапазоне 11-20’);
21..30: Memo1.Lines.Add (‘число’, I:4, ‘в диапазоне 21-30’)
else Memo1.Lines.Add (‘число’, I:4, ‘вне пределов контроля’) end;
2. селектор целочисленного типа.
Case I of
1: z:=i+10;
2: z:=i+100;
end;
Лабораторная работа №8
Задача: Написать программу, которая по введенному числу 1..3 выводит
его название.
Опишем переменную Var a: integer;
Для события по щелчку кнопки в теле процедуры напишем:
Begin
a:=(Edit1.text); // ввод числа
case a of
1: Memo1.text:=IntToStr(‘один’);
2: Memo1.text:=IntToStr(‘два’);
3: Memo1.text:=IntToStr(‘три’);
else Memo1.text:=IntToStr(‘Введите число 1, 2 или 3’);
end;
End;
Задания для самостоятельной работы:
1. Составить программу, которая по заданному числу (1-12) выводит
название соответствующего месяца.
2. Написать программу, которая по введенному номеру времени года
выдавала соответствующие этому времени года месяцы и число дней
в каждом месяце.
3. Составить программу, которая для любого натурального числа 1-1000
печатает количество цифр в записи этого числа.
4. Для целого числа k от 1 до 99 напечатать фразу «я прочел k книг»,
согласовав окончание слова «книга» с числом k.
Работа со строками в объектно-ориентированном
программировании. Оператор цикла с параметрами
Для языков программирования характерны не только возможности
работы с числовой информацией, но и со строковой. Напомним, что для
работы с числами мы использовали два основных типа данных: Integer
(целый) и Real (вещественный).
Например, var a: integer; b: real;
Для работы со строками необходимо использовать тип данных string (var
s: string). Отличительной чертой этого типа данных является то, что мы
можем обратиться как к строке целиком, так и посимвольно, то есть к каждой
букве в отдельности. Для этого нам необходимо использовать оператор
цикла.
Цикл - многократное повторение последовательности действий по
некоторому условию. Известны три типа циклических алгоритмических
структур, но при работе со строками будем использовать одну из них – цикл
с параметром. Он имеет две формы записи:
For <параметр>:=<нач. значение> to <кон. значение> do <тело
цикла>;
For <параметр>:=<кон. значение> downto <нач. значение> do <тело
цикла>;
Цикл повторяется пока значение параметра лежит в интервале между
начальным и конечным значениями параметра. Причем эти выражения
(начального и конечного значение) вычисляются только один раз в начале
выполнения цикла. Параметр обязательно должен быть целого типа.
В первом варианте при каждом повторении цикла значения параметра
изменяется на следующее значение в данном типе (для целого типа увеличивается на 1). Понятие шаг. Во втором варианте при каждом
повторении цикла значение параметра изменяется на предыдущее значение
параметра (для целого типа - уменьшается на единицу).
При работе со строкой запишем оператор цикла следующим образом: for
i:=1 to length(s) do (обращение к символам от первого до последнего в строке
s). Кроме того, используются следующие процедуры и функции:
1. Функция length (s) определяет длину строки. Результат - целое число
0..255
Пример: дана строка, подсчитать количество цифр в строке.
var s: string; k: integer;
k:=length(s);
2. Процедура Delete (s,pos,n) - удаление части строки. Удаляет из строки s
n-символов начиная с символа № pos.
Пример: s:='рогатка'; Delete(s,5,3) => рога
3. Процедура Insert (s1,s2,pos). Вставка части строки.
S1-что, S2-куда, Pos-с какой позиции
Пример: S1:='свет'; Insert(s1,'o',2) => 'совет'
4. Функция Copy (s,pos,n) - возвращает часть строки s длиной n, начиная с
позиции pos.
Пример: S:='пароход'; t:=copy(s,1,3) => 'пар'
5. Сцепление строк - функция Concat (s1,s2,s3,…,sn)
Пример: Concat ('к','о','т') => 'кот'
6. Функция Pos (s1,s2) - поиск одной строки в другой. Возвращает номер
символа, начиная с которого строка s1 является частью s2.
Пример: pos ('cd','abcdf') => 3
Лабораторная работа №9
Рассмотрим алгоритм решения задачи, в которой нужно подсчитать
количество вхождений символа «а» в строку. Используем компоненты
классов TEdit и TMemo для ввода строки и вывода результата.
Var s: string;
i, k: integer;
Procedure TForm1.Button1Click(Sender: TObject);
Begin
s:=edit1.text; //ввод строки
For i:=1 to length(s) do //идем по строке
If s[i]=’a’ then k:=k+1; {если i-ый символ а, тогда увеличивай
счетчик k}
Memo1.text:=IntToStr(k) //вывод результата
End;
Пусть форма будет выглядеть следующим образом:
Задания для самостоятельной работы:
1. Дана строка s: Найти количество вхождений букв a,c,d в строку.
2. Найти количество цифр в строке.
3. Сцепить несколько строк в одну.
4. Из данной строки выбрать цифры и сформировать из них новую
строку.
5. Найти количество слов, начинающихся на букву с.
6. Подсчитать количество слов в строке.
7. Определить начинается и заканчивается ли слово одной буквой.
8. Удалить каждую четную букву в строке.
9. Проверить одинаковое ли число открытых и закрытых скобок в
строке.
10. По введенным: фамилии, имени, отчеству выводить информацию о
том, является ли пользователь автором программы, его теской или
являются ли теской отец автора и пользователя программы.
Программирование циклических алгоритмов. Циклы «до» и «пока»
Как уже говорилось, известны три типа циклических алгоритмических
структур. Была рассмотрена только одна из них – цикл с параметром.
Поговорим об остальных:
- цикл с предусловием
- цикл с постусловием
Существуют операторы для их реализации.
1. Цикл с предусловием (цикл-«пока») - наиболее универсальная
циклическая структура. Реализуется оператором While. Формат оператора:
While <логическое выражение> do <тело цикла>
Пока значение логического выражения истинно (true), выполняется тело
цикла, тело может быть простым или составным оператором.
2. Цикл с постусловием (цикл-«до») имеет формат
Repeat < тело цикла > until < логическое выражение >
Повторяется выполнение тело цикла. Цикл заканчивается, когда
логическое выражение становится истинным. Тело цикла с постусловием
выполняется хотя бы один раз. Использование операторных скобок для
ограничения тела цикла не требуется.
Для гибкого управления циклическими операторами используют
следующие процедуры:
Break – реализует немедленный выход из цикла
Continue – обеспечивает досрочное завершение очередного прохода цикла.
Лабораторная работа №10
Задача: Вывести 5 одинаковых надписей: «Программа цикла»
Для вывода повторяющегося действия нам понадобиться описать
переменную i целого типа, обработать события OnClick для кнопки Button1.
В теле процедуры необходимо описать нижеследующий метод:
procedure TForm1.Button1Click(Sender: TObject);
begin
for i:=1 to 5 do
Memo1.Lines.Add('Программа цикла')
end;
Рассмотрим
пример
решения
задачи:
найти
сумму
ряда
s=1+1/2+1/3+…+1/k.
Для задачи наиболее оптимальным алгоритмом решения будет цикл. Для
того чтобы выделить повторяющие части запишем ряд следующим образом:
s=1/1+1/2+1/3+…+1/k.
Заметим, что числители постоянен и равен 1. Знаменатели постоянно
увеличиваются на 1 в интервале от 1 до k. Таким образом, общий вид
элемента ряда = 1/i, где i – изменяющийся знаменатель. Следовательно,
запишем метод решения задачи:
Var k,i: integer; s: real;
Begin
k:=StrToInt(Edit1.Text); s:=0;
For i:=1 to k do s:=s+1/i; {i пробегает все значения знаменателя от 1
до k (1, 2, 3, …, k) изначально s=0, при k=1 s=0+1/1, s становится равным 1;
при k=2 s=1+1/2, s становится равным 1,5 и т.д.}
Memo1.Text:=FloatToStr(s);
End;
Задания для самостоятельной работы:
1. Вывести
таблицу
умножения
на
любое
число,
введенное
с
клавиатуры.
2. Вывести таблицу значений функции y=sin(x) в интервале 0..1
3. Вывести 4 надписи: «На окне сидело n кошек», 1n4.
4. В интервале [0,20] подсчитать количество четных чисел и чисел,
которые делятся на 3.
5. Вычислить сумму натурального ряда чисел от 1 до n.
6. Вычислить сумму чисел s=1/(p+2)+2(p+2)+3/(p+2)+…+p/(p+2).
7. Вычислить произведение чисел кратных 5 ряда от 1 до n.
8*. Вычислить сумму чисел s=(1+3+5+…+2*n-1)3-(2+4+6+…+2*n)2.
9*. Составить программу для проверки утверждения: «Результатами
вычислений по формуле х2+х+17 при 0≤х≤15 являются простые числа». Все
результаты вывести на экран (простое число – число которое делится только
на себя и на единицу).
10*. Покупатель должен заплатить в кассу s рублей. У него имеются 1,
2, 5, 10, 50, 100, 500, 1000-рублевые купюры. Сколько купюр разного
достоинства отдаст покупатель, если он начнет платить с самых крупных?
(использовать процедуру Continue).
11*. Написать программу, которая запрашивает исходные данные и
производит над ними выбранное пользователем действие. Выбор действий
осуществляется с помощью меню. Исходные данные – числа a и b. Меню
действий:
1. – сложить
2. – умножить
3. – вычесть
4. – разделить
5. – выход
Результат выводить после каждого действия
Проверочная работа №4. Строки. Циклы
Вариант №1.
1. Опишите строку s.
________________________________________________________________
2. Напишите программу для проверки количества вхождений в строку
буквы v.
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
3. Опишите структуру цикла «до» в «общем» виде
________________________________________________________________
4. Переведите на язык программирования следующие высказывания
a. Цикл от 1 до 10.
___________________________________________________________
b. Сообщение «Привет» выводится пока a<5
___________________________________________________________
___________________________________________________________
c. Пока m>10 увеличиваем количество a и b на 2 и 3
соответственно.
___________________________________________________________
___________________________________________________________
___________________________________________________________
5. Выберите синтаксически правильную запись (может быть несколько
вариантов ответа)
a. For i:=1 to n do a:=a+1;
b. For i=1 to 5 do a:=a+1;
c. For i:=1 to 10 do a:=a+1;
d. For i:=1 to n do a:=a+1; b:=b+a;
e. For i:=1 to n do begin a:=a+1; c:=c+1; end;
f. While a>0 do m:=m+1;
g. While c≠10 do begin a:=1; b:=2; end;
h. Repeat a>0 until b:=b-1;
i. Repeat b:=b-1 until a>0;
j. While b:=b+2 do m>0;
k. Repeat b=10 do k:=k-2; end;
l. While a>0 until b:=b-1;
m. Repeat b:=b-1; n:=n+2 until a>0;
Вариант №2*.
1. Опишите строку s, максимальная длина которой 10.
________________________________________________________________
2. Напишите программу для проверки количества вхождений в строку
буквы символов +, -, ), (.
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
3. Опишите структуру цикла «пока» в «общем» виде
________________________________________________________________
4. Переведите на язык программирования следующие высказывания
a. Цикл с параметром от 1 до 20.
___________________________________________________________
b. Сообщение «Добрый день» выводится 5 раз.
___________________________________________________________
___________________________________________________________
c. Увеличиваем a на единицу и выводим текущее значение на экран
до тех пор, пока m≠10
___________________________________________________________
___________________________________________________________
___________________________________________________________
5. Выберите синтаксически правильную запись (может быть несколько
вариантов ответа) и исправьте неправильные
a. For j:=1 to n do a:=a+1;
________________________________________________________
b. For j=1 to 5 do a:=a+1; m:=18*a;
________________________________________________________
c. For i:=1 to n do begin a:=a+1; b:=b+a; end;
________________________________________________________
d. For i:=1 to n do begin a:=a+1; c:=c+1 end;
________________________________________________________
e. While a>0 do m:=m+1; n:=n*a2
________________________________________________________
f. While c<10 do begin a:=1; b:=2; end;
________________________________________________________
g. Repeat a>0 until begin b:=b-1; c:=c+2; end;
________________________________________________________
h. Repeat b:=b-1; n:=n+2; until a>0;
_______________________________________________________
i. While begin b:=b+2; v:=v+4; end; do m>0;
________________________________________________________
j. Repeat begin b=10 do k:=k-2; end;
________________________________________________________
k. Repeat b:=b-1; n:=n+2; k:=k+10 until a>0;
________________________________________________________
Рассмотрение дополнительных компонентов для
ввода/вывода строк
Для ввода и вывода информации в объектно-ориентированном
программировании существует целый ряд вариантов. В библиотеке
визуальных компонентов Delphi существует множество компонентов,
позволяющих отображать, вводить и редактировать текстовую информацию.
Нами уже были рассмотрены Label (метка), Edit (однострочное поле) и Memo
(многострочное
поле).
компонентов
краткими
с
В
таблице
приведен
характеристиками
перечень
и
оставшихся
указанием
основных
параметров, содержащих отображаемый или вводимый текст.
Пикто
грамм
Компонент
Вкладка
Описание
а
Подобен
StaticText
(метка с
Additional
бордюром)
компоненту
но
обеспечивает возможность задания
стиля бордюра. Основное свойство
— Caption.
Компонент
для
Standard
является
контейнером
группирования
управления,
Panel (панель)
Label,
но
органов
может
использоваться и для отображения
текста с возможностями объемного
оформления. Основное свойство —
Caption.
MaskEdit
(окно
маскированног
о
редактировани
я)
Используется для форматирования
Additional
данных или для ввода символов в
соответствии с шаблоном. Основные
свойства — Text и EditText.
RichEdit
Компонент представляет собой окно
(многострочно
е окно
редактировани
редактирования
Win32
производить
выбор
другое. Основное свойство — Lines.
RTF)
Отображение
(окно списка)
атрибутов
шрифта, поиск текста и многое
я в формате
ListBox
позволяющее
Standard
списка
стандартного
Windows,
пользователю
окна
позволяющего
выбирать
из
него
пункты. Основное свойство — Items.
Компонент
CheckListBox
(список с
Additional
индикаторами)
списка
индикаторов
комбинацией
ListBox
CheckBox
в
и
одном
компоненте.
Объединяет функции ListBox и Edit.
ComboBox
(редактируемы
свойств
является
Standard
й список)
Пользователь может либо ввести
текст, либо выбрать его из списка.
Основное свойство — Items.
Оператор присоединения (With)
Оператор используется для сокращения записи кода программы при
обращениях к свойствам объекта. Он позволяет избегать повторных ссылок
на объект в последующих операторах.
Структура:
With <объект> Do <оператор>;
Например, группу операторов
Form1.label1.left := form1.label1.left + 10;
Form1.label1.caption :=label2.caption;
Form1.label1.font.color := clred;
С помощью with можно записать короче:
With form1.label1 do
Begin
left := left + 10;
caption :=label2.caption;
font.color := clred;
end;
Графические компоненты
TImage – изображение
Данный компонент служит для размещения на форме одного из трех
поддерживаемых Delphi типов изображений: растрового рисунка (*.bmp),
значка (*.ico) или метафайла (*.wmf, *.emf). С помощью свойства Canvas
программа может отредактировать растровое изображение (но не метафайл
или значок!)
Свойства компонента:
Свойство
Описание
AutoSize
Разрешает/запрещает изменять размеры компонента
так, чтобы в них полностью загрузилось изображение
Canvas
Для прорисовки изображения
Center
Указывает, надо ли центрировать изображение в
границах компонента
Picture
Контейнер изображения
Stretch
Разрешает/запрещает изменять размеры изображения
так, чтобы оно целиком заполнило клиентскую область
компонента
Разрешает/запрещает накладывать собственный фон
Transparent
изображения на фон компонента
TShape – стандартная фигура
Компонент рисует одну из простейших геометрических фигур:
stCircle – окружность
stRounrSaustre – квадрат с закругленными сторонами
stSquare – квадрат
stEllipse – эллипс
stRectangle – прямоугольник
stRoundRect – прямоугольник с закругленными сторонами
Фигура полностью занимает все пространство компонента. Помимо
стандартных графических инструментов Brush и Pen, в компоненте
определено свойство Shape, задающий вид фигуры. Изменение этого
свойства приводит к немедленной перерисовке изображения
TPaintBox – окно для рисования
Для создания изображения в компоненте класса TPaintBox используется
свойство канва (Canvas), графические инструменты – в свойствах Font, Pen,
Brush. Рисование осуществляется в обработчике события OnPaint.
Лабораторная работа №11
Создадим несложную программу просмотра изображений:
1. Поместите на форму панель TPanel, очистите ее свойство Caption.
2. Разместите на панели кнопку TButton с надписью Загрузить.
3. На любое свободное место формы (над панелью) поместите компонент
TImage и установите в его свойство Align значение alClient.
4. На любое место поместите компонент TOpenPictureDialog (вкладка
Dialogs) – с его помощью пользователь программы может разыскать нужный
файл с изображением.
5. Для кнопки напишите обработчик события OnClick:
Begin
If OpenPictureDialog1.Execute then
Begin
Image1.Picture.LoadFormFile(OpenPictureDialog1.FileName);
Image1.Stretch := True {масштабирует изображение, чтобы оно
занимало всю рабочую область}
End;
End;
Для того чтобы нарисовать нижеследующий рисунок в окне PaintBox
необходимо растянуть данный компонент по форме, форму развернуть на
весь экран и написать представленный код.
procedure TForm1.PaintBox1Paint (Sender: TObject);
var x, y: integer;
begin
with paintbox1.Canvas do
begin
brush.Color:=clred; ellipse(0,0,620,420); font.Name:='arial';
font.Size:=height div 5; font.Style:=[fsbold,fsitalic];
font.Color:=clwhite;
x:=(620 - textwidth('Delphi')) div 2; y:=(420 - textheight('D')) div 2;
textOut(x,y,'Delphi')
end; end;
Задания для самостоятельной работы:
1. По введенным координатам точки А(a1,a2) вывести координатную
четверть с ПДСК.
2. Нарисовать домики пейзаж около него.
3. По введенному числу лепестков вывести значение гадания по ромашке
«любит» или «не любит».
Работа с таблицами
TStringGrid – текстовая таблица
Компонент TScrollBar предназначен для создания таблиц, в ячейках
которых располагаются произвольные текстовые строки. Таблица делится на
две части – фиксированную и рабочую. Фиксированная часть служит для
показа заголовков колонок и рядов, а так же для ручного управления их
размерами. Обычно фиксированная часть занимает левую колонку и верхний
ряд таблицы, однако с помощью свойств FixedCols и FixedRows можно задать
другое количество фиксированных колонок и рядов.
Рабочая часть – это остальная часть таблицы. Она может содержать
произвольное количество колонок и рядов, более того, эти величины могут
изменяться программно. Если рабочая часть таблицы не помещается целиком
на экране, то автоматически появляется полоса прокрутки.
Свойства компонента:
Свойство
Описание
BorderStyle
Определяет рамку компонента: bsNone – нет рамки,
bsSingle – рамка толщиной 1 пиксел
Cells[col,row]
Определяет содержимое ячейки с табличными
координатами (col,row)
Col
Содержит номер колонки с ячейкой, имеющей
фокус ввода
ColCount
Содержит количество колонок таблицы
ColWidths
Содержит ширину колонки с индексом Index
EditorMode
Разрешает/запрещает
редактирование
ячеек.
Игнорируется, если свойство Options включает значение
goAlwayseShowEditor
или
не
включает
значение
goEditing
FixedColor
Определяет цвет фиксированной зоны
FixedCols
Определяет количество колонок фиксированной
зоны
FixedRows
Определяет количество рядов фиксированной зоны
GridHeight
Содержит значение высоты таблицы
GridLineWidth
Определяет
ширину
линий,
расчерчивающих
таблицу
GridWidth
Содержит значение ширины таблицы
Row
Содержит номер ряда ячейки, имеющий фокус ввода
RowCount
Содержит количество рядов таблицы
RowHeights
Содержит значение высоты ряда с индексом Index
Rows
Содержит все текстовые строки ряда с индексом
Index
ScrollBars
Определяет полосы прокрутки: ssNone – нет полос;
ssHorizontal – в таблицу вставляется горизонтальная
полоса; ssVertical – вставляется вертикальная полоса;
ssBoth – вставляются обе полосы.
Лабораторная работа №12
Для обращения к ячейке [0,0] нужно использовать свойство Cells:
StringGrid1.Cells[0,0]:=IntToStr(5)
1. Проиллюстрируйте возможности рассмотренного компонента, составив
таблицу следующего вида:
Дисциплина
ФИО педагога
1
Математика
Иванов И.И.
2
Русский язык
Петров П.П.
3
…
…
.
.
.
2. Составить таблицу 4х4, состоящую из целых чисел. Программа должна
выводить число, лежащее в ячейке с введенным с клавиатуры номером
столбца и строки.
3. Составить таблицу, выводящую расписание занятий в школе.
Массивы
Массив – упорядоченный набор однотипных значений – компонент
массива. Тип компонент называется базовым типом массива.
В Delphi массив рассматривается как переменная структурированного
типа. Массиву присваивается имя, посредством которого можно ссылаться на
него, как на единое целое, так и на любую из его компонент.
Описание массивов
VAR <имя переменной>:ARRAY [<type1, type2,…>] OF <type>;
[<type1, type2,…>] – типы индексов
<type> - базовый тип
Количество типов индексов определяет размерность массива. Тип
индексов может быть любым, кроме Real. Базовым типом может быть любой
тип данных.
Примеры описания массивов
Var a: array[1..10] of integer; - последовательность целых чисел
Var t: array[1..2,1..2] of real; - таблица 2х2.
Var a1: array [‘A’..’Z’] of word;
Обращение к элементам массива
a[1] – первый элемент из массива a.
t[1,2] – элемент из первой строки второго столбца.
Индексы
можно
задавать
либо
конкретными
значениями,
либо
выражениями.
i:=1; a[i] - первый элемент из массива a; a[i+1] – второй элемент
массива а.
В динамических массивах не указывается размерность в описании:
Например, var a: array of integer;
Размерность устанавливается в теле программы: SetLength(a, 10); длинна массива а – 10 элементов.
По массиву проход осуществляется от первого до последнего элемента:
for i := Low(a) to High(a) do где i: integer;
Лабораторная работа №13
Задания для самостоятельной работы:
1. Заполнить линейный массив произвольными числами и вывести его на
экран.
2. Заполнить линейный массив числами, введенными с клавиатуры,
вывести этот массив, увеличить все элементы на 5 и снова вывести
получившийся массив на экран.
3. В линейном массиве найти элементы массива равные 10 и вывести их
индексы.
4. В линейном массиве вывести элементы с четными индексами.
5. В двумерном массиве найти количество четных элементов.
6. В двумерном массиве найти сумму элементов главной диагонали.
7. В двумерном массиве подсчитать произведение наибольших элементов
каждой строки.
8. В динамическом массиве вывести на экран элементы равные своему
индексу.
9. В динамическом массиве найти элементы, удовлетворяющие условию
сумма индексов меньше значения элемента.
10. Вывести массив следующего вида. Размерность произвольная.
1
1
1
1
1
0
0
1
1
0
…
1
1
1
1
1
11. Вывести массив следующего вида. Размерность произвольная.
1
0
0
0
0
2
0
0
0
0
…
0
0
0
0
N
12. Вывести массив следующего вида. Размерность произвольная.
1
2
2
2
3
1
2
2
3
3
…
2
3
3
3
1
Проверочная работа №5. Массивы
Вариант №1.
1. Опишите массив a, состоящий из 10 элементов.
________________________________________________________________
2. Опишите двумерный массив mas, состоящий из 10 строк и 10 столбцов.
________________________________________________________________
3. Опишите динамический массив dmas.
________________________________________________________________
4. Что мы называем a ________________________, i
__________________________ и a[i] ___________________________.
5. Напишите основной алгоритм для нахождения суммы элементов
линейного массива.
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
6. Напишите основной алгоритм для нахождения количества четных
элементов двумерного массива.
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
7. Переведите на язык программирования следующие высказывания
a. Присвоить элементам массива a случайные значения.
___________________________________________________________
b. Найти количество элементов массива mas, меньших 10.
___________________________________________________________
___________________________________________________________
c. Найти сумму элементов массива dmas, кратных 5.
___________________________________________________________
___________________________________________________________
___________________________________________________________
Вариант №2*.
1. Опишите целочисленный массив a, состоящий из N элементов.
________________________________________________________________
2. Опишите двумерный массив mas, состоящий из 5 строк и 10 столбцов.
________________________________________________________________
3. Опишите двумерный динамический массив dmas. Задайте его длину.
________________________________________________________________
4. Как обозначаются верхняя __________________________ и нижняя
__________________ границы динамического массива.
5. Напишите основной алгоритм для нахождения суммы положительных
и произведения отрицательных элементов линейного массива.
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
6. Напишите основной алгоритм для нахождения количества элементов,
удовлетворяющих условию, что сумма индексов равна значению
ячейки двумерного массива.
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
7. Переведите на язык программирования следующие высказывания
a. Присвоить элементам массива a случайные значения в диапазоне
от 10 до 100.
___________________________________________________________
b. Найти количество элементов массива mas, меньших 10 и
больших 0.
___________________________________________________________
___________________________________________________________
c. Найти сумму элементов массива dmas, кратных 3 и 5.
___________________________________________________________
___________________________________________________________
___________________________________________________________
Обработка событий мыши. Регулировка прозрачности формы
Обработчики
событий
OnMouseDown
и
OnMouseUp
определяют
реакцию программы на соответственно нажатие и отпускание кнопки мыши,
OnMouseMove –на перемещение указателя мыши на компоненте.
Два свойства AlphaBlend и AlphaBlendValue впервые были введены в
версии Delphi 6 и позволяют регулировать степень прозрачности окна
формы. Если AlphaBlend = true, то значение свойства AlphaBlendValue задает
степень прозрачности. 0 – окно полностью прозрачно, 255 – совершенно
непрозрачно. Свойства TransparentColorValue и TransparentColor определяют
цвет прозрачности и возможность его использования. Однако указанные
свойства работают только с ОС Windows 2000/XP и выше на процессорах
Pentium с тактовой частотой не ниже 90 МГц и видеокарта компьютера
должна отображать больше 255 цветов.
Процедуры и функции вызова диалоговых окон
Процедура
ShowMessage
(‘<строка>’)
отображающая
окно
с
сообщением и кнопкой ОК. Пример: ShowMessage (‘До свидания!’)
Процедура ShowMessageFmt(‘Задано %d параметров из %d ’, [n1,n2])
Последний оператор при n1=5 и n2=7 выдаст сообщение с текстом: «Задано 5
параметров из 7»
Функции отображают окна, в которых пользователю задается какойлибо вопрос и анализируется полученный ответ.
Функция MessageDlg (<строка>, AType, Abuttons, HelpCtx) отображает
диалоговое окно и ожидает ответ пользователя. Вид отображения окна
задается параметром AType.
Значение
Описание
MtWarning
Окно замечаний
MtError
Окно ошибок
MtInformation
Информационное окно
MtConfirmation
Окно подтверждения
mtCustom
Заказное окно без рисунка
Параметр Abuttons определяет, какие кнопки будут присутствовать в
окне.
Значение
Надпись на кнопке
MbYes
Yes
MbNo
No
MbOk
Ok
MbCancel
Cancel
MbHelp
Help
MbAbort
Abort
MbRetry
Retry
MbIgnore
Ignore
MbAll
All
Определены 3 константы, соответствующие часто используемым
сочетанием кнопок
MbYesNoCancel
Входят кнопки Yes, No, Cancel
mbOkCancel
Входят кнопки Ok, Cancel
mbAbortRetryIgnore
Входят кнопки Abort, Retry,
Ignore
Лабораторная работа №14
Пример: В теле процедуры запишем
Begin
…
if MessageDlg('Yo!',mtWarning,[mbYes, mbNo],0)=mrYes
then close;
end.
Получим:
Задания для самостоятельной работы:
1. Перераспределить значения переменных x и y так, чтобы в х оказалось
большее, а в у – меньшее.
2. Посетитель проиграл в казино a рублей. У него есть фишки 2, 5, 15, 20,
50, 100, 500$. Сколько фишек разного достоинства отдаст игрок, если будет
платить с самых дорогих?
Работа с датой и временем
Тип TDateTime
Var t: TDateTime;
Для обработки даты и времени модуль SysUtils содержит следующие
основные функции:
function Date: TDataTime; - возвращает текущую дату как значение типа
TDateTime.
function DateToStr(Date: TDateTime): string; - преобразовывает дату,
указанную параметром Date, в строку.
function DayOfWeek(Date: TDateTime): Integer; - возвращает номер дня
недели для даты, указанной параметром Date. Для воскресенья возвращается
значение 1, для понедельника - 2 и т. д.
function EncodeDate(Year, Month, Day: Word): TDateTime; - собирает
значение даты из заданных составляющих Year, Month и Day и возвращает
его как значение типа TDateTime.
function DecodeDate(Date: TDateTime): Word; - собирает значение типа
TDateTime и возвращает его как значение типа дата из заданных
составляющих Year, Month и Day.
function Now: TDateTime; - возвращает значение текущей даты и
времени.
function StrToDate(const S; string): TDateTime; - преобразовывает
значение строки, указываемое параметром S, в дату типа TDateTime.
function Time: TDateTime; - возвращает текущее значение времени.
function TimeToStr(Time: TDateTime): string; - преобразовывает время в
строку в соответствии с форматом, определяемым глобальной переменной
LongTimeFormat.
TDateTimePocker – ввод и отобрание даты/времен
Свойства компонента:
Свойство
CalAlign
ment
Описание
Определяет положение раскрывающегося календаря: dtaLeft
– слева от компонента; dtaRight – справа от компонента.
Учитывается
только
DateMode=dmComoBox
для
Kind=dtkDate
и
CalColor
Цвет календаря
Checked
Если
s
выполняются
условия
Checked=True
и
ShowCheckBox=True, то флажок рядом с полем даты
(времени) будет показан и установлен. Наличие флажка или
его отсутствие разрешает или запрещает ручной ввод даты
или времени
Date
Содержит введенную дату
DateFor
Определяет формат показа даты: dfShort – 11.01.04; dfLong –
5 сентября 2004 г.
mat
DateMod
Определяет способ выбора даты: dmComboBox – с помощью
раскрывающегося календаря; dmUpDown – с помощью
e
встроенного компонента TUpDown
Kind
Определяет содержимое компонента: dtkDate – дата; dtkTime
– время
MaxDate
Определяет максимальную дату, которую может выбрать или
ввести пользователь
MinDate
Определяет минимальную дату, которую может выбрать или
ввести пользователь
Time
Содержит введенное пользователем время
TMonthCalendar – календарь
Предназначен для выбора и отображения даты. Очень похож на
календарь, рассмотренный выше, но в отличие от него может одновременно
отображать несколько смежных месяцев – в зависимости от своих размеров.
Свойства компонента:
Свойство
Описание
CalColors
Цвет календаря (фона, дат, заголовков)
Date
Определяет выбранную дату
EndDate
Определяет конечную дату диапазона выбранных дат
FirstDayOf
Определяет первый день недели
Week
MaxDate
Определяет максимальную дату, месяц которой еще будет
доступен для отображения в компоненте. Если свойство
содержит пустое значение, то отображается любой
следующий месяц
MinDate
Определяет минимальную дату, месяц которой еще будет
доступен для отображения в компоненте. Если свойство
содержит пустое значение, то отображается любой
предыдущий месяц
ShowToday
Разрешает/запрещает обводить кружком текущую дату
Circle
WeekNumbe Разрешает/запрещает показ порядковых номеров недель от
rs
начала года в левой колонке
TTimer – таймер
Данный компонент служит для отсчета интервалов реального времени.
Минимальный реально достижимый интервал отсчета времени в ОС MSDOS, Windows 95/98/ME не может быть меньше 55 миллисекунд (этот
интервал называется тиком). Для ОС Windows NT Server, Windows 2000,
Windows XP длительность тика составляет 10 миллисекунд.
TCalenar – календарь
Компонент календарь отображает календарь на выбранный месяц и год.
Его свойства Day, Month, Year могут содержать любую дату от 1 до 9999 года
от Рождества Христова.
Лабораторная работа №15
Рассмотрим пример, в котором числа 2006, 1, 1 выводятся в формате даты
1.1.2006.
var MyTime: TDateTime;
begin
MyTime := EncodeDate(2006, 1, 1);
Edit1.Text := DateToStr(MyTime); end;
Для вывода в однострочное окно текущей записи на экран необходимо
Edit1.Text := DateToStr(Now);
Задания для самостоятельной работы:
1. По введенному номеру года найти количество понедельников в этом
году.
2. По введенному номеру года найти количество пятниц 13.
Компоненты вкладки Samples. Обработка событий OnDownClick и
OnUpClick
TSpinButton – спаренные кнопки
Для
данного
компонента
следует
написать
обработчики событий OnDownClick и OnUpClick, в
которых реализуется реакция программы на щелчок по той
или иной кнопке.
TСolorGrid – цветовая таблица
Класс
предназначен
для
выбора и отображения цветов из
16-цветной палитры.
Свойство
BackGroundIndex
содержит
индекс
выбранного
фонового
цвета,
GridOrdering
определяет количество колонок и
столбцов.
Лабораторная работа №16
Задача: При нажатии на верхнюю спаренную кнопку выводится
сообщение Up, на нижнюю – Down.
procedure TForm1.SpinButton1DownClick(Sender: TObject);
begin
edit2.text:='Down'
end;
procedure TForm1.SpinButton1UpClick(Sender: TObject);
begin
edit2.text:='Up'
end;
Задания для самостоятельной работы:
Составить задачу, в которой форма окрашивается в выбранный из
палитры цвет.
Компоненты вкладки Dialogs
TOpenDialog – открытие файлов и TSaveDialog – сохранение файлов
Компоненты имеют идентичные свойства.
Свойство
Описание
FileName
Имя файла из которого читаются (TOpenDialog) или
записываются (TSaveDialog) данные
Filter
Отбор файлов
DefaultExt
Формируется полное имя файла, если при ручном вводе
пользователь не указал расширение
Files
Доступ к выбранным именам файлов, если разрешен
множественный выбор
Лабораторная работа №17
Программа для просмотра содержимого текстового файла.
1. На пустую форму нанести компонент TOpenDialog, кнопку TButton и
многострочное поле TMemo.
2. При работе программы щелчок по кнопке будет сигналом о
необходимости загрузить в поле новый файл.
3. Procedure TForm1.Button1Click (Sender: TObject);
Begin
// настраиваем компонент на отбор текстовых файлов
OpenDialog1.Filter := ‘Текстовые файлы|*.txt|’+’Bat файлы |*.bat|’;
// выполняем диалог и анализируем его результат
If OpenDialog1.Execute and FileExists(OpenDialog1.FileName) then
// Результат успешный – пользователь выбрал файл
// загружаем файл в поле Memo
Memo1.Lines.LoadFromFile (OpenDialog1.FileName)
End;
Контрольная работа
Вариант №1
1. Найти наибольшее из 3 чисел a, b, c.
2. Найти сумму чисел s=1/(p+2)+ 2/(p+2)+…+ p/(p+2)
3. Дана строка. Найти количество вхождений букв А.
4. Дан двумерный массив. Найти количество элементов меньших 10.
Вариант №2
1. Найти среднее арифметическое положительных чисел из a, b, c, d.
2. Найти сумму чисел s=1+1/2+1/3+…+1/k
3. Дана строка. Найти количество знаков +, -, *, /
4. Дан одномерный массив. Найти сумму элементов кратных 5.
Вариант №3
1. Найти среднее геометрическое положительных чисел из a, b, c.
Примечание: среднее геометрическое считать равному квадратному
корню из a*b*c.
2. Найти сумму чисел s=1+1/4+1/9+…+1/n2
3. Дана строка. Заменить * знаком +.
4. Дан одномерный массив. Найти количество элементов равных 0.
Вариант №4*
1. Дана точка А(x1, y1). Определить принадлежит ли она треугольнику со
сторонами (x2, y2), (x3, y3), (x4, y4).
2. Найти сумму чисел s=(1+3+5+…+2n-1)2-(2+4+6+…+2n)3
3. Дана строка. Найти сумму входящих в нее цифр.
4. Дан динамический массив. Заполнить его следующим образом:
1
1
1
1
2
2
2
2
…
…
...
…
n
n
n
n
Список рекомендуемой литературы
1.
Delphi 7. Учебный курс./Под ред. С.И.Бобровского. – СПб.: Питер,
2003.
2.
Архангельский А.Я. Object Pascal в Delphi 5. – М. БИНОМ. 1999.
3.
Архангельский А.Я. Программирование в Delphi 7. – М., 2004.
4.
Борковский А.Б. Англо-русский словарь по программированию и
информатике. – М., 1990.
5.
Информатика./ Под ред. Н.В. Макаровой. – М., 2003.
6.
Могилев А.В., Пак Н.И., Хеннер Е.К. Информатика. – М., 1999.
7.
Орлов С.А. Технологии
разработки программного обеспечения.
–
СПб., 2003. Семакин И., Шеина Т. Преподавание базового курса
информатики в средней школе. Методическое пособие – М., 2000.
8.
Угринович
Н.,
Морозов
В.,
Нечаев
В.
Преподавание
курса
«Информатика и информационные технологии». Методическое пособие – М.,
2002.
9.
Фаронов В.В. Delphi. Программирование на языке высокого уровня. –
СПб., 2004.
10. Фаронов В.В. Turbo Pascal 7.0. Начальный курс. Учебное пособие.
Издание 7-е, переработанное. – М.: «Нолидж», 2000.
Download