close

Вход

Забыли?

вход по аккаунту

?

580.Алгоритмы

код для вставкиСкачать
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
СИБИРСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
ФИЗИЧЕСКОЙ КУЛЬТУРЫ И СПОРТА
Кафедра теоретических и прикладных физико-математических дисциплин
Т.Е. Заборская
Алгоритмы.
Язык Pascal и основы программирования в Delphi
Учебное пособие по информатике для студентов СибГУФК
Омск 2005
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Заборская Т.Е. Алгоритмы. Язык Pascal и основы программирования в
Delphi.-Омск: СибГУФК,2005. - 32 с.
В учебном пособии по информатике даются основные понятия об алгоритмах, программах для ЭВМ, составленных с использованием алгоритмического языка Pascal, даются примеры программ, выполненных в Delphi.
Пособие предназначено для студентов СибГУФК.
Рецензенты: зав. кафедрой ТиПФМД профессор И.Т.Лысаковский;
ст. преподаватель кафедры ТиПФМД Г.К.Павлов
Печатается по решению редакционно-издательского совета университета
| St Ф.
\
© Сибирский государственный университет физической культуры и спорта, 2005.
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
1. АЛГОРИТМ
Алгоритм - последовательность действий, которые необходимо совершить над исходными данными с целью получения конечного результата.
Исполнителем алгоритма может быть человек или ЭВМ.
Существует несколько способов описания алгоритмов.
Например:
A. Словесный.
Б. Формульный.
B. В виде блок-схемы.
Г. В виде команд алгоритмического языка программирования.
Описание алгоритмов в виде блок-схемы
Алгоритм, составленный в виде блок-схемы, может быть понят любым программистом независимо от того, каким алгоритмическим языком
программирования он владеет.
Таблица 1
Символы, используемые при построении алгоритма решения задачи
Наименование
Обозначение
1
Символ начала или конца
выполнения алгоритма
2
Символ ввода
или вывода данных
3
Символ выполнения
операции
4
Символ выбора направления выполнения алгоритма
5
Символ цикла
3
(
)
/
с
/
>
>
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Виды алгоритмов
Алгоритм состоит из указаний, предписывающих исполнителю выполнять некоторые действия. Каждое такое указание называется командой.
Существует три основных вида алгоритмов - линейные, разветвляющиеся и циклические.
Если алгоритм составляется для исполнителя (ЭВМ), то полезно
представить запоминающее устройство в виде набора ячеек. При составлении алгоритма программист может давать ячейкам запоминающего устройства имена (идентификаторы). Ячейка может состоять из одного или
нескольких байт. В имени ячейки можно использовать буквы латинского
алфавита и цифры (на первом месте всегда буква). Например, в ячейке с
именем d хранится числовое значение 10000 (рис.1).
m
d
10000
46
с
28
V
12,91
Рис. 1. Пример представления запоминающего устройства в виде набора ячеек
Линейные алгоритмы
Линейными являются алгоритмы, состоящие из серии простых команд.
В линейных алгоритмах нет команд ветвления и повторения (цикла).
Пример (к заданию 1):
Вычислить скорость, с которой спортсмен пробежал дистанцию.
Длина дистанции, количество минут и секунд задается целым числом.
V=(d/1000)/((m*60+c)/3600),
где V - скорость (км/ч), d - дистанция (м), m - время прохождения дистанции (мин), с - время прохождения дистанции (сек).
Решение: входные данные: d,m,c; выходные данные: V.
4
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
^ Начало""^
/
Ввод
d,m,c
/
/
V=(d/1000)/((m*60+c)/3600)
Вывод
V
Введенные числовые значения запоминаются в ячейках d,m,c запоминающего
устройства (оперативной памяти, рис.1)
Числа из ячеек d,m,c пересылаются в
арифметико-логическое устройство (микропроцессор), где производятся арифметические операции, после чего полученный
результат пересылается в запоминающее
устройство в ячейку V (присваивается V).
Число из ячейки V выводится на экран.
Конец
Разветвляющиеся алгоритмы
В разветвляющихся алгоритмах используются команды ветвления. В
команду ветвления входит условие, в зависимости от которого выполняется одна из двух серий команд (рис.2). Условие представляет собой вопрос,
на который можно ответить «да» или «нет».
Рис. 2. Разветвляющийся алгоритм
Пример (к заданию 2):
Вычислить:
х=
Ь-10
Решение: входные данные: а,Ь; выходные данные: х;
Область допустимых значений: а>=5;Ь<>10
5
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Циклические алгоритмы
Циклом называется многократное повторение одних и тех же действий. В тело цикла входят блоки, выполняемые многократно (рис.3),
1
—
•
j = m,n,k
+
ТЕЛО
ЦИКЛА
Выход из цикла
При каждом повторении к величине параметра цикла прибавляется шаг, а также происходит сравнение параметра цикла с конечным значением. По результатам этого сравнения либо еще раз выполняются команды, входящие в тело цикла, либо происходит выход
из цикла.
Рис.3. Циклический алгоритм: j - параметр цикла; m - начальное значение параметра
цикла j; п - конечное значение параметра цикла j; к - шаг изменения параметра цикла j;
j > n - условие выхода из цикла
6
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Пример (к заданию 3):
Протабулировать функцию у=2/3х2, если аргумент х задан на отрезке
[m,n] с шагом измейения к.
Решение: входные данные: m,n,k; выходные данные: х,у.
^Начало
^
Ввод m,n,k
x=m.n.k
Конец
)
у=2/3*х*х
Вывод х,у
Пример исполнения алгоритма.
Если числовые значения для входных данных задать: т:=12; п:=21;
к:=3, то команда, входящая в тело цикла,будет выполняться 4 раза.
1) х:=12
у:=2/3*12*12
(у:=96)
х:=12+3
(х:=15)
К параметру цикла х прибавляется шаг 3. Если х>21, то произойдет
выход из цикла, если х<=21; то выполняется команда, входящая в тело
цикла.
2)
у:=2/3*15*15 (у:=150)
х:=15+3
(х:=18)
3)
у:=2/3*18*18 (у:=216)
х:=18+3
(х:=21)
4)
у:=2/3*21*21 (у:=294)
х:=21+3
(х:=24) х>21-выход из цикла
7
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
2. ОСНОВЫ ПРОГРАММИРОВАНИЯ
Компьютерная программа - это алгоритм, составленный для исполнения электронно-вычислительной машиной.
Использование современных систем программирования существенно
упрощает процесс создания программ.
Система программирования Delphi
Система программирования Delphi позволяет создавать другие программы путем сборки из отдельных компонентов.
Система программирования Delphi это среда визуальной разработки
программ, она:
а) предоставляет компоненты, из которых составляются готовые программы;
б) дает возможность записывать необходимые операторы (команды)
языка программирования Pascal;
в) помогает находить ошибки в создаваемой программе и исправлять
их;
г) часть операторов система подставляет автоматически.
Для программирования процедур используется алгоритмический язык
Obgect Pascal.
2.1. Алгоритмический язык программирования Pascal
Синтаксис языка
1
1. Все используемые типы, константы, переменные, функции, процедуры должны быть объявлены или описаны до их первого использования.
2. Имя (идентификатор), которое присваивается переменной, функции, процедуре и т.д,может состоять из латинских букв, цифр, символа
«_». Длина имени не более 255 символов. Он должен начинаться с буквы и
не содержать пробелов.
3. Каждое предложение языка оканчивается «;».
4. Операторные скобки begin....end выделяют составной оператор,
который воспринимается как один оператор.
8
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Типы переменных
Числовые переменные делятся на две основные группы:
Целые - Integer;
Действительные (десятичные дроби) - Real.
Поскольку для хранения целого числа требуется максимально 4 байта,
а для хранения действительного числа 10 байт, то прежде чем использовать переменную, ее надо объявить.
Объявление переменной имеет вид:
Var <список имен (идентификаторов) переменных>:<тип>
Var m,n,k:integer; v:real;
Переменные можно разделить на локальные и глобальные. Переменные,объявленные в процедурах и функциях, являются локальными. Переменные,объявленные вне процедур и функций,являются глобальными.
Глобальным переменным при их объявлении можно задавать начальные значения.
Var i:integer=l;
Числовые константы'.
Целые 7, 25,-86
Действительные:
6.2
(6,2)
7Е5
(7*105)
-3.1 Е-4
(-3.1 "Ю"4)
Символьные типы данных
Для описания одного символа - тип Char.
В таблице 2 приведены коды основных символов.
Символ занимает один байт памяти и кодируется числами от 0 до 255.
Функции Ord, Chr.
Пример.
Var x:Integer; y:Char;
x:=Ord(V); (переменная x принимает значение 255)
y:=Chr(255); (переменная у принимает значение 'я')
Для описания строки используется тип String.
Var si: string;
В описании глобальной переменной можно указать начальное значение
Var si: string='Ha4anbHbift текст'.
9
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Таблица 2
Основные символы и соответствующие им коды
Код
0
8
9
13
32
48
49
Символ
нулевой символ
BackSpase fcJ
Tab (табуляция)
Enter (новая строка)
пробел
0
1
«. •
9
А (латинская буква)
57
65
z
А (буква кириллицы)
122
192
я
255
Переменная булева типа может принимать одно из двух значений: true истина, false-ложъ.
Для объявления булевой переменной используется тип Boolean.
Var L:Boolean;
Массивы
Бывает удобно объединять несколько переменных в один массив данных. Все переменные, входящие в массив хранятся под одним именем.
Текущий номер переменной, входящей в массив указывается в скобках и
называется индексом.
Описание массива.
При описании массива указывается тип данных.
Пример.
Var A:arrey[1..10] of integer;
Массив с именем А, содержащий 10 целых чисел.
А[1]
A[l]
5
А[9]
I
8
А[Ю]
4
I
I
10
2
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
A[i] переменная с индексом, где i -индекс (целое число изменяющееся от 1 до 10); А[1]:=5; А[2]:=8;
При описании массива можно сразу указать, какие значения имеют
элементы этого массива.
Var А:аггеу[1..10] of integer=(5,8,3,2,6,7,5,l,4,2);
2.1.1. Функции и процедуры
Процедуры и функции представляют собой подпрограммы, которые
могут вызываться из разных частей основной программы или из других
подпрограмм (рис.4). При вызове в них передаются некоторые переменные, константы, выражения.
Основная программа
Подпрограмма 1
Обращение к подпрограмме 1
Обращение к подпрограмме 2
Обращение к подпрограмме 2
Подпрограмма 2
Обращение к подпрограмме 1
Рис.4. Пример структуры компьютерной программы
Функция
Функция - это подпрограмма, которую вызывают, чтобы, например,
выполнить какие-либо расчеты. Когда она завершает работу, то вызывающей ее основной программе (или подпрограмме) передаются результаты
расчета.
Описание функции:
Function <имя функции>(<список параметров:»): <тип возвращаемого
11
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
значения>; <объявление локальных переменных, констант, описание вложенных функций и процедур>
Begin
соператоры тела функции>
end;
Пример. Создать функцию, вычисляющую квадрат расстояния от
центра круга, изображенного на экране, до точки на экране, отмеченной
указателем мыши (к заданию 6).
г-радиус круга; L-расстояние от левого края окна до круга, Т - расстояние от верхнего края окна до круга, х,у-координаты указателя мыши;
хс,ус-координаты центра круга.
т
1
О
и
* k j 0 n Shape
х
У
Указатель
мыши
Function OnShape (x,y:Integer):Integer;
var r,L,T,xc,yc:Integer;
begin
r:=19; L:=35; T:=40;
xc:=L+r;
yc:=T+r;
OnShape:=(x-xc)*(x-xc)+(y-yc)*(y-yc);
end;
Вызов функции может иметь вид:
z:= OnShape(x,y);
Процедура
Процедура - это подпрограмма. Ее вызывают, чтобы выполнить какие-либо действия. От нее не требуется передавать вызывающей ее программе результаты.
12
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Описание процедуры:
Procedure <имя процедуры>(<список параметров>); <объявление локальных переменных, констант, описание вложенных процедур>
Begin
<операторы тела процедуры>
end;
2.1.2. Операторы
Оператор присваивания
<переменная>:=<выражение>
После того как переменная объявлена, ее можно использовать в выражениях.
Пример.
i:=2;
х:=10.5;
Символ «:=» обозначает операцию присваивания, в которой к тому,
что написано перед этим символом присваивается значение того, что написано после него.
В правой части оператора присваивания может быть использовано
арифметическое выражение.
Пример.
i:=i+l;
y:=sqrt(x);
y:=loglO(x)
v :=(d/1000)/((m* 60+c)/3600);
Арифметические операции.
Сложение
Вычитание
Умножение
Деление
Целочисленное деление
Остаток целочисленного деления
+
*
/
div
mod
Пример. 8div3 -результат2; 9mod4 -результат!.
13
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Математические функции:
Abs(x)
абсолютное значение
Cos(x) .
косинус
Ехр(х)
экспонента
Int(x)
целая часть аргумента
Ln(x)
натуральный логарифм
LoglO(x)
десятичный логарифм
Pi
число 3,1415
Power(x,E)
возведение х в степень Е
Sin(x)
синус
Sqr(x)
квадрат аргумента х*х
Sqrt(x)
квадратный корень
Тап(х)
тангенс
Символьным переменным можно присваивать значения символьных
констант: 'А'.
Пример. d—'Баскетбол - мой любимый вид спорта';
Символ табуляции или символ перехода на новую строку так записать
невозможно. Поэтому используется еще одна форма записи символьных
констант: символ #, после которого указывается число,соответствующее
коду этого символа.
Пример: #13 -Enter; #0-нулевой символ; #8 -BackSpase |
[
Оператор передачи управления goto
goto <метка>;
Переход на метку.
Метки объявляются словом label, после которого следует список меток.
Имя метки может состоять из латинских букв, цифр или букв и цифр.
После имени метки ставится двоеточие.
Метка может располагаться в любом месте блока, но не разрешается
задавать переход на метку, расположенную в другом блоке.
Пример.
Label ml;
begin
goto ml;
14
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
ml:
end;
Оператор with
with <объект> do <оператор>;
Пример.
with x>0 do y:=sqrt(x);
Пока x>0 вычислять У , =
Оператор выбора if
Оператор if предназначен для выполнения тех или иных действий в
зависимости от истинности или ложности некоторого условия. Условие это логическое выражение со значением true (да) или false (нет).
Оператор if имеет две формы.
1) if <условие> then <оператор>;
(if-если; then-тогда)
Если условие истинно (true), то выполняется указанный оператор,
если условие ложно (false), то управление передается оператору, следующему за if.
Пример.
Переменные х и у надо увеличить на 1, если значение переменной х
меньше 5.
if х<5 then
begin
х:=х+1;
у:=у+1;
end;
Группа операторов, стоящая между словами begin и end, рассматривается как единый оператор.
2) if <условие> then <onepaTopl>else <оператор2>;
(if -если; then -тогда; else -иначе)
Если условие истинно (да), то выполняется первый указанный оператор, в противном случае выполняется второй оператор.
15
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Пример.
Переменную х надо увеличить на 1, если ее значение меньше 5, а в
противном случае уменьшить на 1.
if х<5 thenx:=x+l else х:=х-1;
Вложенные конструкции i f .
if <условие1> then
begin
if <условие2> then <оператор1>
end
else <оператор2>;
В записи условия могут быть использованы операции отношений и
логические операции.
Операции отношений
равно
=
не равно
о
меньше
<
больше
>
меньше или равно <=
больше или равно >=
Логические операции
and логическое "и"
or
логическое "или"
not логическое "не"
Пример. Условный оператор выполняет различные действия в зависимости от значения переменной х.
if (х>=5) and (хОЮ) then
x:=sqrt(x-5)/(x-10)
else if х < 0 then
x:=sqr(x);
Условный оператор множественного выбора case
case<Bbipa)KeHHe>of
<список значений 1>:<оператор 1>;
<список значений п>:<оператор п>;
else<onepaTop>
end;
<выражение> - это математическое выражение, результат которого
имеет порядковый тип данных. Порядковым называется тип данных, в котором значения упорядочены, и для каждого из них можно указать предшествующее и последующее значения. Указанный оператор должен вы16
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
подняться, если выражение приняло одно из перечисленных в списке значений.
Оператор цикла for
Оператор цикла for, обеспечивающий циклическое повторение
некоторого оператора заданное число раз.
Повторяемый оператор называется телом цикла. Повторение завершается, когда управляющая переменная достигает заданного значения.
Оператор for имеет две формы.
1) for <счетчик>:=<начальное значение>Ю<конечное значение>
ёо<оператор>;
2) for <счетчик>:=<начальное значение>дошйо<конечное значение>
do<onepaTOp>;
<счетчик>-управляющая переменная. В начале выполнения оператора
for ей присваивается <начальное значение >. После каждого очередного
выполнения тела цикла ее значение увеличивается (в первом случае) или
уменьшается (во втором случае) на единицу. Когда значение управляющей
переменной достигает<конечного значения>, тело цикла выполняется в
последний раз, после чего управление передается оператору, следующему
за структурой for.
Пример.
Нахождение максимального значения переменной массива Data.
(Начиная с i=2, до тех пор, пока i не станет больше 50 выполнять ....)
Var...
Amax:real;
Amax:=Data[l];
For i:=2 to 50 do
If Data[i]>Amax then AMax:=Data[i]
Оператор цикла while
Оператор цикла while используется для организации циклического
выполнения совокупности операторов, называемых телом цикла, до тех
пор, пока выполняется некоторое условие.
while <условие> do <оператор>;
(while -до тех пор, пока; do - выполнять)
17
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Пример (к заданиюЗ):
Протабулировать функцию у=2/3х2, если аргумент х задан на отрезке
[m,n] с шагом изменения к.
Var x,m,n,k,y:real
x:=m;
while x<=n do
begin
y:=2/3*x*x;
x:=x+k;
end;
Оператор цикла repeat
Используется для организации циклического выполнения совокупности операторов, называемых телом цикла, до тех пор, пока не выполнится
некоторое условие.
Repeat
<операторы тела цикла>
ипШ<условие>;
(Repeat - повторять;
until-пока;)
Пример (к заданию 3):
Var x,m,n,k,y:real
x:=m;
repeat
y:=2/3*x*x;
x:=x+k;
until x>n;
2.2. Объектно-ориентированное программирование
Объектно-ориентированная программа - это совокупность объектов и
способов их взаимодействия.
Объект- совокупность свойств и методов, а также событий, на которые он может реагировать.
Методы - это функции и процедуры, обеспечивающие все необходимые операции с данными.
События - они наступают вследствие действий пользователя (перемещения курсора, нажатия кнопок мыши или клавиатуры).
Обработчики событий (процедуры) - определяют реакцию объекта на
событие. К написанию этих процедур и сводится основное программирование.
18
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Окна Delphi
1. Главное окно. В нем содержится: строка заголовка, строка меню,
панели инструментов, палитра компонентов (набор заготовок для будущих
объектов).
2. Object Inspector (инспектор объектов). С его помощью настраивают
объекты, используемые в программах.
3. Окно формы. Форма - это заготовка окна будущей программы.
4. Окно кода. Окно содержит текст создаваемой программы.
2.2.1. Процесс создания программы
Процесс создания программы в Delphi состоит из двух шагов: сначала
нужно создать форму программы (диалоговое окно), затем — написать
процедуры обработки событий.
На палитре компонентов выбирается необходимый компонент, который помещается на форму. Это начало создания объекта. Далее настраиваются свойства (характеристики) объекта (Properties), которые выбираются в инспекторе объектов.
После того как компоненты установлены на форме, их можно выровнять: Edit Align Space Equally (с равными промежутками). Edit Size позволяет выровнять размеры компонентов.
Далее в инспекторе объектов выбирается событие (Events), на которое может реагировать один из выбранных объектов. Например, для объекта Button 1 (командная кнопка) это может быть событие onClick (при
щелчке мыши). Основную работу в программе выполняют процедуры обработки событий, которые составляет программист.
Исходную информацию программа может получить из полей вводаредактирования (компонент Edit), списка выбора (компонент ListBox). Результат программа может вывести в поле вывода текста (компонент Label),
списка выбора (компонент ListBox) или в окно сообщения (функция
ShowMessage).
Для преобразования текста (строк), например находящегося в поле
ввода-редактирования, в целое число нужно использовать функцию
StrToInt, а в дробное - функцию StrToFloat. Для преобразования целого
значения переменной, в строку нужно использовать функцию IntToStr, а
для преобразования дробного - функцию FloatToStr или FloatToStrF.
Пример.
Оператор вывода результата в задании 1.
Label5.Caption:- Дистанция: '+lntToStr(d)' м'+#13+
19
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
'Время: '+IntToStr(m)+' мин '+IntToStr(c)+' сек'+#13+'Скорость='+
FloatToStrF(v,ffFixed,4,2)+' км/час';
#13 - переход на следующую строку (соответствует клавише Enter).
Если пользователь не ввел в поле Edit данные, то при выполнении
функций StrToInt или StrToFloat возникает ошибка.
Проверка, ввел ли пользователь данные в поле Edit ! :
if Length(Editl.Text) = 0 then
begin
ShowMessage('BBeflHTe данные');
exit;end;
(Length(Editl.Text)-K0nH4ecTB0 символов, записанных в поле вводаредактирования Editl; exit-прерывание выполнения процедуры).
Для того чтобы пользователь не мог ввести в окно редактирования
Edit ничего, кроме цифр и символа запятой, мы можем записать в обработчике события OnKeyPress следующий оператор:
caseKey of'0','Г,'2', , 3','4','5','6','7','8 , ,'9',', , ,#8:;
else Key:=#0; end;
При наборе любой символ, кроме указанных в списке, заменяется нулевым символом #0.
Графика
Программа может выводить графику на поверхность формы, которой
соответствует свойство Canvas (канва). Каждая точка канвы имеет координаты X и Y. Система координат канвы имеет началом верхний левый
угол.
Для того чтобы на поверхности объекта появился графический элемент Line, Ellipse, Rectangle (линия, окружность, прямоугольник и т. д.),
необходимо применить к свойству Canvas этого объекта соответствующий
метод.
Цвет линии определяет свойство Реп объекта Canvas.
Цвет закраски внутренних областей геометрических фигур, вычерчиваемых методами Line, Ellipse, Rectangle и т.д. определяет свойство Brush
объекта Canvas.
Основную работу по выводу графики на поверхность формы должна
выполнять функция обработки события OnPaint.
Пример.
Процедура «небо и дно моря» может быть добавлена к программе задания 7.
20
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
procedure TForml.FormPaint(Sender: TObject);
begin
Canvas.Brush.Color:=clAqua;
Canvas.Pen.Color:=clAqua;
Canvas.Rectangle(0,0,536,20);
Canvas.Brush.Color:=cl01ive;
Canvas.Pen.Color:=cl01ive;
Canvas.Rectangle(0,300,536,500);
end;
2.2.2. Примеры программ для практических работ по информатике
Задание 1
Вычислить скорость (км/час), с которой спортсмен пробежал дистанцию.
Длина дистанции задается целым числом (в метрах). Количество минут и
секунд задается целым числом.
Forml
. • х
Label'l ' "fe'diti.^ ' [
. ,Labei2fedit2_ID... .LabeI3 .lEdit3
XabcW
Buttonl
procedure TForml.Button!CIick(Sender: TObject);
Var
d:integer;
m:integer;
c:integer;
v:real;
begin
d:=StrToInt(Editl .Text);
21
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
m:=StrToInt(Edit2.Text);
c:=StrToInt(Edit3 .Text);
v:=(d/1000)/((m* 60+c)/3600);
Label4.Caption:-Скорость='+ FloatToStrF(v,f£Fixed,4,2)+' км/час';
Editl .Clear;Edit2.Clear; Edit3.Clear;
end;
end.
Компоненты:
Label-вывод текста на поверхность формы.
(Свойства (Properties): Color - определяет цвет фона поля, Font - шрифт, Caption
-содержит текст надписи).
Edit -поле ввода-редактирования строки символов.
(Свойства: Color - определяет цвет фона поля, Font - шрифт, Text -хранит содержимое текстового поля, Clear -чистит).
Button - командная кнопка.
(Свойства: Caption - текст на кнопке).
Событие (Events):
OnCIick - происходит в случае щелчка на кнопке.
Функции:
StrToInt(s) Преобразует текстовую запись числа в целое число, изображением
которого является строка s.
FloatToStrF(n£k,m) Строка, являющаяся изображением действительного числа
п. При вызове функции указывают: f — формат. Формат определяет способ изображения числа: формат ff Fixed — с фиксированной точкой (к —количество
цифр до десятичной точки; m — количество цифр после десятичной точки).
Задание 2
Вычислить x=sgrt(a-5y(b-10).
Forml
о х
• • • • Вычисление x=Sqrt(a-5)/(b-10) • • •
..а= lEditl
|
b= |Edit2
1
22
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
procedure TForml.ButtonlClick(Sender: TObject);
Var
a,b,x:real;
begin
a:=StrToFloat(Editl .Text);
b:=S trToF 1 oat(Edit2. Text);
If (a>=5) then
begin
If ( b o 10) then
begin
x:=sqrt(a-5)/(b-10);
ShowMessage('x='+FloatToStrF(x,ffFixed,4,2));
end
else
ShowMessage('Деление на нуль')
end
else
ShowMessage('HeT решения');
Editl .Clear;Edit2.Clear;
end;end.
Компоненты:
Label -вывод текста на поверхность формы.
ОСвойства: Color - определяет цвет фона поля, Font - шрифт, Caption -содержит
текст надписи).
Edit -поле ввода-редактирования строки символов.
(Свойства: Color - определяет цвет фона поля, Font - шрифт, Text -хранит
содержимое текстового поля, Clear -чистит).
Button - командная кнопка.
(Свойства: Caption - текст на кнопке).
Событие:
OnClick - происходит в случае щелчка на кнопке.
Функции:
StrToFloat(s) Преобразует текстовую запись числа в действительное число, изображением которого является строка s.
FIoatToStrF(n,f,k,m) Строка, являющаяся изображением действительного числа
п. При вызове функции указывают: f — формат. Формат определяет способ изображения числа: формат ff Fixed — с фиксированной точкой (к —количество
цифр до десятичной точки; m — количество цифр после десятичной точки).
ShowMessage(s) - выводит окно, в котором содержится сообщение s и командная
кнопка ОК.
23
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Задание 3
Вычислить значения функции у =2/3 х*х, если аргумент х задан на отрезке [m,n] с шагом изменения к.
в х
Forml
ListBoxl
у=2/3*х*х
ВЫЧИСЛИТЬ
procedure TForml. Button lClick(Sender: TObject);
Var
m,njk,x,y:real;
begin
ListBoxl.Clear;
m:-StrToFloat(Editl .Text);
n:=StrToFloat(Edit2.Text);
k:=StrToFloat(Edit3 .Text);
x:=m;
while x<=n do
begin
y:=2/3*x*x;
ListBox 1 .Items. Add('x='+FloatToStrF(x,ffFixed,4,2)+' y='+
FloatToStrF(y,ffFixed,8,2));
x:=x+k;
end;
Editl.Clear; Edit2.Clear;Edit3.Clear;
end;
end.
Компоненты:
Label -вывод текста на поверхность формы.
(Свойства: Color - определяет цвет фона поля, Font - шрифт, Caption -содержит
текст надписи).
24
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Edit -поле ввода-редактирования строки символов.
(Свойства: Color - определяет цвет фона поля, Font - шрифт, Text -хранит содержимое текстового поля).
ListBox -предназначен для создания списков.
(Методы: Items. Add - добавляет элемент в список, Clear - очищает список).
Button - командная кнопка.
(Свойства: Caption - текст на кнопке).
Событие:
OnClick - происходит в случае щелчка на кнопке.
Функции:
StrToFloat(s) Преобразует текстовую запись числа в действительное число, изображением которого является строка s.
FloatToStrF(n,f,k,m) Строка, являющаяся изображением действительного числа
п. При вызове функции указывают: f - формат. Формат определяет способ изображения числа: формат ff Fixed - с фиксированной точкой (к - количество цифр
до десятичной точки; m - количество цифр после десятичной точки).
Задание 4
Составить программу - тест " Склонность к педагогической деятельности". Тест рассчитан на 10 вопросов.
Возможны два варианта ответа на каждый вопрос (да-1 балл; нет -0 баллов). Оценить результаты опроса по двум градациям (от 0 до 5 баллов -нет
склонности к педагогической деятельности; от 6 до 10 баллов -высокая
склонность).
uses Math;
var i:integer=l;
25
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
s:integer=l;
a:array[1..10] of string;
procedure TForml .Button lClick(Sender: TObject);
begin
Label 1 .Caption:=a[i];
s:=s+l;
if (i>10) and (s>5) then
Label2.Caption:='CiaiOHHOCTb к педагогической деятельности. '+#13+
'Сумма баллов-+IntToStr(s)
else
if (i>10) and (s<=5) then
Label2.Caption:='HeT склонности к педагогической деятельности. '+#13+
'Сумма баллов='+IntToStr(s);
if (i>10) then LabelLCaption:- ';
i:=i+l;
end;
procedure TForml.Button2Click(Sender: TObject);
begin
Labell .Caption:=a[i];
if(i>10) and (s>5) then
Label2.Capti0n:='Cmi0HH0CTb к педагогической деятельности. '+# 13+
'Сумма баллов-+IntToStr(s)
else
if (i>10) and (s<=5) then
Label2.Caption:='HeT склонности к педагогической деятельности. '+#13+
'Сумма баллов-+IntToStr(s);
if (i> 10) then Label 1 .Caption:- ';
i:=i+l;
end;
procedure TForml.FormCreate(Sender: TObject);
begin
Label2.Caption:='';
i:=2;
а[1 ]:-Я чувствую радость от общения с людьми';
а[2]:='Мне нравится сообщать людям нужные им сведения';
а[3]:='Я редко с кем ссорюсь';
а[4]:- При организации мероприятий я не испытываю трудностей';
а[5]:-Мне нравится разбирать споры между людьми1;
а[6]:-Я легко вступаю в общение с новыми людьми';
а[7]:='Мне нравится искать и исправлять ошибки в текстах';
а[8]:='Я легко чувствую себя при объяснении, рассказе';
26
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
а[9]:='Мне нравится тренировать товарищей';
а[10]:-Ко мне часто обращаются за советом, помощью';
Label 1 .Caption :=а[ 1 ];
s:=0;
end; end.
Компоненты:
Label-вывод текста на поверхность формы.
(Свойства (Properties): Color - оцределяет цвет фона поля, Font - шрифт, Caption
-содержит текст надписи).
Button - командная кнопка.
(Свойства: Caption - текст на кнопке).
Событие (Events):
OnClick - происходит в случае щелчка на кнопке.
OnCreate происходит, когда форма уже готова, но еще не выведена на экран. Используется для настройки начальных параметров программы.
Функции:
Int ToStr (п) Преобразует целое число п в текстовую запись числа.
Задание 5
Для заданного аргумента х вычислить одну или несколько стандартных
функций (Ln(x); Sqrt(x); Sqr(x); Ехр(х); Sin(x); Cos(x)).
Forml
CheckLisfflox
• y=Ln(x)
• y=Sqrt(x)
• y=Sqr(x)
• y=Exp(x)
• y=Sin(x)
• y=Cos(x)
0 x
ListBox 1
procedure TForml.CheckListBoxlClickCheck(Sender: TObject);
Var
i:integer;
x:real;
27
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
y:array[0..5] of real;
z:array[0..5] of string;
begin
ListBoxl.Clear;
x:=StrToFloat(Editl .Text);
x:=Abs(x);
y[0]:=Ln(x); y[l]:=Sqrt(x); y[2]:=Sqr(x); y[3]:=Exp(x); y[4]:=Sin(x);
y[5]:=Cos(x);
z[0]:-Ln('; z[l]:='Sqrt('; z[2]:='sqrC; z[3]:='Exp('; z[4]:='Sin('; z[5]:='Cos(';
for i:=0 to CheckListBoxl.Items.Count-1 do
if CheckListBoxl.Checked[i] then
begin
ListBoxl.Items.Add(z[i]+FloatToStrF(x,ffFixed,4,2)+')='+
FloatToStrF(y[i],ffFixed,4,2));
end;
end;
end.
Компоненты:
Label-вывод текста на поверхность формы.
(Свойства: Color - определяет цвет фона поля, Font - шрифт, Caption -содержит
текст надписи).
Edit -поле ввода-редактирования строки символов.
(Свойства: Color - определяет цвет фона поля, Font - шрифт, Text -хранит содержимое текстового поля).
ListBox -предназначен для создания списков.
СМетоды: Items.Add - добавляет элемент в список, Clear - очищает список).
CheckListBox -предназначен для создания списка, каждый из пунктов которого
снабжен флажком.
(Свойства: Items.Count-количество пунктов в списке, Checked -массив логических значений, показывающих, какие из флажков, соответствующих отдельным
пунктам списка, установлены).
Событие:
OnClickCheck - происходит при переключении одного из флажков списка.
Функции:
StrToFloat(s) Преобразует текстовую запись числа в действительное число, изображением которого является строка s.
FloatToStrF(n,f,k,m) Строка, являющаяся изображением действительного числа
п. При вызове функции указывают: f — формат. Формат определяет способ изображения числа: формат ff Fixed — с фиксированной точкой (к—количество
цифр до десятичной точки; m — количество цифр после десятичной точки).
Примечание. При создании списка флажков использовать свойство Items (пункты). В
открывшееся диалоговое окно ввести необходимую строку и нажать Enter.
28
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Задание 6
Нарисовать светофор с тремя лампочками, способными «включаться» при
наведении указателя мыши.
Function OnShape
(sh:TShape;x,y:Integer):TBrushStyle;
var
r,cx,cy,d2:Integer;
begin
r:=sh. Width div 2;
cx:=sh.Left+r;
cy:=sh.Top+r;
d2:=(x-cx)*(x-cx)+(y-cy)*(y-cy);
OnShape :=bsClear;
if d2<r*r then OnShape:=bsSolid;
end;
procedure TForml.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y:
Integer);
begin
Shape 1 .Brush.Color:=clRed;
Shapel .Brush.Style:=OnShape(Shapel,x,y);
Shape2.Brush.Color:=clYellow;
Shape2.Brush.Style:=OnShape(Shape2,x,y);
Shape3 .Brush.Color:=clLime;
Shape3.Brush.Style:=OnShape(Shape3,x,y);
end;
end.
Forml
О
. с
:
29
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Примечание: для всех созданных объектов задать свойство Enabled - False.
Компоненты:
Shape - позволяет изображать на форме простые геометрические фигуры.
Свойства: Shape -определяет форму фигуры; Brush.Color -определяет цвет внутренней части фигуры (clRed -красный; clYellow -желтый;с1Ьипе -зеленый);
BrushStyle -определяет, как происходит закраска внутренней части фигуры
(bsSolid -сплошная заливка; bsClear -область не закрашивается);
Width -горизонтальный размер объекта;
Height -вертикальный размер объекта;
Left -горизонтальная координата объекта;
Тор -вертикальная координата объекта.
Enabled -включен. (True -да; False-нет).
Событие:
OnMouseMove - происходит, когда указатель мыши наведен на форму.
Задание 7
Создать движущийся графический объект (подводная лодка),
uses Math;
Var x,y:integer;
//координаты базовой точки лодки
procedure Lodca(x,y:integer;m:boolean);
begin
if not m then
//стереть рисунок, если m:False
begin
Forml .Canvas.Brush.Color:=clSkyBlue;
Forml .Canvas.Pen.Color:=clSkyBlue;
Forml .Canvas.Rectangle(x,y,x+200,y-40);
//прямоугольник
цвета моря
стирает
лодку
end;
With Forml.Canvas do
//нарисовать лодку
begin
Brush.Color:=clGray;
Pen.Color:=clGray;
Ellipse(x+50,y-35,x+200,y-15);
//нарисовать эллипс
Rectangle(x+120,y-40,x+160,y-25);
//нарисовать прямоугольник
Pen.Color:=clYellow;
Brush.Color:=clYellow;
Ellipse(x+150,y-30,x+160,y-25);
Ellipse(x+120,y-30,x+130,y-25);
Ellipse(x+90,y-30,x+100,y-25);
end;end;
30
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
procedure TForml.TimerlTimer(Sender: TObject);
begin
Lodca(x,y,False);
//стереть рисунок
if x<Forml .ClientWidth
then x:=x+3
else begin
//новый рейс
x:=0;y:=Random(200)+100;
//новые начальные координаты
(датчик случайных чисел)
end;
Lodca(x,y,True);
//нарисовать лодку в новой точке
end;
procedure TForml.FormCreate(Sender: TObject);
begin
x:=0;y"200;
//исходное положение лодки
Forml.Color:=clSkyBlue;
//цвет моря
Timerl.Interval:=50;
//сигнал таймера каждые 50 мсек
end;end.
Form - форма.
Свойства: Color -задает цвет внутренней области окна; ClientWidth -ширина рабочей области в окне программы; Canvas - поверхность на которую можно вывести графику;
(Brush.Color -цвет заливки; Pen.Color -цвет линии. CISkyBlue -голубой; clGray серый; clYellow-желтый).
Компонент:
Timer позволяет выполнять действия программы в режиме реального времени,
ориентируясь по системным часам компьютера.
Свойства: Interval -содержит интервал срабатывания таймера. Задается в миллисекундах.
События:
OnTimer происходит по истечении интервала времени, заданного таймером.
OnCreate происходит, когда форма уже готова, но еще не выведена на экран. Используется для настройки начальных параметров программы.
Forml
-
с >
Х
>У
0
о
о О
х+160,у-40
31
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Литература
1. Архангельский А.Я. Язык Pascal и основы программирования в
Delphi/ Учебное пособие. -М: Бином,2004.-496с.
2. Симонович С., Евсеев Г. Занимательное программирование Delphi.М:АТС-Пресс-книга,2003.-368с.
СОДЕРЖАНИЕ
1. АЛГОРИТМ
3
2. ОСНОВЫ ПРОГРАММИРОВАНИЯ
8
2.1. Алгоритмический язык программирования Pascal
2.1.1. Функции и процедуры
2.1.2. Операторы
2.2. Объектно-ориентированное программирование
2.2.1. Процесс создания программы
2.2.2. Примеры программ для практических работ
по информатике
Литература
8
11
13
18
19
21
32
Подписано в печать 11.02.05. Формат 60x84 1/16.
Объем 2 печ.л. Тираж 400 экз. Заказ 5.
Издательство СибГУФК.
644009, г.Омск, ул.Масленникова, 144.
Документ
Категория
Информатика и программирование
Просмотров
12
Размер файла
492 Кб
Теги
580, алгоритм
1/--страниц
Пожаловаться на содержимое документа