Просмотр содержимого документа
«Паскаль в 9 классах презентации »
Графика
График функций
Процедуры
Рекурсия
Анимация
Случайные числа
Функции
Введение
Разветвление
Сложные условия
Циклы
Циклы с условием
Операторы выбора
Тема 1. Введение
Алгоритм
Алгоритм – четкое и точное предписание последовательности действий исполнителю.
Свойства алгоритма
дискретность : состоит из отдельных команд понятность команд определенность результативность общность правильность
дискретность : состоит из отдельных команд
понятность команд
определенность
результативность
общность
правильность
Программа
Программа -
Алгоритм записанный на каком-либо языке программирования Совокупность команд на выполнение ПК
Алгоритм записанный на каком-либо языке программирования
Совокупность команд на выполнение ПК
Команда – действие на выполнение компьютера .
Языки программирования
Машинный язык низкого уровеня (ассемблер)
Языки высокого уровня
Для начинающих: Бейсик, ЛОГО, Паскаль Профессиональный : Си, Фортран , Паскаль Для искусственного интеллекта : Пролог, ЛИСП
Для начинающих: Бейсик, ЛОГО, Паскаль
Профессиональный : Си, Фортран , Паскаль
Для искусственного интеллекта : Пролог, ЛИСП
Для Интернета : JavaScript, Java, Perl, PHP, ASP
Для Интернета : JavaScript, Java, Perl, PHP, ASP
Язык программирования Паскаль
1970 – Никлаус Вирт (Швейцария)
для школьников и студентов
для школьников и студентов
данные(массив, функции и операторы)
данные(массив, функции и операторы)
задача
3
2
1
3 .2
3 .3
3 .1
2 .3
2 .2
2 .1
1.3
1.2
1.1
6
; const … ; { константы } var … ; { переменные } Begin { начало программы } … { основная программа } end. { конец программы } { процедуры и функции } В фигурных скобках пояснения не обрабатываются ПК. 6 6" width="640"
Из каких частей состоит программа?
programимя программы;
const…;{константы}
var…;{переменные}
Begin{начало программы}
…{основная программа}
end.{конец программы}
{процедуры и функции}
В фигурных скобках пояснения не обрабатываются ПК.
6
6
Из каких часте й состоит программа?
Константы – имеет свое имя и не изменяется в течении всей программы, .
Переменные – имеет свое имя (ячейка в памяти), переменная величина.
Процедура – вспомогательный алгоритм характеризующий некоторые действия (например нарисовать окружность).
Функция – вспомогательный алгоритм выполняющий решения задач (найти конерь квадрата, sin ) .
6
6
Программы, константы, имя переменной
Латинские буквы (A-Z)цифрыподчеркивание _можно применять
:= выражение ; Состав арифметического выражения постоянные переменные обозначения постоянные переменные обозначения + - * / div mod + - * / div mod Вызов функций скобки ( ) Вызов функций скобки ( ) умножение Деление на число Целая часть от деления 5 div2=2 деление Целый Остаток от деления 5mod 2=1 6 6" width="640"
операторы присваивания
формат:
имя переменной:=выражение;
Состав арифметического выражения
постоянные переменные обозначения
постоянные
переменные
обозначения
+ - * / div mod
+ - * / div mod
Вызов функций скобки ( )
Вызов функций
скобки ( )
умножение
Деление на число
Целая часть от деления
5 div2=2
деление
Целый Остаток от деления
5mod 2=1
6
6
Какой оператор с ошибкой?
program qq;
var a, b: integer;
x, y: real;
begin
a := 5;
10:= x;
y := 7,8;
b := 2.5;
x := 2*(a + y);
a := b + x;
end.
Имя переменной := обозначение должно быть
с лево
Запятая не ставится между целой частью и десятичной.
Нельзя присваивать вещественную и целую переменную
6
6
Правила выполнения действий
Вычислить значения в скобках Умножение слева на право, деление, div , mod Сложение и вычитание слева на право
Вычислить значения в скобках
Умножение слева на право, деление, div , mod
Сложение и вычитание слева на право
2 3 5 4 17 8 69
2 3 5 4 17 8 69
z :=(5*a*c+3*(c-d))/a*(b-c)/ b;
z :=(5*a*c+3*(c-d))/a*(b-c)/ b;
2 6 3 4 7 5 1 12 8 11 10 9
2 6 3 4 7 5 1 12 8 11 10 9
x:=(a*a+5*c*c-d*(a+b))/((c+d)*(d-2*a));
x:=(a*a+5*c*c-d*(a+b))/((c+d)*(d-2*a));
6
6
Сложить два числа
Задача. Сложить два целых числа и вывести на экран .
program qq;
var a, b, c: integer;
begin
read ( a, b );
c := a + b;
writeln ( c );
end.
6
6
операторы ввода
read ( a );{а ввести значение переменной}
read ( a, b );{аиbввести значение переменных}
Как ввести два числа?
через пробел:
25 30
через Enter
25
30
a
25
b
30
a
25
b
30
6
17
Операторы вывода
write ( a );{ aвывод значения переменной}
writeln( a );{aвывод значения переменной,перейти на следующую строку}
writeln ( ‘Привет!' );{вывести текст}
writeln ( ‘Ответ:', c );{вывести текст и вывести переменнуюc}
writeln ( a, '+', b, '=', c );
17
17
', i, ' writeln ( '', i:5, ' x := 12.345678; writeln ( '', x, ' writeln ( '', x:10, ' writeln ( '', x:7:2, ' end. Количество всех символов 15 15 1.234568E+001 1.23E+001 12.35 Количество всех символов 17 17" width="640"
Форматы вывода
program qq;
var i: integer;
x: real;
begin
i := 15;
writeln ( '', i, '
writeln ( '', i:5, '
x := 12.345678;
writeln ( '', x, '
writeln ( '', x:10, '
writeln ( '', x:7:2, '
end.
Количество всех символов
15
15
1.234568E+001
1.23E+001
12.35
Количество всех символов
17
17
Вывод
program qq;
var a, b, c: integer;
begin
writeln(‘ввести два целых числа');
read ( a, b );
c := a + b;
writeln ( a, '+', b, '=', c );
end.
Выводит компьютер
Протокол :
ввести два целых числа
25 30
25+30=55
Это вводит программист сам
17
17
блок-схемалинейного алгоритма
«начало» блок
начало
ввод a , b
«ввод» блок
c := a + b;
«процесс» блок
Вывод c
«вывод» блок
конец
«конец» блок
17
17
Задание
"4": ввести три числа, найти сумму и произведение.
ввести три числа:
4 5 7
4+5+7=16
4*5*7=140
"5":ввести три числа, найти сумму ,произведение и среднее арифметическое значение
Пример:
ввести три числа:
4 5 7
4+5+7=16
4*5*7=140
(4+5+7)/3=5.33
17
17
Тема 2. Разветвление
17
Алгоритм развервляющийся
Задача . Ввести два целых числа и вывести на экран максимальное число .
Вывод: если первое число больше второго, вывести первое , а если меньше то на экран вывести второе число.
Примечание: действие исполнителя зависит от условия (если …то … ).
Разветвляющийся алгоритм - задача решается при каком-либо условии(на лево пойдешь- коня потеряешь, на право пойдешь – голову положишь).
17
17
Операторы и служебные слова
Присваивания :=
Ввода READ
Вывода WRITE
Перехода COTO
Управления Begin end составной оператор
Условный оператор IF -если ,THEN -то ,ELSE -иначе
CASE - оператор выбора
Операторы повторения WHILE – пока DO -выполнить , REPEAT -повторять ,until - до
FOR - для, ТО-до, With- присоединение
Downto- обратно или вниз до
Функции и процедуры
Графические операторы
Uses- ключевое слово
Label -описание меток
Const - постоянные
Type - типы данных
Var -переменные
Procedure
Function
17
b? max:= a; max:= b; вывод max конец ? если a = b? 17 26" width="640"
1 Вариант. Блок-схема
начало
«условие выбора» блок
ввести a,b
Полный вид вертвления
да
нет
a b?
max:=a;
max:=b;
вывод max
конец
?
еслиa = b?
17
26
b then begin end else begin end ; writeln (‘ большое из двух ', max); end. Полный вид условного оператора max := a ; max := b ; 26 26" width="640"
1 Вариант. Программа
program qq;
var a, b, max: integer;
begin
writeln(‘ввести два числа');
read ( a, b );
if a b thenbegin
end
elsebegin
end;
writeln (‘большое из двух', max);
end.
Полный вид условного оператора
max:=a;
max:=b;
26
26
then begin { что нужно делать ,если условие выполняется } end else begin { что нужно делать ,если условие не выполняется } end ; Особенности: else - ; не ставится Если в блоге только один оператор, begin и end можно и не писать else - ; не ставится Если в блоге только один оператор, begin и end можно и не писать 26 26" width="640"
Условный оператор
ifусловныйthenbegin
{что нужно делать ,если условие выполняется}
end
else begin
{что нужно делать ,если условие не выполняется}
end ;
Особенности:
else - ; не ставится Если в блоге только один оператор, begin и endможно и не писать
else - ; не ставится
Если в блоге только один оператор, begin и endможно и не писать
26
26
b then begin a := b; end else b := a; end ; if a b then begin a := b; else begin b := a; end ; end begin if a b then begin a := b; end; else begin b := a; end ; if a b then begin a := b; end else b a begin b := a; end ; end begin 26 26" width="640"
Найти ошибку?
if a b thenbegin
a := b;
end
else
b := a;
end;
if a b thenbegin
a := b;
elsebegin
b := a;
end;
end
begin
if a b thenbegin
a := b;
end;
elsebegin
b := a;
end;
if a b thenbegin
a := b;
end
else b abegin
b := a;
end;
end
begin
26
26
a? max:= b; вывод max конец 26 30" width="640"
2Вариант. Блок-схема
начало
ввести a,b
max:=a;
Неполный вид ветвления
да
нет
b a?
max:=b;
вывод max
конец
26
30
a then max := b; writeln (‘ БИД ', max); end. Неполный вид условного оператора 30 30" width="640"
2 Вариант . Программа
program qq;
var a, b, max: integer;
begin
writeln(‘ввести два целых числа');
read ( a, b );
max := a;
if b a then
max := b;
writeln (‘БИД', max);
end.
Неполный вид условного оператора
30
30
b max := a; 30 30" width="640"
2Б Вариант . Программа
program qq;
var a, b, max: integer;
begin
writeln(‘ввести два числа');
read ( a, b );
max := b;
if???then
???
writeln ( ‘ БИД ' , max);
end.
a b
max := a;
30
30
Задание
"4": Ввести три числа найти максимальное.
Пример:
ввести три числа:
4 15 9
максимальное 15
"5": Ввести пять чисел, найти максимальное.
Пример:
ввести пять чисел:
415956 4
большое число 56
30
30
Тема 3. Сложные условия
30
b then begin a := b; end; else b := a; if a b then begin a := b; else b := a; a := b end if a b then a := b; else b := a; end; if a b then else begin b := a; end ; if b = a then b := a; a := b 30 30" width="640"
Найти ошибку?
if a b thenbegin
a := b;
end;
else b := a;
if a b thenbegin
a := b;
else b := a;
a := b
end
if a b then
a := b;
else b := a;end;
if a b then
elsebegin
b := a;
end;
if b = a then
b := a;
a := b
30
30
Сложные условия
Задача. Фирма принимает на работу от 25 до 40 лет. Ввести возраст человека, вывести на экран сведения о приеме или неприеме на работу («принят» или «непринят» вывести на экран ) .
Особенности :проверить оба условия
30
30
= 25? да нет x = 40? ‘ не принят ' ‘ принят ' ‘ не принят ' нет 30 30" width="640"
1 Вариант . Алгоритм
начало
ввести x
да
нет
x=25?
да
нет
x=40?
‘ не принят '
‘ принят '
‘ не принят '
нет
30
30
= 25 then if x writeln (‘ принят ') else writeln (‘ не принят ') else writeln (‘ не принят '); end. 30 30" width="640"
1 Вариант. Программа
program qq;
var x: integer;
begin
writeln(‘ввести возраст');
read ( x );
if x = 25 then
if x
writeln (‘принят')
else writeln (‘не принят')
else
writeln (‘не принят');
end.
30
30
= 25 и x 40? нет да ‘ принят ' ‘ не принят ' конец 30 39" width="640"
2 Вариант . Алгоритм
начало
ввести x
x=25и
x40?
нет
да
‘ принят '
‘ не принят '
конец
30
39
= 25) and (x writeln (‘ принят ') else writeln (‘ не принят ') end. Сложное условие 39 39" width="640"
2Вариант. Программа
program qq;
var x: integer;
begin
writeln(‘ввести возраст');
read ( x );
if (x = 25) and (x
writeln (‘принят')
else writeln (‘не принят')
end.
Сложное условие
39
39
= = = = равно Не равно 39 39" width="640"
Сложные условия
Сложное условие – состоит из несколькоих условий логических операций:
not – нет ( инверсия) and – и (логикалческое умножение, конъюнкция) or – или (логическое сложение, дизъюнкция) xor – арифметическое или
not – нет ( инверсия)
and – и (логикалческое умножение, конъюнкция)
or – или (логическое сложение, дизъюнкция)
xor – арифметическое или
Простые условия
Простые условия
==
==
равно
Не равно
39
39
=, =, not and or, xor , =, =, Особенность – каждое простое условие закрывается скобкой. Пример: 4 1 6 2 5 3 if not (a b) or (c d) and (b a) then begin ... end if not (a b) or (c d) and (b a) then begin ... end 39 39" width="640"
b) (a not (a = b) or (c = d) (a (a c) not (a b) (a not (a = b) or (c = d) (a (a c) x -принимает значение истино : (x (x 10) (x 6) and (x (x 6) and (x 10) (x (x 10) (x 6) or (x (x 6) or (x 10) (x (x 10) (x 6) and (x (x 6) and (x 10) (x (x 10) (x 6) or (x (x 6) or (x 10) True True True True FALSE (- , 6) x 6 (6, 10) x 10 (10, ) (- , 10) x 10 (- , 6) (10, ) (- , ) x 6 (6, ) 39" width="640"
Сложные условия
a:=2; b:=3; c:=4;
not (a b)
(a
not (a = b) or (c = d)
(a
(a c)
not (a b)(a not (a = b) or (c = d)(a (a c)
x-принимает значение истино:
(x
(x 10)
(x 6) and (x
(x 6) and (x 10)
(x
(x 10)
(x 6) or (x
(x 6) or (x 10)
(x (x 10)(x 6) and (x (x 6) and (x 10)(x (x 10)(x 6) or (x (x 6) or (x 10)
True
True
True
True
FALSE
(-,6)
x6
(6,10)
x10
(10,)
(-,10)
x10
(-,6)(10,)
(-,)
x6
(6,)
39
Задание
"4": ввести номер месяца, вывести время года.
пример:
ввести номер месяца:
4
весна
Тема 4. Циклы
Цикл
Цикл – определенная последовательность действий повторяющаяся несколько раз.
определенный цикл количества шагов Неопределенный цикл количества шагов (условный цикл)
определенный цикл количества шагов
Неопределенный цикл количества шагов (условный цикл)
Задача . Найти квадрат и куб целых чисел от 1до 8-ми (от a до b ).
Примечание : все действия повторяются 8 раз .
Алгоритм
начало
Начальное значение переменной цикла
i:=1;
Проверка условия
нет
i8?
конец
Нахождение Квадрата и куба
да
i2:=i*i;
i3:=i2*i;
Вывод результата
i,i2,i3
Перейти к следующему i
i:=i+1;
Алгоритм(блок "цикла" )
«цикл»блок
начало
i := 1,8
конец
i2:=i*i;
i3:=i2*i;
тело цикла
i,i2,i3
Программа
program qq;
var i, i2, i3: integer;
begin
for i:=1 to 8 do begin
i2 := i*i;
i3 := i2*i;
writeln(i:4, i2:4, i3:4);
end;
end.
Начальное значение
Цикл повтора
Последнее значение
Цикл с убыванием
задача. Найти квадрат и куб целых чисел От 8до 1 (расчет наоборот).
Примечание : повторение цикла на уменьшение .
решение:
downto
for i:=8 1 do begin
i2 := i*i;
i3 := i2*i;
writeln(i:4, i2:4, i3:4);
end;
:= начальное значение to конечное значение do begin { тело цикл } end; Переменная уменьшается на 1: for переменная := начальное значение downto конечное значение do begin { тело цикл } end;" width="640"
Цикл с повтором
Переменная возрастает на 1:
forпеременная:=начальное значениеto
конечное значениеdobegin
{тело цикл}
end;
Переменная уменьшается на 1:
forпеременная:=начальное значениеdownto
конечное значениеdobegin
{тело цикл}
end;
Цикл с повтором
примечание:
переменная цыкла должна быть целым числом ( integer ) Повтор цикла изменяется на 1 шаг ( to ) или равен на1 ( downto ) Если в теле цикла только один оператор , то begin и end можно опустить и не писать: Если конечное значение меньше начального значения, ( to ) циклы не повторяется ни разу ( условный цикл повторяется в начале,условие предварительно проверяет цикл)
переменная цыкла должна быть целым числом ( integer )
Повтор цикла изменяется на 1 шаг ( to ) или равен на1 ( downto )
Если в теле цикла только один оператор , то begin и end можно опустить и не писать:
Если конечное значение меньше начального значения, ( to ) циклы не повторяется ни разу ( условный цикл повторяется в начале,условие предварительно проверяет цикл)
for i:=1to 8do
writeln('Привет');
Цикл с повтором
Примечание :
В теле цикла цикл с повтором нельзя изменять Начальное и конечное значение меняется , но количество шагов в цикле не изменяется:
В теле цикла цикл с повтором нельзя изменять
Начальное и конечное значение меняется , но количество шагов в цикле не изменяется:
n := 8;
for i:=1to ndo begin
writeln(‘привет');
n := n + 1;
end;
Быстрый ответ
Сколько раз повторяется цикл?
a:=1;
for i:=1to 3doa:=a+1;
a=4
a:=1;
for i:=3to 1doa:=a+1;
a=1
a:=1;
for i:=1downto 3doa:=a+1;
a=1
a:=1;
for i:=3downto 1doa:=a+1;
a=4
Как изменить шаги?
Задача . На экран вывести квадрат и куб нечетных чисел от 1- 9.
примечание: повтор цикла возрастает в 2-раза.
Решение :
Только с нечетными i -
for i:=1to 9do begin
if???then begin
i2 := i*i;
i3 := i2*i;
writeln(i:4, i2:4, i3:4);
end;
end;
i mod 2 = 1
i2 := i*i;
i3 := i2*i;
writeln(i:4, i2:4, i3:4);
Как изменить шаги–II
Идея: только 5 цифр вывести, переменная kизменяется от 1- 5. начальное значение i равен 1 цикл на каждом шагу изменяет i на 2 значения выше.
Решение :
i := 1;
???
for k:=1to 5do begin
i2 := i*i;
i3 := i2*i;
writeln(i:4, i2:4, i3:4);
???
end;
i := i + 2;
Как изменить шаги ? –III
Идея: вывести только 5 цифр , переменная kизменяется от 1- 5. зная k , вычислить i .
Решение
i=2k-1
k
1
i
1
2
3
3
5
4
5
7
9
for k:=1to 5do begin
???
i2 := i*i;
i3 := i2*i;
writeln(i:4, i2:4, i3:4);
end;
i := 2*k – 1;
задание
"4":ввестиaиb, вычислить квадрат и куб между этими цифрами.
пример:
ввестиИнтервалы границ:
46
4 16 64
5 25 125
6 36 216
"5": вычислить квадрат и куб десяти цифр , расположенных по правилу1, 2, 4, 7, 11, 16, …
пример:
111
248
41664
...
46 2116 97336
Тема 5. Условные операторы
IF
CASE
Неопределенное количество шагов цикла
Пример : разрезать ветку дерева . Сколько раз нужно двигать ручной пилой ?
задача: (
Найти : определить сколько шагов нужно сделать .
Решение : еслиn=0то нужно остановиться , продолжаем до " n0 ".
n
123
count
0
12
1
1
2
0
3
Алгоритм
начало
Ввести n
Счет цифр приравнивется к нулю
count:= 0 ;
выполняем пока
“ n 0 “
n0?
нет
иә
count
count:=count+1;
n:=ndiv10;
конец
Программа
program qq;
var n, count: integer;
begin
writeln(’ввести целое число’);
read(n);
count := 0;
while n 0 do begin
count := count + 1;
n := n div 10;
end;
writeln(’числа’,count, ’найдена цифра’);
end.
, n1: integer;
n1 := n;
" n0 “ выполняется пока
while n 0 do begin
count := count + 1;
n := n div 10;
end;
n1,
do begin { тело цикла } end; особенности: Применяется в сложных условиях Если в теле цикла один оператор , begin и end не пишется: Применяется в сложных условиях Если в теле цикла один оператор , begin и end не пишется: while (a d o begin { тело ц икла } end; while a d o a := a + 1;" width="640"
Оператор повторения или цикл с предусловием
whileусловие повторенияdobegin
{тело цикла}
end;
особенности:
Применяется в сложных условиях Если в теле цикла один оператор , begin и end не пишется:
Применяется в сложных условиях
Если в теле цикла один оператор , begin и end не пишется:
while(ado begin
{телоцикла}
end;
whilea do
a := a + 1;
b d o a := a – b; a := 4; b := 6; while a d o d := a + b;" width="640"
Операторы повторения
a := 4; b := 6;
whilea bdo
a := a – b;
a := 4; b := 6;
whilea do
d := a + b;
b d o a := a + 1; 1 р b = -2 a := 4; b := 6; while a d o b := a - b; Программа не работает a := 4; b := 6; while a d o a := a - 1;" width="640"
Сколько раз повторяется Цикл?
2 раза
a=6
a := 4; b := 6;
whilea doa := a + 1;
1 р
a=10
a := 4; b := 6;
whilea doa := a +b;
0 р
a=4
a := 4; b := 6;
whilea bdoa := a + 1;
1 р
b=-2
a := 4; b := 6;
whilea dob := a - b;
Программа не работает
a := 4; b := 6;
whilea doa := a - 1;
= b d o begin { цикл } i := i - 1; end; for i:=a downto b d o begin { цикл } end; for - на while –можно менять . while - на for - , если заранее известно кол-во шагов цикла, то можно менять операторы." width="640"
For-оператор цикла с параметром
while- цикл с предусловием
REPEAT –цикл с постусловием
i := 1;
whilei dobegin
{цикл}
i := i + 1;
end;
fori:=1 to 10dobegin
{тело цикла}
end;
i := a;
whilei= bdobegin
{цикл}
i := i - 1;
end;
fori:=a downto bdo
begin
{цикл}
end;
for- наwhile–можно менять.
while- наfor-,если заранее известно кол-во шагов цикла,то можно менять операторы.
0.001? нет да S S := S + a; новый элемент конец a := z*b/c; b := b + 1; c := 2*c; z := -z; изменение" width="640"
Алгоритм
начало
Начальное значение
S:= 0 ; b:=1;c:= 2 ; z:=-1;a:=1;
S:= 0 ;
1-й элемент
a:=1;
|a|0.001?
нет
да
S
S:=S+a;
новый элемент
конец
a := z*b/c;
b:=b + 1;c:=2*c; z:=-z;
изменение
0.001 do begin S := S + a; a := z * b / c; z := - z; b := b + 1; c := c * 2; end; writeln('S =', S:10:3); end. Начальное значение S := 0; z := -1; b := 1; c := 2; a := 1; Сумма возрастает z := - z; b := b + 1; c := c * 2; Учет элементов Перейти к следующему" width="640"
Программа
program qq;
var b, c, z: integer;
S, a: real;
begin
S := 0; z := -1;
b := 1; c := 2; a := 1;
while abs(a) 0.001 do begin
S := S + a;
a := z * b / c;
z := - z;
b := b + 1;
c := c * 2;
end;
writeln('S =', S:10:3);
end.
Начальное значение
S := 0; z := -1;
b := 1; c := 2; a := 1;
Сумма возрастает
z := - z;
b := b + 1;
c := c * 2;
Учет элементов
Перейти к следующему
Задание
"4": найти сумму элементов с точностью0,001 :
ответ :
S = 1.157
"5":
ответ:
S = 1.220
0? нет Условие вывода да основной алгоритм Блок «типовой процесс» конец" width="640"
циклический алгоритм
начало
ввести n
Тело цикла
n0?
нет
Условие вывода
да
основнойалгоритм
Блок «типовой процесс»
конец
0; ... { основной алгоритм } end. repeat writeln(‘ ввести число '); read(n); until n 0; Условие вывода until n 0; особенности: Тело цикла должно повторится хотя бы 1 раз until («антил…до") после этого слова вывод условия Тело цикла должно повторится хотя бы 1 раз until («антил…до") после этого слова вывод условия" width="640"
Программа
program qq;
var n: integer;
begin
repeat
writeln('Введите положительное число');
read(n);
until n 0;
...{основной алгоритм}
end.
repeat
writeln(‘ввести число');
read(n);
until n 0;
Условие вывода
until n 0;
особенности:
Тело цикла должно повторится хотя бы 1 раз until («антил…до") после этого слова вывод условия
Тело цикла должно повторится хотя бы 1 раз
until («антил…до") после этого слова вывод условия
b; 1 р a = 10 a := 4; b := 6; repeat a := a + b ; until a b; a := 4; b := 6; repeat a := a + b ; until a a := 4; b := 6; repeat b := a - b ; until a 2 р b = 6 a := 4; b := 6; repeat a := a + 2 ; until a" width="640"
Сколько раз выполняется Цикл?
3 раза
a= 7
a := 4; b := 6;
repeata := a + 1; until a b;
1 р
a=10
a := 4; b := 6;
repeata := a +b; until a b;
a := 4; b := 6;
repeata := a +b; until a
a := 4; b := 6;
repeatb := a -b; until a
2 р
b= 6
a := 4; b := 6;
repeata := a +2; until a
Тема6. операторы выбораCASE
операторы выбора при множнственном разветвлении
задача: по вводу номеру месяца, вывести количество дней.
0 then writeln(‘ в этом месяце ', D, ' дней ') else writeln(‘ не правильный номер месяца '); end. case M of 2: begin D := 28; end; 4,6,9,11: begin D := 30; end; 1,3,5,7,8,10,12: D := 31; else D := -1; end; ешбір нұсқасы сәйкес келген жоқ" width="640"
Программа
program qq;
var M, D: integer;
begin
writeln(‘ввести номер месяца:');
read ( M );
caseM of
2: begin D := 28; end;
4,6,9,11: begin D := 30; end;
1,3,5,7,8,10,12: D := 31;
else D := -1;
end;
if D 0 then
writeln(‘в этом месяце', D, 'дней')
else
writeln(‘не правильный номер месяца');
end.
caseM of
2: begin D := 28; end;
4,6,9,11: begin D := 30; end;
1,3,5,7,8,10,12: D := 31;
else D := -1;
end;
ешбір нұсқасы сәйкес келген жоқ
операторы выбораcase
особенности:
case - имя переменной или целый тип ( integer ) арифметическое выражение
case - имя переменной или целый тип ( integer ) арифметическое выражение
или символьный типт ( char ) арифметическое выражение
или символьный типт ( char ) арифметическое выражение
casei+3of
1: begin a := b; end;
2: begin a := c; end;
end;
var c: char;
...
casecof
'а': writeln(‘1111');
'б': writeln(‘2222');
elsewriteln(‘не знаю');
end;
операторы выбора
Если выполняется только один оператор , begin и end можно не записывать Нельзя писать одинаковые слова в программе
Если выполняется только один оператор , begin и end можно не записывать
функция координат показана в математической системе , а график координат показан в пикселях на экране компьютера
87
87
Изменение Координат
Координаты в математической системе
Координаты экранной системы (пиксель)
Y
a
(0,0)
x
yэ
(x,y)
b
xэ
y
(xэ,yэ)
X
(0,0)
k –масштаб
xэ=a+kx
yэ=b-ky
87
87
Программа
program qq;
const a = 50; b = 200; k = 50;
xmin = 0; xmax = 6.2832;
var x, y, h: real;
xe, ye, w: integer;
begin
w := round((xmax - xmin)*k);
Line(a-10, b, a+w, b);
Line(a, 0, a, 2*b);
x := xmin;h := 0.05;
while x
y := 3*sin(x);
xe := a + round(k*x);
ye := b - round(k*y);
Point(xe, ye);
x := x + h;
end;
end.
2 π
h – x-шаги изменения
на экране
w – ОХ длина оси
( количествопиксель)
ось координат
цикл построения графика
?
недостатки?
87
98
Как соединить точки?
Алгоритм:
Программа:
Логические переменные
Если есть одна точка ( x э , y э ) перейти к точке
иначе
( x э , y э ) отрезок
var first: boolean;
...
begin
...
first := True;
while x
...
if first then begin
MoveTo(xe, ye);
first := False;
end
else LineTo(xe, ye);
...
end;
end.
Начальное значение
Выбор действия
98
98
Задание
"4":наинтервале[-3,3]
построить график функцииy = x2
"5": Построить график функции(эллипс)
98
98
Тема 9. Процедуры
98
Процедуры
Задача : Построить фигуру :
Особенность : 3 фигуры похожи.
Общее: размеры , углы поворота
Отличия : координаты, цвета
Общее: размеры , углы поворота Отличия : координаты, цвета
98
98
Процедуралар
Процедура – вспомогательные операторы для выполнения некоторых действий.
Применение:
программаның әр жерінде орналасқан бірдей әрекеттерді орындау программаны түсіну оңай болу үшін оны бірнеше қосалқы бөліктерге бөлу
программаның әр жерінде орналасқан бірдей әрекеттерді орындау
программаны түсіну оңай болу үшін оны бірнеше қосалқы бөліктерге бөлу
Негізгі есеп
Көмекші есеп3
Көмекші есеп 2
Көмекші есеп1
3 .2
3 .3
3 .1
2 .3
2 .2
2 .1
1.3
1.2
1.1
98
103
Процедуралар
Есепті орындау тәртібі:
бірдей немесе ұқсас әрекеттерді ерекшелеп алу (үш фигура) олардың ұқсас жерлері (өлшемі, пішіні, айналу бұрышы) мен айырмашылықтарын (координаталары, түсі) табу айырмашықтарын белгісіз айнымалылар түрінде өрнектеу, осы айнымалылар процедураның параметрлері болады
бірдей немесе ұқсас әрекеттерді ерекшелеп алу (үш фигура)
олардың ұқсас жерлері (өлшемі, пішіні, айналу бұрышы) мен айырмашылықтарын (координаталары, түсі) табу
айырмашықтарын белгісіз айнымалылар түрінде өрнектеу, осы айнымалылар процедураның параметрлері болады
параметрлер
тақырыбы
(x,y-60)
procedure Tr( x, y, r, g, b: integer);
begin
MoveTo(x, y);
LineTo(x, y-60);
LineTo(x+100, y);
LineTo(x, y);
Brush(1, r, g, b);
Fill(x+20, y-20);
end;
60
(x+100,y)
түс
MoveTo(x, y);
LineTo(x, y-60);
LineTo(x+100, y);
LineTo(x, y);
Brush(1, r, g, b);
Fill(x+20, y-20);
100
(x,y)
координаталар
процедура тұлғасы
103
104
Программа
формальды параметрлер
60
program qq;
begin
Pen(1, 255, 0, 255);
Tr(100, 100, 0, 0, 255);
Tr(200, 100, 0, 255, 0);
Tr(200, 160, 255, 0, 0);
end.
procedure Tr( x, y, r, g, b: integer);
begin
...
end;
(100,100)
100
процедураны шақырулар
процедура
нақтылы параметрлер
104
104
Процедуралар
Ерекшеліктері:
барлық процедуралар негізгі программаның үстінде орналасқан процедураның тақырыбында формальды параметрлер жазылады, олар кейде өзгеріп отыратындықтан атаулармен белгіленеді процедураны шақыру кезінде жақша ішінде нақтылы параметрлер(сандар немесе арифметикалық өрнектер) көрсетіледі
барлық процедуралар негізгі программаның үстінде орналасқан
процедураның тақырыбында формальды параметрлер жазылады, олар кейде өзгеріп отыратындықтан атаулармен белгіленеді
процедураны шақыру кезінде жақша ішінде нақтылы параметрлер(сандар немесе арифметикалық өрнектер) көрсетіледі
procedure Tr( x, y, r, g, b: integer);
Tr(200, 100, 0, 255, 0);
x
y
r
g
b
104
104
Процедуралар
Ерекшеліктері:
әрбір формалды параметрдің қос нүктеден кейін типі көрсетілуі қажет егер типтері бірдей параметрлер бірінен кейін бірі орналасса, олардың арасы үтірмен ажыратылады процедураның ішіндегі параметрлер айнымалылар секілді қолданылады
әрбір формалды параметрдің қос нүктеден кейін типі көрсетілуі қажет
егер типтері бірдей параметрлер бірінен кейін бірі орналасса, олардың арасы үтірмен ажыратылады
процедураның ішіндегі параметрлер айнымалылар секілді қолданылады
procedureA(x: real; y: integer; z: real);
procedureA(x, z: real; y, k, l: integer);
104
104
Процедуралар
Ерекшеліктері:
процедурада қосымша айнымалы ретінде жергілікті (локальді) айнымалыларды пайдалануға болады, басқа процедуралар оған қатынай алмайды
процедурада қосымша айнымалы ретінде жергілікті (локальді) айнымалыларды пайдалануға болады, басқа процедуралар оған қатынай алмайды
program qq;
procedureA(x, y: integer);
var a, b: real;
begin
a := (x + y)/6;
...
end;
begin
...
end.
procedureA(x, y: integer);
var a, b: real;
begin
a := (x + y)/6;
...
end;
локальді айнымалылар
var a, b: real;
104
104
Параметр-айнымалылар
Есеп:екі айнымалы мәндерінің орындарын ауыстыратын процедураны құру.
Ерекшеліктері:
Процедурада жасалған өзгертулер шақырушы программаға белгілі болуы қажет.
Процедурада жасалған өзгертулер шақырушы программаға белгілі болуы қажет.
program qq;
var x, y: integer;
begin
x:= 1; y := 2;
Exchange ( x, y );
writeln ( ’x = ’, x, ’ y = ’, y );
end;
procedure Exchange (a, b: integer );
var c: integer;
begin
c := a; a := b; b := c;
end;
мына процедура параметрлердің көшірмесімен жұмыс істейді
x = 1 y = 2
104
104
Параметр-айнымалылар
параметрлер өзгере алады
procedure Exchange ( a, b: integer );
var c: integer;
begin
c := a; a := b; b := c;
end;
var
Қолданылуы:процедура(және функция) осындай әдіс арқылы бірнеше мән бере алады.
"4": Процедураларды пайдалана отырып, мына фигураны құрастыру .
"5": Процедураларды пайдалана отырып, мына фигураны құрастыру.
Тең қабырғалы үшбұрыш
a
a
0,866∙a
a
104
111
Тақырып10. Рекурсия
111
Рекурсивті объектілер
Мысалдар:
Рекурсияланған сурет:
Факториал:
егер
егер
Рекурсивті объект деп - бір объект немесе дәл осындай бірнеше объект арқылы анықталатын объектіні айтады.
111
111
Пифагор ағашы
Nдеңгейлі Пифагор ағашы – бұл ағаштың діңгегі мен осы діңгектен симметриялы түрде өсіп шыққан N-деңгейлі екі Пифагор ағашы , бұл ағаштардың бағанының ұзындығы 2 есе кем және олардың арасындағы бұрыш 90 o -қа тең .
6 деңгей:
?
Бұның рекурсивті фигура екенін қалай дәлелдеуге болады?
111
114
Пифагор ағашы
Ерекшеліктері:
қашан тоқтау керек? ағаштардың иілу бұрышы әр түрлі
қашан тоқтау керек?
ағаштардың иілу бұрышы әр түрлі
Қалған деңгейлердің саны нөлге тең болғанда!
x1= x0+L·cos(α)
y1= y0–L·sin(α)
α+45o
α-45o
(x1,y1)
L
Еншілес ағаштардың иілу бұрышы
α
α+π/4
α–π/4
(x0,y0)
114
114
0 then begin x1 := x0 + L*cos(a); y1 := y0 - L*sin(a); Line (round(x0), round(y0), round(x1), round(y1)); Pifagor (x1, y1, a + pi/4, L*k, N-1); Pifagor (x1, y1, a - pi/4, L*k, N-1); end; end; егер N=0 болса, аяқтау рекурсивті шақырулар Рекурсивті процедура деп өзін өзі шақыратын процедураны айтады 114 114" width="640"
Процедура
α бұрышы
баған ұзындығы
procedure Pifagor(x0,y0,a,L: real;
N: integer);
const k = 0.6;{ұзындықтың өзгеруі}
var x1, y1: real;{жергілікті айнымалылар}
begin
if N 0 then begin
x1 := x0 + L*cos(a);
y1 := y0 - L*sin(a);
Line(round(x0), round(y0),
round(x1), round(y1));
Pifagor(x1,y1,a+pi/4,L*k, N-1);
Pifagor(x1,y1,a-pi/4,L*k, N-1);
end;
end;
егер N=0 болса, аяқтау
рекурсивті шақырулар
Рекурсивті процедура деп өзін өзі шақыратын процедураны айтады
114
114
Программа
program qq;
procedure Pifagor(x0,y0,a,L: real;
N: integer);
...
end;
begin
Pifagor (250, 400, pi/2, 150, 8);
end;
баған ұзындығы
α бұрышы
x0
деңгейлер саны
y0
?
Ағашты 30oоңға қалай еңкейтуге болады?
Pifagor (250, 400,2*pi/3, 150, 8);
114
117
Задания
"4":Рекурсивті процедураны қолдана отырып, мына фигураны құрастыру:
"5":Рекурсивті процедураны қолдана отырып, мына фигураларды құрастыру:
117
117
Тақырып11. Анимация
117
Анимация
Анимация (ағылш. animation ) – экрандағы кескінге жан бітіру.
Есеп : 400х400 пиксельді көк квадраттың ішімен 20х20 пиксельді сары квадрат солдан оңға қарай жылжып келеді. Программа өз жұмысын Esc пернесін басқанда немесе сары квадрат көк квадраттың оң жақ жетіне жеткен кезде тоқтатады .
Проблема : объектінің экранда қозғалуын қалай кескіндеуге болады?
Қосымша: объектінің қозғалысы (x,y) координаталарымен белгіленеді
= 400-20 then stop := true; until stop; end. процедура көк фон шекараны өшіріп тастау бастапқы жағдайлары Esc пернесімен шығу 10 мс күтеміз шекараға тақалған кезде шығу 117 117" width="640"
Толық программасы
program qq;
var x, y, k, code, i: integer;
stop: boolean;
procedure Draw(x,y: integer; flag: Boolean);
begin
...
end;
begin
Brush(1, 0, 0, 255);
Rectangle(10,10,400,400);
Pen(0, 0, 0, 255);
x := 10; y := 200; stop := false;
repeat
if IsEvent then begin
...
end;
Draw(x, y, True);
Delay(10);
Draw(x, y, False);
x := x + 1;
if x = 400-20 then stop := true;
until stop;
end.
процедура
көк фон
шекараны өшіріп тастау
бастапқы жағдайлары
Escпернесімен шығу
10 мс күтеміз
шекараға тақалған кезде шығу
117
117
Тапсырмалар
"4":Екі квадрат бір біріне қарама-қарсы бағытта қозғалады:
"5":Екі квадрат бір біріне қарама-қарсы бағытта қозғалады және көк квадраттың қабырғасына соқтығысып кері бағытта жылжиды:
117
117
Пернелермен басқару
Есеп: көк квадраттың ішінде орналасқан сары квадрат бағыттаушы пернелермен басқарылатындай болуы керек. Пернелердің коды:
солға –37жоғары –38Esc –27
оңға –39төмен –40
Проблема: қозғалыс бағытын қалай өзгертуге болады?
Шығарылуы:
егер перне басылған болса, …
if{оқиға болды}then begin
if{перне басулы}then begin
{перненіңкодын алу -code}
if code = 37 then x := x – 1;
if code = 38 then y := y – 1;
if code = 39 then x := x + 1;
if code = 40 then y := y + 1;
if code = 27 then stop := True;
end;
end;
IsEvent
Event ( k, code, i);
if k = 1 then begin
case code of
37: x := x – 1; 38: y := y – 1;
39: x := x + 1; 40: y := y + 1;
27: stop := True;
end;
117
117
Программасы
program qq;
var x, y, k, code, i: integer;
stop: boolean;
begin
...
repeat
Draw(x, y, True);
Delay(20);
Draw(x, y, False);
until stop;
end.
процедура
procedure Draw(x,y: integer; flag: Boolean);
begin
...
end;
негізгі цикл
оқиғаларды өңдеу
if IsEvent then begin
...
end;
?
Кемшілігі?
117
127
Жыпылықтауды қалай кетіруге болады?
Проблема : ешбір перне басылмағанның өзінде де квадрат әр 20 мс сайын басқа түске боялып тұрады(жыпылықтау!)
Бізге қажеттісі: ешқандай оқиға болмаса квадратты басқа түстерге боямау (жыпылықтатпау)
Шығарылуы : квадратты бояп тастап, оқиғаны күту
Жаңа проблема : оқиғаны қалай күтеміз ?
Жаңа проблеманың шығарылуы : бос цикл « оқиға болмайынша ештеме істеме ":
while not IsEvent do;
127
127
Программасы
program qq;
var x, y, k, code, i: integer;
stop: boolean;
begin
...
repeat
Draw(x, y, True);
while not IsEvent do;
until stop;
end.
процедура
procedure Draw(x,y: integer; flag: Boolean);
begin
...
end;
квадраттың суретін саламыз
оқиғаны күтеміз
while not IsEvent do;
енді өшіруге болады
Draw(x, y, False);
Event(k, code, i);
...
?
Нені жақсартуға болады?
127
129
Тапсырмалар
"4":Квадрат бағыттауыш пернелерді басқан бағытта жылжып отырады, алайда көк квадраттың шекарасынан асып кете алмайды:
"5":Квадрат үздіксіз қозғалып отырады, бағыттауыш пернелер басылған кезде өз бағытын өзгертеді және көк квадраттың қабырғаларына соқтығысып кері жылжып отырады:
129
129
Айналу
Есеп : Жердің Күнді айналу моделін бейнелеу.
Проблема : шеңбер бойымен айналу, координаталарды қалай өзгертіп отыруға болады?
Шығарылуы : тәуелсіз айнымалы ретінде α –ның айналу бұрышын қолдану (циклде өзгерту)
(x,y)
L
x= x0+L·cos(α)
y= y0–L·sin(α)
α
(x0,y0)
129
129
Процедура
сурет салу ( True ) немесе салмау ( False ) ?
procedure Draw(x, y: integer; flag: boolean);
const r = 10;
begin
if flagthen
Brush(1, 100, 100, 255)
else
Brush(1, 0, 0, 0);
Ellipse(x-r, y-r, x+r, y+r);
end;
Жердің радиусы
суретін саламыз: қылқалам түсі – көгілдір
суретті өшіреміз: қылқалам түсі – қара
тек қана құю!
(x-r,y-r)
(x,y)
(x+r,y+r)
129
129
Тұрақтылар мен айнымалылар
program qq;
const rSun = 60;{Күннің радиусы}
L= 150;{Жер орбитасыныңрадиусы}
x0 = 200;{Күн центрінің координаталары}
y0 = 200;
var x, y,{Жердіңкоординаталары}
k, code, i: integer;{ Eventүшін}
a,ha: real;{айналу бұрышы,қадам}
stop: boolean;{программаны тоқтату белгісі}
begin
...
end.
procedure Draw(x,y: integer; flag: Boolean);
begin
...
end;
129
129
Негізгі программа
program qq;
...
begin
Brush(1, 0, 0, 0);Fill(1,1);
Brush(1, 255, 255, 0);
Ellipse(x0-rSun, y0-rSun, x0+rSun, y0+rSun);
a := 0; ha := 1*pi/180;{бастапқы бұрыш, 100 мс-та 1oқадам}
stop := false;
Pen(0,0,0,0);{контурларды өшіріп тастаймыз}
repeat
x := round(x0 + L*cos(a));
y := round(y0 - L*sin(a));
Draw(x, y, True);
Delay(100);
Draw(x, y, False);
a := a + ha;
until stop;
end.
фонды қара түске бояу
Күннің суретін саламыз
жаңа координаталар
100 мс күтеміз
if IsEvent then begin
Event(k, code, i);
if (k = 1) and (code = 27) then stop := true;
end;
haбұрышына бұрылу
129
129
Тапсырмалар
"4":Күнді айналып жүрген екі планетаның моделін бейнелеу, планеталар бір-біріне қарама-қарсы бағытта қозғалатын болсын:
"5":Күн-Жер-Ай жүйесінің моделін бейнелеу:
129
129
Тақырып12. Кездейсоқ сандар
129
Кездейсоқ сандар
Кездейсоқ көріністер : барлық жерде…
тиынды лақтыру ("орел" немесе "решка") қардың түсуі броундық қозғалыс телефон байланысында болатын ақаулар радиоэфирдің шуы
тиынды лақтыру ("орел" немесе "решка")
қардың түсуі
броундық қозғалыс
телефон байланысында болатын ақаулар
радиоэфирдің шуы
Кездейсоқ сандар – бұған дейінгі сандардың ретін біліп отырсақ та, келесі санның қандай екені белгісіз болатын сандардың тізбегін айтады.
Проблема : компьютерде осыны қалай алуға болады?
Мүмкін болатын шешімдері :
шу ақауларының сыртқы көздерін пайдалану
математикалық түрлендірулерді пайдалану
129
129
Жалған кездейсоқ сандар
Жалған кездейсоқ сандар – бойында кездейсоқ сандардың қасиеті бар, бірақ әрбір келесі сан алдын ала берілген формула бойынша есептелетін сандардың тізбегін айтады.
Модель : қар бұршақтары [a,b] кесіндісінің аралығына түседі
орналасуы
бірқалыпты
бірқалыпты емес
a
a
b
b
?
Әр түрлі орналастырулардың саны қанша болуы мүмкін?
129
139
Кездейсоқ сандардың орналасуы
Ерекшеліктері :
орналасу – бұл бір ғана санның емес бүкіл тізбектің сипаттамасы бірқалыпсыздардың саны – көп кез келген бірқалыпсыз орналасуды бірқалыпты орналасудың көмегімен алуға болады.
орналасу – бұл бір ғана санның емес бүкіл тізбектің сипаттамасы
бірқалыпсыздардың саны – көп
кез келген бірқалыпсыз орналасуды бірқалыпты орналасудың көмегімен алуға болады.
a
a
b
b
бірқалыпты орналасу
бірқалыпсыз орналасу
139
139
Паскальдегі кездейсоқ сандардың генераторы
[0,N]интервалындағы бүтін сандар:
var x: integer;
...
x := random ( 100 );{интервал[0,99] }
[0,1]интервалындағы бүтін сандар:
var x: real;
...
x := random;{интервал[0,1] }
139
139
Кездейсоқ сандар
Есеп : 400х300 пиксельді тіктөртбұрыштың ішін түстері кездейсоқ нүктелермен бірқалыпты етіп толтыру.
Нүктенің кездейсоқ координаталарын қалай алуға болады?
x := random ( 400 );
y := random ( 300 );
x := random ( 400 );y := random ( 300 );
Бірқалыптылықты қалай алуға болады?random функциясы қолданылса автоматты түрде қамтамасыз етіледі
Кездейсоқ түстерді қалай алуға болады?
Pen (1, random(256), random(256), random(256));
Point ( x, y );
Pen (1, random(256), random(256), random(256));Point ( x, y );
"5":Үшбұрыштың ішін түстері кездейсоқ болатын нүктелермен толтыру. (бірқалыпты немесе бірқалыпты емес).
Қосымша көмек: бұрышы 45оболатын теңбүйірлі үшбұрышты алу керек.
(100,100)
(300,200)
139
139
Тақырып13. Функциялар
139
Функциялар
Функция – нәтижесі қандай да бір мәнге ие болатын көмекші алгоритм (қосалқы программа).
Мысалдар :
, ,есептеуөрнектерді күрделі формулалармен есептеусұраққа жауап (жай сан ба, әлде жай сан емес пе?)
, ,есептеу
өрнектерді күрделі формулалармен есептеу
сұраққа жауап (жай сан ба, әлде жай сан емес пе?)
Неліктен?
программаның әр жерінде орналасқан бірдей есептеулерді орындау үшінфункциялардың жалпыға бірдей кітапханаларын құру үшін
программаның әр жерінде орналасқан бірдей есептеулерді орындау үшін
функциялардың жалпыға бірдей кітапханаларын құру үшін
?
Процедурадан айырмашылығы неде?
139
146
b then Max := a else Max := b; end. бұл функцияны нәтижесі 146 146" width="640"
Функциялар
Есеп: екі санның үлкенін анықтайтын функция құру және оны қолдануға мысал келтіру
Функция:
формальды параметрлер
function Max (a, b: integer): integer;
begin
if a b then Max := a
else Max := b;
end.
бұл функцияны нәтижесі
146
146
Функциялар
Ерекшеліктері:
тақырыбы function сөзімен басталады функцияда формальды параметрлер процедурадағыдай сипатталады айнымалы параметрлерді пайдалануға болады тақырыптың соңында қоснүктеден кейін нәтиженің типі көрсетіледі функциялар негізгі программадан ЖОҒАРЫ орналасады
тақырыптың соңында қоснүктеден кейін нәтиженің типі көрсетіледі
функциялар негізгі программадан ЖОҒАРЫ орналасады
Max (a, b: integer): integer;
function
function qq( a, b: integer; x: real ): real;
a, b: integer; x: real
function Max ( a, b: integer): integer;
var
function Max (a, b: integer): ;
integer
146
148
Функциялар
Ерекшеліктері:
жергілікті айнымалыларды жариялауға және пайдалануға болады нәтиже болатын мән - аты функцияның атымен сәйкес келетін айнымалыға жазылады; оны жариялаудың ҚАЖЕТІ ЖОҚ :
жергілікті айнымалыларды жариялауға және пайдалануға болады
нәтиже болатын мән - аты функцияның атымен сәйкес келетін айнымалыға жазылады; оны жариялаудың ҚАЖЕТІ ЖОҚ :
function qq (a, b: integer): float;
begin
...
end;
var x, y: float;
function Max (a, b: integer): integer;
begin
...
end;
!
Max := a;
Delphi-де:
Result:=a;
148
149
Программа
program qq;
var a, b, max: integer;
begin
writeln(‘Екі сан енгіз');
read(a, b);
max := Max ( a, b );
writeln(‘Санның үлкені',max );
end.
c
function Max (a, b: integer): integer;
begin
...
end;
нақты параметрлер
функцияны шақыру
c
c
!
Айнымалылардың, функциялардың және процедуралардың аттары бірдей болмауы керек!
149
150
Логикалық функциялар
Есеп:енгізілген санның - жай сан екендігін анықтайтын функция құру.
Ерекшеліктері:
жауабы – логикалық мән (TrueнемесеFalse)функцияның нәтижесінif, whileшарттарында логикалық шама ретінде қолдануға болады
жауабы – логикалық мән (TrueнемесеFalse)
функцияның нәтижесінif, whileшарттарында логикалық шама ретінде қолдануға болады
Алгоритм:2-денN-1-ге дейінгі аралықтағы бөлгіштердің санын есептейміз,егер олардың саны нөлге тең болмаса енгізілген санның - құрама сан болғаны.
Алгоритм:2-денN-1-ге дейінгі аралықтағы бөлгіштердің санын есептейміз,егер олардың саны нөлге тең болмаса енгізілген санның - құрама сан болғаны.
count := 0;
for i:=2 to N-1 do
if N mod i = 0 then
count := count + 1;
if count=0 then
{Nсаны – жай сан}
else{Nсаны – құрама сан}
for i:=2 to N-1 do
if N mod i = 0 then
count := count + 1;
?
Қалай жақсартуға болады?
150
151
Логикалық функциялар
program qq;
var N: integer;
begin
writeln(‘Бүтін сан енгіз');
read(N);
if Prime(N) then
writeln(N, ' –жайсан')
else writeln(N, ' –құрама сан');
end.
нәтижесі – логикалық мән
function Prime (N: integer): boolean;
var count, i: integer;
begin
i := 2; count := 0;
while i*i
if N mod i = 0 then count := count + 1;
i := i + 1;
end;
Prime := (count = 0);
end;
таңдап алу тек -ге дейін
шарт дегеніміз – логикалық мән
функцияны шақыру
151
151
Тапсырмалар
"4":1-денN-ге дейінгі сандардың қосындысын анықтайтынфункция құру және оны қолдануға мысал келтіру.
Мысал:
Сан енгіз:
100
қосынды = 5050
"5":Шахматты ойлап шығарған адамныңN-ші торға неше бидайдың қоюын сұрағанын анықтайтын функция құру.( 1-шісіне – 1 дән, 2-шісіне – 2 дән, 3-шісіне – 4 бидай дәнін, …)
Мысал:
Тордың нөмірін енгіз:
28
28-шісі торда 134217728 бидай дәні.
151
151
Тапсырмалар (2-нұсқа)
"4":Екі натурал санның ең үлкен ортақ бөлгішін анықтайтын функция құру және оны қолдануға мысал келтіру.
Мысал:
Екі сан енгіз:
14 21
ЕҮОБ(14,21)=7
"5":Синус функциясын қатардың қосындысы секілді есептейтін функция құру. (0.001 дәлдікпен)