Автор: Филимонова Анна Александровна
Должность: учитель информатики
Учебное заведение: МБОУ СОШ №18
Населённый пункт: город Киров
Наименование материала: методическая разработка
Тема: "Объектно-ориентированное программирование в среде PascalABC"
Раздел: полное образование
Объектно-
ориентированное
программирование
в среде PascalABC
МОАУ СОШ №18 г. Кирова
2
Знакомство со средой PascalABC
Для
загрузки
PascalABC
нужно
запустить
файл
PascalABC.exe
из папки PABC.
После загрузки PascalABC вы увидите следующее:
Перечислим некоторые объекты, с которыми вам придётся постоянно работать:
окно формы, панель свойств и событий, объекты, кнопка запуска приложения
.
На
форме
выставляются
объекты,
на
панели
свойств
можно
установить
их
значения.
В
приложении
№
1
перечислены
часто
встречающиеся
свойства
объектов.
Окно формы
Панель свойств
Панель объектов
3
Первый урок – первая программа
Задание:
На форме после запуска должна появиться примерно следующая информация:
Естественно ФИО, класс должны соответствовать вашим данным.
Примерный порядок действий:
1.
Запускаем PascalABC;
2.
Меню – Сервис – Создать форму;
3.
Для замены заголовка Form1 на Урок №1 нужно воспользоваться панелью
свойств. Измените свойство Caption с Form1 на текст «Урок №1». Данное
свойство присутствует во многих компонентах, где есть надписи, заголовки.
4.
Для замены цвета фона используйте свойство Color.
– нельзя менять Form1 в параметре Name. Значение свойства Name для
любых
компонентов
является
идентификатором
и
используется
для
обращения к объекту в коде программы.
объект
Вкладка “свойства”
Параметр
4
5.
Положите объект TextLabel на форму, и в свойстве Caption введите нужный
текст. Для этого:
Щелкните по иконке TextLabel на панели объектов.
Щелкните на форме, где должна находиться метка.
В свойстве Caption напишите свою фамилию. На форме отобразится
введенный текст.
В свойстве Font (шрифт) установите нужные вам гарнитуру, размер и
цвет текста.
Повторите это для строки с «именем и отчеством» и «классом».
6.
Запустите проект. Для этого щёлкните по иконке зелёного треугольника
.
Метка TextLabel
Кнопка Button
Текстовое поле Edit
5
Второй урок – ввод целочисленных данных
Задача:
Маша и Даша собирали грибы. Маша принесла a грибов, а Даша – b грибов.
Сколько всего грибов собрали девочки?
Данные для переменных a и b нужно ввести с клавиатуры.
После запуска форма может выглядеть так:
Компонент Edit
Находится на панели объектов. Используется для ввода текстовых данных
через свойство Text.
После
изменения
данных
в
любом
из
компонентов
Edit
можно
снова
пересчитать результат, нажав на кнопку ОПРЕДЕЛИТЬ.
Компонент Button
Находится на панели объектов. Чтобы вставить действия на щелчок, дважды
кликните на кнопке. Вы войдете в код процедуры для данной кнопки. В пустой
строке между begin и end вы будете писать команды.
Замечание:
в
разделе
описания
процедуры
обработки
события
описать
переменные, которые используются в процедуре.
Содержимое текстового поля – величина строкового типа (тип string), чтобы
перевести её в числовые типы используются функции:
StrToInt – преобразование строковой переменной в целочисленный тип;
StrToFloat – преобразование строковой переменной в вещественное число.
Для
вывода числового
результата в
текстовое поле
необходимо обратное
преобразование:
IntToStr – преобразование целочисленной переменной в строковой тип;
FloatToStr – преобразование вещественного числа в строковый тип.
Код программы
Рассмотрим код процедуры Button1OnClick для кнопки «Определить»:
procedure Button1OnClick;
var a, b: integer;
begin
a:= StrToInt(Edit1.Text);
// В переменные a и b заносим
b:= StrToInt(Edit2.Text);
//целочисленные значения
edit3.text:= IntToStr(a + b);
end;
Компоненты Edit1 и Edit2 для
ввода данных
Компонент Edit3 для вывода
результата
После щелчка на кнопке
«Определить» появится
результат
6
Примерные задания для третьего урока
1.
Катя
нашла
A
грибов,
а
Слава
B.
Среди
этих
грибов
оказалось
C
несъедобных. Сколько съедобных грибов было собрано?
Контрольный пример:
А = 64, В = 89, С = 17, ответ: 136
2.
Монгольский
воин
за
7
секунд
выпускает
обычную
стрелу,
а
за
10 –
зажженную. За какое время воин выпустит А обычных и В зажженных стрел?
Контрольный пример:
4 обычных, 5 зажженных – 78 секунд
3.
У фермера дяди Вася в загоне паслись коровы и гуси. Каждый час дядя Вася
заходил в загон и подсчитывал количество голов и общее количество ног и лап, не
считая людские головы и конечности. После этого он сверял результаты со своими
цифрами. Помогите подсчитать фермеру дяде Васе количество голов и количество
ног и лап, если известно, что на данный момент в загоне А коров и В гусей.
Контрольный пример: 12 коров, 4 гуся, ответ: 16 голов и 56 ног и лап.
7
Третий урок – использование оператора ветвления
Задача:
Константину
нужно
вычислить
модуль
введенной
числовой
величины
(расстояние от начала координат) с помощью программы. Он не знает стандартной
функции Pascal abs. Помогите ему это сделать (использовать стандартную функцию
нельзя).
Контрольный пример:
-17,78 ответ: 17,78
3 ответ: 3
По щелчку на кнопке ОПРЕДЕЛИТЬ появится результат:
После запуска форма может выглядеть так:
После
изменения
данных
в
любом
из
компонентов
Edit
можно
снова
пересчитать результат, нажав на кнопку ОПРЕДЕЛИТЬ.
Код программы
Процедура Click для кнопки ОПРЕДЕЛИТЬ с дополнительным заданием
procedure Button1OnClick;
var a:real;
begin
a := strtofloat(edit1.Text);
{получаем число }
if
a
<
0
then
{не
полная
форма
оператора
ветвления}
a := -a;
edit2.text:= floattostr(a);
end;
Дополнительное задание:
Вывести
сообщение
в
следующем
виде
после
нажатия
на
кнопку
ОПРЕДЕЛИТЬ – “модуль числа | число | = модель числа”
Пример: модуль числа | -17,78 | = 17,78
8
Примерные задания для третьего урока
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
9
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 – оба ошиблись
10
Четвертый урок – цикл с параметром (For)
Цикл с параметром:
For <1> := <2> to/downto <3> do
<4>;
1
– переменная порядкового типа;
2
– начальное значение переменной;
3
– конечное значение переменной;
4
– оператор;
to
– шаг +1;
downto – шаг -1.
Задача:
Сколько
трехзначных
чисел
имеют
удвоенную
сумму
цифр
равную
произведению цифр? Напечатать эти числа.
Пусть наша форма будет иметь следующий вид:
Код программы
procedure Button1OnClick;
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;
s := s + inttostr(100*a + 10*b + c) + ' ';
end;
edit1.text:= IntToStr(n);
edit2.text:= s;
end;
11
Примерные задания для четвертого урока
1.
Насекомое
ляпсус-папсус
размножается
с
удивительной
скоростью
и
закономерностью:
каждую секунду их становится в три раза больше;
каждую секунду погибает после этого половина;
Определите,
a)
сколько их будет через A секунд, если сейчас насекомых B?
b)
сколько их было A секунд назад, если сейчас их B?
Контрольный пример:
A = 5; B = 4 ответ: 22
2.
У гусей и кроликов вместе 64 лапы. Сколько могло быть кроликов и гусей
(указать все сочетания, которые возможны, и количество)?
Результат: 17 (сочетаний).
12
Пятый урок – цикл с предусловием (While … do)
Цикл с предусловием:
While <1> do <2>; // делать, пока условие верно
1 – логическое выражение (условие);
2 – оператор;
– цикл выполняется до тех пор, пока логическое выражение истинно;
– после ключевого слова Dо выполняется один оператор.
Если
нужно
выполнить более одного оператора, то их заключают в операторные скобки Begin …
end;
– в теле цикла обязательно должно произойти событие, которое сделает
логическое выражение ложным.
Задача:
Два жадных медвежонка нашли по головке сыра разного веса и стали спорить,
кому какая достанется. В это время рядом бежала лиса и, увидев это, предложила
свою помощь:
а)
она
откусывает
от
большей
головки
столько,
сколько
весит
меньшая
головка;
б) если они окажутся не равными, то повторит откусывание для большей
головки;
в) иначе - закончит дележ.
Если найденные головки сыра весят M и N гр., то сколько будут весить они после
дележа, сколько раз будет лиса откусывать и сколько грамм сыра она съест?
Пусть наша форма будет иметь следующий вид:
Вывод результатов будем производить в три объекта Edit.
Код программы
procedure Button1OnClick;
var
a, b, z, n : integer;
// локальные переменные
begin
a := strtoint(Edit1.Text);
// вес первой головки сыра в граммах
13
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;
edit3.text:= inttostr(a) + ' гр.';
edit4.text:= inttostr(z - 2*a) + ' гр.';
edit5.text:= inttostr(n) + ' раз.';
end;
Примерные задания для пятого урока
1.
Количество муравьев в муравейнике с каждой неделей увеличивается втрое.
Определить через сколько недель, муравьев станет больше А, если первоначально
их было 99?
Контрольный пример:
A = 5000, ответ: 3-я неделя;
А = 250 000, ответ: 7-я неделя
2.
Александр
Вятский
взял
у
Юрия
Долгорукова
взаймы
10000 рублей
с
условием, что каждый месяц он будет возвращать ему 1/5 часть от остатка (целую
его часть). Как только оставшаяся сумма не будет превышать А рублей, он отдаст
ему весь остаток сразу. Через сколько месяцев Александр Вятский возвратит весь
долг Юрию Долгорукову?
Контрольный пример:
А = 10 000, ответ: 7 месяцев
А = 150, 30 месяцев
3.
Для работы робота на бесконечной ленте записаны случайным образом
натуральные числа (значения до 32 000). Робот подсчитывает нужные числа до тех
пор, пока не встретится 0 (не натуральное число). Определить сколько было чисел:
а) кратных 7 и заканчивающихся цифрой 1 или 2;
б) кратных 5 и начинающихся с цифры 2 или 3;
в) кратных 11 и не имеющих цифру 2.
Контрольный пример:
а) 15, 11, 350, 2, 0 ответ: 1
б) 15, 30, 21, 55, 302, 235,0
ответ: 2
в) 121, 1111, 101, 66, 88, 220, 0
ответ: 3
14
Шестой урок – цикл с постусловием (Repeat … Until)
Цикл с постусловием:
Repeat <1> Until <2>;
1
– операторы;
2
– логическое выражение (условие);
– после выполнения тела цикла происходит проверка условия выхода.
Выход по верному условию.
–
ключевые
слова
Repeat
и
Until
являются
операторными
скобками,
поэтому между ними можно вставить более одного оператора;
– в теле цикла обязательно должно произойти событие, которое сделает
логическое выражение верным.
Задача:
Денис после изучения темы циклы заинтересовался, как для натурального числа
N с помощью компьютера получить другое число, записанное в обратном порядке.
А вы сможете это сделать?
Контрольный пример:
Введено число 12023, новое число 32021.
Пусть наша форма будет иметь следующий вид:
Вывод результата осуществим в Edit2.
Код программы
procedure Button1OnClick;
var
a, b, x : integer;
begin
a := StrToInt(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);
end;
15
Примерные задания для шестого урока
1.
Света нашла число, которое при последовательном делении на 2, 3, 4, 5, 6, 7, 8,
9, 10, дает соответственно остатки 1, 2, 3, 4, 5, 6, 7, 8, 9. Владик попросил ее
найти число с такими же свойствами, но наименьшее. А вы сможете найти
это число?
(Квант, № 5, 1991 г.)
2.
Вася ехал на троллейбусе с номером 4554. Его заинтересовала проблема: если
номера троллейбусов начинаются с числа A и заканчиваются B то, сколько
троллейбусов и
какие
имеют
номера
палиндромы.
Палиндром
–
это
число,
одинаково читающееся слева направо и наоборот, например, 4554, 454.
Контрольный пример:
А = 200, В = 300
ответ: 10
16
Приложения
Приложение № 1
Некоторые свойства объектов:
Align
Выравнивание объекта к контейнеру
Caption
Надпись, заголовок
Color
Цвет фона объекта
Cursor
Вид курсора на объекте
Enabled
Доступен ли объект (значения true, false)
Font
Color
Height
Name
Size
Style
Параметры шрифта, шелчёк на … - вызов диал. окна
цвет
высота
название (гарнитура)
размер (в пунктах)
стиль – начертание
Height
Высота объекта в пикселях
Hint
Текст подсказки для объекта
Icon
Замена стандартной иконки
Left
Отступ от левой границы в пикселях (окна, формы,
контейнера)
Name
Название объекта – лучше не менять стандартные, иначе
правила идентификатора
Top
Отступ от верхней границы в пикселях (окна, формы,
контейнера)
Visible
Видимый объект или нет (значения: true, false)
Width
Ширина объекта в пикселях
17
Приложение № 2
Математические операции и некоторые функции в Pascal-е
Порядок
Математика
PascalABC
Пример
1
возведение x в степень y
power(x,y)
2
3
→ power(2,3)
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
операции сравнения:
>
>
=
=
<
<
≠
<>
≤
<=
≥
>=
18
Приложение № 3
Стандартные математические функции 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 – любой целый
тип.
19
Приложение № 4
Типы числовых данных в Pascal
Целые типы
Название
Длинна,
байт
Диапазон значений
Byte
1
0 … 255
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
Вещественные типы
Название
Длина, байт
Количество
значащих
цифр
Диапазон значений
Real
8
15 … 16
5,0·10
-324
… 1,7·10
308
20
Контрольная работа
1.
Население некоторой страны в 1904 году составляло a человек. По переписи
населения,
проведённой
в
прошлом
году,
зарегистрировано
b
человек.
Составить программу вычисления среднегодового прироста населения за этот
период.
2.
Составить программу определения, является ли введённый год високосным?
Замечание: Високосный год – год, номер которого кратен 4, но не кратен 100,
а также кратен 400.
3.
Составить программу определения размера денежного вклада через t лет после
его внесения, если заданы размер начального взноса n и банковский процент b.
4.
Для условий из предыдущей задачи определить, через сколько лет размер
вклада превысит вдвое первоначальный взнос.
21
Комментарии