Press "Enter" to skip to content

Pascal proqramlaşdırma dili

73 слайд 73
Задания
“4”: Найти сумму элементов последовательности с точностью 0,001:

Pascal programlaşdırma dilinə aid təqdiamt .

В настоящий момент дополнительные накопительные скидки (от 2% до 25%) предоставляются 56.125 образовательным учреждениям . Чтобы узнать, какая скидка действует для всех сотрудников Вашего образовательного учреждения, войдите в свой личный кабинет “Инфоурок”.

  • Сейчас обучается 23 человека из 14 регионов

Курс профессиональной переподготовки

Информатика: теория и методика преподавания с применением дистанционных технологий

Учитель информатики
от 6800 руб. от 3400 руб.
Базовая скидка для всех: 40%
Дополнительная скидка: 10% ( только до 11 марта )

К данной скидке мы можем добавить скидку Вашего образовательного учреждения (она зависит от того, сколько Ваших коллег прошло курсы “Инфоурок”)

В настоящий момент дополнительные накопительные скидки (от 2% до 25%) предоставляются 56.125 образовательным учреждениям . Чтобы узнать, какая скидка действует для всех сотрудников Вашего образовательного учреждения, войдите в свой личный кабинет “Инфоурок”.

Курс повышения квалификации

Методы и инструменты современного моделирования

от 1900 руб. от 950 руб.
Базовая скидка для всех: 40%
Дополнительная скидка: 10% ( только до 11 марта )

К данной скидке мы можем добавить скидку Вашего образовательного учреждения (она зависит от того, сколько Ваших коллег прошло курсы “Инфоурок”)

В настоящий момент дополнительные накопительные скидки (от 2% до 25%) предоставляются 56.125 образовательным учреждениям . Чтобы узнать, какая скидка действует для всех сотрудников Вашего образовательного учреждения, войдите в свой личный кабинет “Инфоурок”.

Подготовка и проведение презентации в PowerPoint

240 руб. 120 руб.

Описание презентации по отдельным слайдам:

1 слайд 1
Pascal dilində proqramlaşdırma
© Polyakov K.Y. 2006-2007
Giriş
Budaqlanma
Mürəkkəb şərt
Dövrler
Şərtə görə dövrlər
Seçım operatoru

Qrafika
Funksiyaların qrafikləri
Proseduralar
Rekursiya
Animasiya
Təsadüfi ədədlər
Funksiyalar

2 слайд 2
Pascal dilində proqramlaşdırma
Mövzu1.
Giriş
© Polyakov K.Y, 2006-2007

3 слайд 3
Alqoritm
Alqoritmin xassələr:
diskretlik: ayri-ayri addımlardan ibarətdir (komanda)
aydınlıq: ancaq istifadəçiyə tanışolan komandalardan ibarət olmalıdır (İSK aid olanlar)
Müəyyənlık: eynibir ilkin verilenelr üçün her zaman eyni cavabı verir
Nəticəlilik: müəyyən sayda addımlardan sonra sona çatır
Kütləvilik: müxtəlif ilkin verilənlərlə dəfələrlə yerinə yetirilə bilər
konkretlik: hər bir mümkün olan ikin verilənlər üçün dəqiq nəticə verilir
Alqoritm – istifadəçi üçün dəqiq planlaşdırılımış əməliyyatlar ardıcıllığıdır.

4 слайд 4
Proqram
Proqram –
hər hansı bir proqramlaşdırma dilində yazılmış alqoritmdir
Kompyuter üçün komandalar ardıcıllığıdır
Komanda– kompyuterin yerine yetirəcəyi əməliyyatların təsviridir.
ilkin verilənleəri haradan alaq?
onlarla ne etmək olar?

5 слайд 5
Proqramlaşdırma dilləri
Maşın yönümlü (aşağı səviyyəli) – hər bir komanda prosessorun bir əmrinə uygun gəlir (assembler)
Yüksek səviyyəli – istifadəçi tərəfindən asan başa düşülə bilən,danışıq dilinə (ingilis dilinə) yaxın olan və konkret olaraq kompyuterin növünden asılı olmayan
Yeni öyrənənlər üçün : Beyzik,Loqo,Pascal
Peşəkarlar üçün: Си, Фортран, Паскаль
Süni intilllekt meselelri üçün: Пролог, ЛИСП
Internet üçün: JavaScript, Java, Perl, PHP, ASP

6 слайд 6
Pascal dili
1970 – Niklaus Virt (Швейцария)
tələbələri öyretmek üçün istifadə edib
«yuxarıdan aşağıya» prinsipi ilə proqram tərtibi

müxtəlif strukturlu verilənlər(massıvlər, strukturlar, çoxluqlar)
Altməsələ1
Altməsələ2
Altməsələ3
1.1
1.2
1.3
2.1
2.2
2.3
3.1
3.2
3.3
Məsələ

7 слайд 7
Proqramın sturkturu necədir?
program ;
const …;
var …;

8 слайд 8
Proqramın sturkturu nədən ibarətdir?
sabit – adı olan sabit kəmiyyət.
Dəyişən – adı olan dəyişən kəmiyyət(yaddaşın oyuğu).
proseduralar – bəzi əməliyyatları təsvir edən yardımçı alqoritmlər (şevrənin çəkilməsi).
funksiya – hesablamaları aparmaq üçün yardımçı alqoritmlər (kvadrat kökün hesablanamsı, sin).

9 слайд 9
Proqramın,dəyişənlərin,sabitlərin adları (identifikatolar)
Adlar aşağıdakılardan ibarət ola bilər
Latın herifləri (A-Z)

Altdan xətt _
Böyük və kiçik həriflər fərqlənmir
Adlarda istifadə oluna bilməz:
Rus əlifbasının hərifləri
boşluq
Mötərizələr(), +, =, !, ? və digər simvollar.
Adlar rəqəmlə başlaya bilməz
Hansı adlar düzgün sayıla bilər?
AXby R&B 4Wheel Вася “PesBarbos” TU154 [QuQu] _ABBA A+Bər

10 слайд 10
Sabitlər
const
i2 = 45; < tam ədəd >
pi = 3.14;

L = True; < məntiqi kəmiyyət >
целая и дробная часть отделяются точкой
можно использовать русские буквы!
Iki qiymət ala bilər:
True (doğru , «hə»)
False (yalan, «yox»)

11 слайд 11
Dəyişənlər
Dəyişən – adı,tipi və qiyməti ola bilən kəmiyyətdir.Dəyişən qiymətini proqramın yerinə yetirləməsi zamanı dəyişə bilər.
Dəyişənin tipləri:
integer
real< həqiqi >
char< simvol >
string< simvollar sətri >
boolean < məntiqi >
Dəyişənlərin elan edilməsi (yaddaşın ayrılması):
var a, b: integer;
Q: real;
s1, s2: string;

12 слайд 12
Dəyişənin qiymətini necə dəyişmək olar?
Operator– Yüksək səviyyəli proqramlaşdırma dilinin komandasıdır.
Mənimsətmə operatoru- dəyişənin qiymətini dəyişmək üçündür .
program qq;
var a, b: integer;
begin
a := 5;
b := a + 2;
a := (a + 2)*(b – 3);
end.
a
?
5
5
b
?
5+2
7
a
5
7*4
28
Hümunə:

13 слайд 13
Mənimsətmə operatoru
Umumi struktur:
Riyazi ifadəyə daxil ola bilər:
Sabitlər
Dəyişən adları
Riyazi işarələr:
+ – * / div mod

14 слайд 14
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.
Hansı operatorlar doğru deyil?
Dəyişənin adı :=-işarəsindən solda yerləşməlidir
Ədədin tam və kəsir hissəsi nöqtə ilə ayrılmalıdır
Tam tipli dəyişənə həqiqi tipli ədəd mənimsətmək olmaz

15 слайд 15
Proqramın “əllə” yerinə yetirilməsi
program qq;
var a, b: integer;
begin
a := 5;
b := a + 2;
a := (a + 2)*(b – 3);
b := a div 5;
a := a mod b;
a := a + 1;
b := (a + 14) mod 7;
end.

16 слайд 16
Əməliyyatların yerinə yetirilmə ardıcıllığı
Mötərizənin içi hesablanır
vurma, bölmə, div, mod soldan sağa
Toplama və çıxma soldan sağa
z := (5*a*c+3*(c-d))/a*(b-c)/ b;
x:=(a*a+5*c*c-d*(a+b))/((c+d)*(d-2*a));
2 3 5 4 1 7 8 6 9
2 6 3 4 7 5 1 12 8 11 10 9

17 слайд 17
İki ədədin cəmi
Tapşırıq. İki ədədi daxil et və cəmi ekrana çapa ver
Sadə həll:
program qq;
var a, b, c: integer;
begin
read(a,b);
c:=a + b;
writeln(c);
end.

20 слайд 20
Çapın formatları
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.35Cəmi simvolların sayı
Cəmi simvolların (ayrılan yer) sayı
Nöqtədən sonra rəqəmlərin sayı (kəsr hissə)

21 слайд 21
Məsələnin tam həlli
program qq;
var a, b, c: integer;
begin
writeln(‘İki tam ədəd daxil edin’);
read ( a, b );
c := a + b;
writeln ( a, ‘+’, b, ‘=’, c );
end.
Протокол:
Введите два целых числа
25 30
25+30=55
Programın çap etdiyi sətir
Istifadəçinin daxil etdiyi verilənlər

22 слайд 22
Xətti alqoritmin blok-sxemi
başlanğıc
son
c := a + b;
Daxil et a, b
“başlanğıc” bloku
Giriş bloku
“əməliyyat” bloku
Çıxış bloku
“son” bloku
Çapa ver c

23 слайд 23
Məsələ
“4”: Üç ədəd daxil edilir.Bu ədədlərin cəmini və hasilini hasablayan proqram yazın.
Nümunə:
üç ədəd daxil edin:
4 5 7
4+5+7=16
4*5*7=140
“5”: üç ədəd daxil edilir.Bu ədədlərin cəmini ,hasilini və ədədi ortasını hesablayan proqram yazin.
nümunə:
Üç ədəd daxil edin:
4 5 7
4+5+7=16
4*5*7=140
(4+5+7)/3=5.33

24 слайд 24
Pascal dilində
proqramlaşdırma
Mövzu 2. Budaqlanma
© Polyakov K.Y, 2006-2007

25 слайд 25
Budaqlanan alqoritmlər
Tapşırıq. .Verilmiş iki tam ədəddən ən böyüyünü çapa verən proqram yazın
Məsələnin məqsədi: iki ədəddən birincisi böyük olarsa ,onu əks halda ikinci ədədi çapa vermək lazımdır.
osobennost: məslənin həlli müəyyən şərtdən asılsıdr (əgər … onda …).
Budaqlanan alqoritm-alqoritmin addımlarının yerinə yetirliməsi ardıcılığının müəyyən şərtdən asılı olmasıdır.

26 слайд 26
I variant . Blok-sxem
başlanğıc
max:= a;
Daxil et a,b
Çap max
a > b?
max:= b;
son

yox
Budaqlanmanın tam forması
“həll“ bloku
əgər a = b?
?

27 слайд 27
I variant. Proqram

max := a;
max := b;
Şərt operatorunun tam forması
program qq;
var a, b, max: integer;
begin
writeln(‘iki tam ədəd daxil et’);
read( a,b );
if a > b then begin

end;
writeln(‘ən böyük ədəd’, max);
end.

28 слайд 28
Şərt operatoru
if then begin

end
else begin

end;
Əsas :
else açar sözündən sonra ; işarəsi qoyulmur
else …açar sözü istfadə olunmaya da bilər (şərt operatorunun tam olmayan forması)
Əgər blokda bir operator istifadə olunursa,begin-end açar sözlərini istifadə etməmək olar

29 слайд 29
Hansı səhvdir?
if a > b then begin
a := b;
end
else
b := a;
end;
if a > b then begin
a := b;
else begin
b := a;
end;
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;
begin
end
begin
end

30 слайд 30
II variant. Blok-sxem
Tam olmayan forma
başlanğıc
max:= a;
Daxil et a,b
Çap max
max:= b;
son
да
нет
b > a?

31 слайд 31
II varinat .Proqram

program qq;
var a, b, max: integer;
begin
writeln(‘iki tam ədədi daxil et’);
read ( a, b );
max := a;
if b > a then
max := b;
writeln (‘ən böyük ədəd ‘, max);
end.
Tam olmayan forma

32 слайд 32
Variant 2b. Program
program qq;
var a, b, max: integer;
begin
writeln(‘iki tam ədəd daxil et’);
read ( a, b );
max := b;
if . then
.
writeln (‘ən böyük ədəd’, max);
end.
max := a;
a > b

33 слайд 33
Səhvi tapın.
if a > b then begin
a := b;
else b := a;
if a > b then begin
a := b;
end;
else b := a;
if a > b then
else begin
b := a;
end;
if a > b then
a := b;
else b := a; end;
a := b
end
a := b

if b >= a then
b := a;

34 слайд 34
Tapşırıq
“4”: Verilmiş üç ədədin ən böyüyünü tapın.
nümunə:
3 ədəd: daxil edin:
4 15 9
Ən böyüyü 15
“5”: Verilmiş beş ədəddən ən böyüyünü tapın.
Пример:
Введите пять чисел:
4 15 9 56 4
Наибольшее число 56

35 слайд 35
Pascal dilində
proqramlaşdırma
Mövzu 3. Mürəkkəb şərtlər
© Polyakov K.Y, 2006-2007

36 слайд 36
Mürəkkəb şərtlər
Tapşırıq. Şirket işə 25-40 до 40 лет включительно. Ввести возраст человека и определить, подходит ли он фирме (вывести ответ “подходит” или “не подходит”).
Особенность: надо проверить, выполняются ли два условия одновременно.
Можно ли решить известными методами?
?

37 слайд 37
I variant.Alqoritm
başlanğıc
Daxil et x
‘uyğundur’
son
да
нет
x >= 25?
да
нет
x ‘uyğun deyil
‘uyğun deyil

38 слайд 38
I variant. Proqram

program qq;
var x: integer;
begin
writeln(‘Yaş həddini daxil et’);
read ( x );
if x >= 25 then
if x writeln (‘uyğundur’)
else writeln (‘uyğun deyil’)
else
writeln (‘uyğun deyil’);
end.

39 слайд 39
II variant.Alqoritm
başlanğıc
Daxil et x
‘uyğundur’
да
нет
x >= 25
и
x ‘uyğun deyil
son

40 слайд 40
Вариант 2. Программа
Mürəkkəb şərt
program qq;
var x: integer;
begin
writeln(‘Yaş həddini d/et’);
read ( x );
if (x >= 25) and (x writeln (‘uyğundur’)
else writeln (‘uyğun deyil’)
end.

41 слайд 41
Mürəkkəb şərt
Mürəkkəb şərt – bir necə sadə şərtlərin məntiqi əməllərlə birləşməsidir:
not – deyil (inkar, inversiya)
and – VƏ (məntiqi vurma, konyuksiya, hər iki şərtin ödənməsi)
or – VƏ YA (məntiqi toplama, dizyunksiya,
heç olazsa bir şərtin ödənməsi)
xor – isklyu ИЛИ (her iki şərtin deyil,ancak bir şərtin ödənnilməsi)
Sadə şərtlər (münasibət)
< >= = <>
Bərabər
Bərabər deyil

42 слайд 42
Mürəkkəb şərtlər
Yerinə yetirilmə ardıcılığı
Mötərizədə olan ifadələr
not
and
or, xor
, >=, =, <>
Əsas qaydalar – hər bir sadə şərt mötərızəyə alınmalıdır
Nümunə:
4 1 6 2 5 3
if not (a > b) or (c <> d) and (b <> a)
then begin
.
end

44 слайд 44
Tapşırıq
“4”: Ayın nömrəsinə əsasən bu ayın hansı fəslə aid olduğunu çapa verin.
Nümune:
ayın nömrəsini daxil et:
4
yaz
“5”: Ввести возраст человека (от 1 до 150 лет) и вывести его вместе с последующим словом “год”, “года” или “лет”.
Пример:
Введите возраст: Введите возраст:
24 57
Вам 24 года Вам 57 лет

45 слайд 45
Pascal dilində
proqramlaşdırma
Mövzu 4. Dövrler
© Polyakov K.Y, 2006-2007

46 слайд 46
Dövrlər
Dövr – eyni ardıcıllıglı əməliyyatların təkrarlanmasıdır.
Addımlarının sayı məlum olan dövrlər
Addımlarının sayı məlum olmayan dövrlər (şərtə görə dövr)
Tapşırıq. 1-dən 8 -ə qədər tam ədədlərin kvadratlarını və kublarını çapa verin (a –dan b-yə qədər).
Əsas xüsusiyyəti : eyni əməliyyatlar 8 dəfə təkrarlanır
Məlum metodlarla həll etmək olarmı?
?

47 слайд 47
Alqoritm
Başlanğıc
i, i2, i3
son
xeyir
Bəli
i i := 1;
i := i + 1;
i2 := i * i;
i3 := i2 * i;
Dövr dəyişəninə ilkin qiymət verək
Təkrarlanma sayını yoxlayaq
Kvadrat və kubu hesablayırıq
Nəticəni çapa veririk
Növbəti I dəyişəninə keçırık

48 слайд 48
Alqoritm (dövr bloku ile)
başlanğıc
i, i2, i3
son
i2 := i * i;
i3 := i2 * i;
i := 1,8
Dövr bloku
Dövrün gövdəsi

49 слайд 49
Program
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.
Dövr dəyişəni
Ilkin qiymət
Son qiymət

50 слайд 50
Dəyişənin qiymətinin azalması ilə dövr
Tapşırıq. 8-dən 1- ə qədər olan tam ədədlərin kvadratlarını və kubunu çapa verən program yazın (yəni tərisnə).
Əsas xüsusiyyət :dövr parametrinin qiyməti azalmalıdırр.
Həlli:
for i:=8 1 do begin
i2 := i*i;
i3 := i2*i;
writeln(i:4, i2:4, i3:4);
end;
downto

52 слайд 52
Dəyişənə görə dövr
Əsas xüsusiyyətlər:
Dövr dəyişəni ancaq tam ədəd olmalıdır (integer)
Addım ancaq 1 ola bilər (to) və ya -1 (downto)
Dövrün gövdəsində bir operator istifadə olunursa , begin- end operatorlarını yazmamak da olar:
Dövrü dəyişənin son qiyməti ilkin qiymətdən kiçik olarsa,onda dövr bir dəfə də olsun yerinə yetirilmir (to) (bu şərt dövr yerine yetirilmədən yoxlanılır)
for i:=1 to 8 do
writeln(‘salam’);

53 слайд 53
Parametra görə dövrlər
Əsas xüsusiyyətlər:
İ dövr dəyişənini qiymətini dəyişmək olmaz (niyə?)
Dəyişənin ilkin və son qoyməti dövrün gövdəsində dəyişdirildikdə addımların sayı dəyişməz:
n := 8;
for i:=1 to n do begin
writeln(‘salam’);
n := n + 1;
end;
Dövr yoxdur

54 слайд 54
Dövr dəyişənə görə
Əsas xüsusiyyətlər:
Bəzi sisitemlərdə dəyişənin ilkin после выполнения цикла во многих системах устанавливается первое значение переменной цикла, при котором нарушено условие:
for i:=1 to 8 do
writeln(‘Привет’);
writeln(‘i=’, i);
for i:=8 downto 1 do
writeln(‘Привет’);
writeln(‘i=’, i);
i=9
i=0
НЕ ДОКУМЕНТИРОВАНО
?

55 слайд 55
Dövr neçə dəfə təkrarlanacaq
a := 1;
for i:=1 to 3 do a := a+1;
a = 4
a := 1;
for i:=3 to 1 do a := a+1;
a = 1
a := 1;
for i:=1 downto 3 do a := a+1;
a = 1
a := 1;
for i:=3 downto 1 do a := a+1;
a = 4

56 слайд 56
for i:=1 to 9 do begin
if . then begin
i2 := i*i;
i3 := i2*i;
writeln(i:4, i2:4, i3:4);
end;
end;
Addımı necə dəyişək?
Tapşırıq. 1-9 qədər tək ədədlərin kvadrat və kublarını çapa verən program yazın.
Əsas xüsusiyyət: dövr dəyişəninin qiyməti 2 addımı ilə dəyişməlidir
Problem : Pascal dilində addım ancaq 1 və ya -1 ola bilər.
Həlli:
i mod 2 = 1
i2 := i*i;
i3 := i2*i;
writeln(i:4, i2:4, i3:4);
Ancaq tək ədədlər üçün yernə yetirilir
problem ?
?

57 слайд 57
Addımı necə dəyişək? – II
ideya: cəmi 5 ədəd şap olunmalıdır, k dəyişəni 1-dən 5 -ə kimi dəyişəcək , i dəyişəninin ilkin qiyməti 1 olacaq,və hər dəfə dövrdə i dəyişənin qiyməti 2 vahid artacaq
Həlli:
.
for k:=1 to 5 do begin
i2 := i*i;
i3 := i2*i;
writeln(i:4, i2:4, i3:4);
.
end;
i := i + 2;
i := 1;

58 слайд 58
Addımı necə dəyişək? – III
İdeya: Cəmi 5 ədəd çapa vermək lazımdır.адо вывести всего 5 чисел, переменная k изменяется от 1 до 5. Зная k, надо рассчитать i.

Решение:
i = 2k-1
for k:=1 to 5 do begin
.
i2 := i*i;
i3 := i2*i;
writeln(i:4, i2:4, i3:4);
end;
i := 2*k – 1;

59 слайд 59
Задания
“4”: Ввести a и b и вывести квадраты и кубы чисел от a до b.
Пример:
Введите границы интервала:
4 6
4 16 64
5 25 125
6 36 216
“5”: Вывести квадраты и кубы 10 чисел следующей последовательности: 1, 2, 4, 7, 11, 16, …
Пример:
1 1 1
2 4 8
4 16 64
.
46 2116 97336

60 слайд 60
Pascal dilində
proqramlaşdırma
Mövzu 5. Şərtə görə dövrlər
© Polyakov K.Y, 2006-2007

61 слайд 61
Цикл с неизвестным числом шагов
Пример: Отпилить полено от бревна. Сколько раз надо сделать движения пилой?
Задача: Ввести целое число (<2000000) и определить число цифр в нем.
Идея решения: Отсекаем последовательно последнюю цифру, увеличиваем счетчик.

Проблема: Неизвестно, сколько шагов надо сделать.
Решение: Надо остановиться, когда n = 0, т.е. надо делать “пока n <> 0″.

62 слайд 62
Алгоритм
начало
count
конец
нет
да
n <> 0?
count := 0;
count := count + 1;
n := n div 10;
обнулить счетчик цифр
ввод n
выполнять “пока n <> 0″

63 слайд 63
Программа
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(‘В числе ‘, n, ‘ нашли ‘,
count, ‘ цифр’);
end.
while n <> 0 do begin
count := count + 1;
n := n div 10;
end;
, n1: integer;
n1 := n;
n1,
выполнять “пока n <> 0″
Что плохо?
?

64 слайд 64
Цикл с условием
while do begin

end;
Особенности:
можно использовать сложные условия:
если в теле цикла только один оператор, слова begin и end можно не писать:
while (a while a < b do
a := a + 1;

65 слайд 65
Цикл с условием
Особенности:
условие пересчитывается каждый раз при входе в цикл
если условие на входе в цикл ложно, цикл не выполняется ни разу
если условие никогда не станет ложным, программа зацикливается
a := 4; b := 6;
while a > b do
a := a – b;
a := 4; b := 6;
while a < b do
d := a + b;

66 слайд 66
Сколько раз выполняется цикл?
a := 4; b := 6;
while a < b do a := a + 1;
2 раза
a = 6
a := 4; b := 6;
while a < b do a := a + b;
1 раз
a = 10
a := 4; b := 6;
while a > b do a := a + 1;
0 раз
a = 4
a := 4; b := 6;
while a < b do b := a - b;
1 раз
b = -2
a := 4; b := 6;
while a < b do a := a - 1;
зацикливание

67 слайд 67
Замена for на while и наоборот
for i:=1 to 10 do begin

end;
i := 1;
while i
i := i + 1;
end;
for i:=a downto b do
begin

end;
i := a;
while i >= b do begin

i := i – 1;
end;
Замена while на for возможна только тогда, когда можно заранее рассчитать число шагов цикла.
Замена цикла for на while возможна всегда.

68 слайд 68
Задания
“4”: Ввести целое число и найти сумму его цифр.
Пример:
Введите целое число:
1234
Сумма цифр числа 1234 равна 10.
“5”: Ввести целое число и определить, верно ли, что в его записи есть две одинаковые цифры.
Пример:
Введите целое число: Введите целое число:
1234 1224
Нет. Да.

69 слайд 69
Последовательности
Примеры:
1, 2, 3, 4, 5, …
1, 2, 4, 7, 11, 16, …
1, 2, 4, 8, 16, 32, …

an = n
a1 = 1, an+1 = an+1
a1 = 1, an+1 = an + n
an = 2n-1
a1 = 1, an+1 = 2an
b1 = 1, bn+1 = bn+1
c1 = 2, cn+1 = 2cn

70 слайд 70
Последовательности
Задача: найти сумму всех элементов последовательности,
которые по модулю больше 0,001:
Элемент последовательности (начиная с №2):
b := b+1;
c := 2*c;
z := -z;

71 слайд 71
Алгоритм
начало
S
конец
нет
да
|a| > 0.001?
S := S + a;
S := 0; b := 1;
c := 2; z := -1;
a := 1;
начальные значения
a := z*b/c;
b := b + 1;
c := 2*c; z := -z;
первый элемент
a := 1;
S := 0;
новый элемент
изменение
Перестановка?
?

72 слайд 72
Программа
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.
z := – z;
b := b + 1;
c := c * 2;
переход к следующему слагаемому
S := 0; z := -1;
b := 1; c := 2; a := 1;
начальные значения
увеличение суммы
расчет элемента последовательности

73 слайд 73
Задания
“4”: Найти сумму элементов последовательности с точностью 0,001:

Ответ:
S = 1.157
“5”: Найти сумму элементов последовательности с точностью 0,001:

74 слайд 74
Цикл с постусловием
Задача: Ввести целое положительное число (<2000000) и определить число цифр в нем.
Проблема: Как не дать ввести отрицательное число или ноль?
Решение: Если вводится неверное число, вернуться назад к вводу данных (цикл!).
Особенность: Один раз тело цикла надо сделать в любом случае => проверку условия цикла надо делать в конце цикла (цикл с постусловием).
Цикл с постусловием – это цикл, в котором проверка условия выполняется в конце цикла.

75 слайд 75
Цикл с постусловием: алгоритм
начало
конец
да
нет
n > 0?
тело цикла
условие ВЫХОДА
блок “типовой процесс”
ввод n
основной
алгоритм

76 слайд 76
Программа
program qq;
var n: integer;
begin
repeat
writeln(‘Введите положительное число’);
read(n);
until n > 0;
. < основной алгоритм >
end.
repeat
writeln(‘Введите положительное число’);
read(n);
until n > 0;
until n > 0;
условие ВЫХОДА
Особенности:
тело цикла всегда выполняется хотя бы один раз
после слова until (“до тех пор, пока не…”) ставится условие ВЫХОДА из цикла

77 слайд 77
Сколько раз выполняется цикл?
a := 4; b := 6;
repeat a := a + 1; until a > b;
3 раза
a = 7
a := 4; b := 6;
repeat a := a + b; until a > b;
1 раз
a = 10
a := 4; b := 6;
repeat a := a + b; until a < b;
зацикливание
a := 4; b := 6;
repeat b := a – b; until a < b;
2 раза
b = 6
a := 4; b := 6;
repeat a := a + 2; until a < b;
зацикливание

78 слайд 78
Задания (с защитой от неверного ввода)
“4”: Ввести натуральное число и определить, верно ли, что сумма его цифр равна 10.
Пример:
Введите число >= 0: Введите число >= 0:
-234 1233
Нужно положительное число. Нет
Введите число >= 0:
1234
Да
“5”: Ввести натуральное число и определить, какие цифры встречаются несколько раз.
Пример:
Введите число >= 0: Введите число >= 0:
2323 1234
Повторяются: 2, 3 Нет повторов.

79 слайд 79
Pascal dilində
proqramlaşdırma
Mövzu 6. Seçim operatoru
© Polyakov K.Y, 2006-2007

80 слайд 80
Оператор выбора
Задача: Ввести номер месяца и вывести количество
дней в этом месяце.
Решение: Число дней по месяцам:
28 дней – 2 (февраль)
30 дней – 4 (апрель), 6 (июнь), 9 (сентябрь), 11 (ноябрь)
31 день – 1 (январь), 3 (март), 5 (май), 7 (июль),
8 (август), 10 (октябрь), 12 (декабрь)
Особенность: Выбор не из двух, а из нескольких
вариантов в зависимости от номера месяца.
Можно ли решить известными методами?
?

81 слайд 81
Алгоритм
начало
конец
оператор выбора
ни один вариант не подошел
ввод M
да
нет
M = 1?
D := 31;
нет
M = 2?
D := 28;
да
нет
M = 12?
D := 31;
да
вывод D
ошибка

82 слайд 82
Программа
program qq;
var M, D: integer;
begin
writeln(‘Введите номер месяца:’);
read ( M );
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;
if D > 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;
ни один вариант не подошел

83 слайд 83
Оператор выбора
Особенности:
после case может быть имя переменной или арифметическое выражение целого типа (integer)
или символьного типа (char)
case i+3 of
1: begin a := b; end;
2: begin a := c; end;
end;
var c: char;
.
case c of
‘а’: writeln(‘Антилопа’);
‘б’: writeln(‘Барсук’);
else writeln(‘Не знаю’);
end;

84 слайд 84
Оператор выбора
Особенности:
если нужно выполнить только один оператор, слова begin и end можно не писать
нельзя ставить два одинаковых значения
case i+3 of
1: a := b;
1: a := c;
end;
case i+3 of
1: a := b;
2: a := c;
end;

85 слайд 85
Оператор выбора
Особенности:
значения, при которых выполняются одинаковые действия, можно группировать
case i of
1: a := b;
2,4,6: a := c;
10..15: a := d;
20,21,25..30: a := e;
else writeln(‘Ошибка’);
end;
перечисление
диапазон
смесь

86 слайд 86
Что неправильно?
case a of
2: begin a := b;
4: a := c;
end;
case a of
2: a := b
4: a := c
end;
;
case a of
2..5: a := b;
4: a := c;
end;
case a of
0..2: a := b;
6..3: a := c;
end;
3..6:
case a+c/2 of
2: a := b;
4: a := c;
end;
case a of
2: a := b; d := 0;
4: a := c;
end;
begin
end;

87 слайд 87
Задания (с защитой от неверного ввода)
“4”: Ввести номер месяца и вывести количество дней в нем, а также число ошибок при вводе.
Пример:
Введите номер месяца: Введите номер месяца:
-2 2
Введите номер месяца: В этом месяце 28 дней.
11 Вы вводили неверно 0 раз.
В этом месяце 30 дней.
Вы вводили неверно 1 раз.
“5”: Ввести номер месяца и номер дня, вывести число дней, оставшихся до Нового года.
Пример:
Введите номер месяца:
12
Введите день:
25
До Нового года осталось 6 дней.

88 слайд 88
Pascal dilində proqramlaşdırma
Mövzu 7. Qrafika
© К.Ю. Поляков, 2006-2007
89 слайд 89
Система координат
(0,0)
(x,y)
X
Y
x
y

90 слайд 90
Управление цветом
Цвет и толщина линий, цвет точек:
Pen ( 1, 255, 0, 0 );
Цвет и стиль заливки:
Brush ( 1, 0, 255, 0 );
Цвет текста:
TextColor ( 0, 0, 255 );
толщина линии
R(red)
0..255
G(green)
0..255
B(blue)
0..255
0 – выключить
1 – включить
R
G
B
R
G
B

91 слайд 91
Точки, отрезки и ломаные
(x1, y1)
(x2, y2)
Pen (1, 0, 255, 0); Line (x1, y1, x2, y2);
(x, y)
Pen (1, 0, 0, 255);
Point (x, y);
(x1, y1)
(x2, y2)
(x3, y3)
(x4, y4)
(x5, y5)
Pen (1, 255, 0, 0); MoveTo (x1, y1);
LineTo (x2, y2);
LineTo (x3, y3);
LineTo (x4, y4);
LineTo (x5, y5);

92 слайд 92
Фигуры с заливкой
(x1, y1)
(x2, y2)
Pen (1, 0, 0, 255);
Brush (1, 255, 255, 0);
Rectangle (x1, y1, x2, y2);
(x1, y1)
(x2, y2)
Pen (1, 255, 0, 0);
Brush (1, 0, 255, 0);
Ellipse (x1, y1, x2, y2);
Brush (1, 100, 200, 255);
Fill (x, y);
(x, y)
Как отменить заливку?
?

93 слайд 93
Текст
TextColor (0, 0, 255);
Brush (1, 255, 255, 0);
Font (20, 30, 600);
MoveTo (x, y);
writeln (‘Привет!’);
Привет!
(x, y)
размер
10 пикселей
угол
поворота
насыщенность:
400 – нормальный
600 – жирный
30о

94 слайд 94
Пример
(200, 50)
(100, 100)
(300, 200)
program qq;
begin
Pen(2, 255, 0, 255);
Brush(1, 0, 0, 255);
Rectangle(100, 100, 300, 200);
MoveTo(100, 100);
LineTo(200, 50);
LineTo(300, 100);
Brush(1, 255, 255, 0);
Fill(200, 75);
Pen(2, 255, 255, 255);
Brush(1, 0, 255, 0);
Ellipse(150, 100, 250, 200);
end.

95 слайд 95
Задания
“4”: “Лягушка”

96 слайд 96
Штриховка
(x1, y1)
(x2, y2)
N линий (N=5)
h
Rectangle (x1, y1, x2, y2);
Line( x1+h, y1, x1+h, y2);
Line( x1+2*h, y1, x1+2*h, y2);
Line( x1+3*h, y1, x1+3*h, y2);
.
h := (x2 – x1) / (N + 1);
Rectangle (x1, y1, x2, y2);
x := x1 + h;
for i:=1 to N do begin
Line( round(x), y1, round(x), y2);
x := x + h;
end;
var x, h: real;
x
округление до ближайшего целого
x

97 слайд 97
Как менять цвет?
(x1, y1)
(x2, y2)
Brush ( 1, c, c, c );
Fill ( . . );
серый: R = G = B
Шаг изменения c:
x
(x-1, y1+1)
var c, hc: integer;
hc := 255 div (N + 1);
c := 0;
for i:=1 to N+1 do begin
Line (round(x), y1, round(x), y2);
Brush (1, c, c, c);
Fill (round(x)-1, y1+1);
x := x + h; c := c + hc;
end;

98 слайд 98
Штриховка
(x1, y1)
(x2, y2)
(x3, y2)
a
h
(x3+a, y1)
Line( x1+h, y1, x1+h-a, y2);
Line( x1+2*h, y1, x1+2*h-a, y2);
Line( x1+3*h, y1, x1+3*h-a, y2);
.
h := (x3 – x2) / (N + 1);
a := x1 – x2;
x := x1 + h;
for i:=1 to N do begin
Line( round(x), y1, round(x-a), y2);
x := x + h;
end;
x
x-a

99 слайд 99
Штриховка
(x1, y1)
(x2, y2)
hx
hy
y
x
y
Line( x1, y1+hy, x1+hx, y1+hy) ;
Line( x1, y1+2*hy, x1+2*hx, y1+2*hy);
Line( x1, y1+3*hy, x1+3*hx, y1+3*hy);
.
hx := (x2 – x1) / (N + 1);
hy := (y2 – y1) / (N + 1);
x := x1 + hx; y := y1 + hy;
for i:=1 to N do begin
Line( x1, round(y), round(x), round(y));
x := x + hx; y := y + hy;
end;

100 слайд 100
Задания
“4”: Ввести с клавиатуры число линий штриховки и построить фигуру, залив все области разным цветом.

“5”: Ввести с клавиатуры число окружностей и построить фигуру, залив все области разным цветом.

101 слайд 101
Pascal dilində
proqramlaşdırma
Mövzu 8. Funksiyaların qrafikləri
© Polyakov K.Y, 2006-2007

102 слайд 102
Построение графиков функций
Задача: построить график функции y = 3 sin(x) на интервале от 0 до 2π.
Анализ:
максимальное значение ymax = 3 при x = π/2
минимальное значение ymin = -3 при x = 3π/2
Проблема: функция задана в математической системе координат, строить надо на экране, указывая координаты в пикселях.

103 слайд 103
Преобразование координат
(x,y)
X
Y
x
y
Математическая
система координат
Экранная система координат (пиксели)
(xэ,yэ)


(0,0)
(0,0)
a
b
k – масштаб (длина изображения единичного отрезка на экране)
xэ = a + kx
yэ = b – ky

104 слайд 104
Программа

h – шаг изменения x
w – длина оси ОХ в пикселях
на экране
оси координат
цикл построения графика
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.
Что плохо?
?

105 слайд 105
Как соединить точки?
Алгоритм:
Если первая точка
перейти в точку (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.

106 слайд 106
Задания
“4”: Построить график функции y = x2 на интервале [-3,3].

“5”: Построить график
функции (эллипс)

107 слайд 107
Pascal dilində
proqramlaşdırma
Mövzu 9. Proseduralar
© Polyakov K.Y, 2006-2007

108 слайд 108
Процедуры
Задача: Построить фигуру:
Особенность: Три похожие фигуры.
общее: размеры, угол поворота
отличия: координаты, цвет
Можно ли решить известными методами?
?
Сколько координат надо задать?
?

109 слайд 109
Процедуры
Процедура – это вспомогательный алгоритм, который предназначен для выполнения некоторых действий.
Применение:
выполнение одинаковых действий в разных местах программы
разбивка программы (или другой процедуры) на подзадачи для лучшего восприятия
Подзадача1
Подзадача2
Подзадача3
1.1
1.2
1.3
2.1
2.2
2.3
3.1
3.2
3.3
Задача

110 слайд 110
Процедуры
Порядок разработки:
выделить одинаковые или похожие действия (три фигуры)
найти в них общее (размеры, форма, угол поворота) и отличия (координаты, цвет)
отличия записать в виде неизвестных переменных, они будут параметрами процедуры
(x, y)
100
60
(x+100, y)
(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;
заголовок
MoveTo(x, y);
LineTo(x, y-60);
LineTo(x+100, y);
LineTo(x, y);
Brush(1, r, g, b);
Fill(x+20, y-20);
тело процедуры
координаты
цвет
параметры

111 слайд 111
Программа
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.
(100,100)
100
60
процедура
фактические параметры
вызовы процедуры
procedure Tr( x, y, r, g, b: integer);
begin
.
end;
формальные параметры

112 слайд 112
Процедуры
Особенности:
все процедуры расположены выше основной программы
в заголовке процедуры перечисляются формальные параметры, они обозначаются именами, поскольку могут меняться
при вызове процедуры в скобках указывают фактические параметры (числа или арифметические выражения) в том же порядке
procedure Tr( x, y, r, g, b: integer);
Tr (200, 100, 0, 255, 0);
x
y
r
g
b

113 слайд 113
Процедуры
Особенности:
для каждого формального параметра после двоеточия указывают его тип
если однотипные параметры стоят рядом, их перечисляют через запятую
внутри процедуры параметры используются так же, как и переменные
procedure A (x: real; y: integer; z: real);
procedure A (x, z: real; y, k, l: integer);

114 слайд 114
Процедуры
Особенности:
в процедуре можно объявлять дополнительные локальные переменные, остальные процедуры не имеют к ним доступа
program qq;
procedure A(x, y: integer);
var a, b: real;
begin
a := (x + y)/6;
.
end;
begin
.
end.
procedure A(x, y: integer);
var a, b: real;
begin
a := (x + y)/6;
.
end;
локальные переменные
var a, b: real;

115 слайд 115
Параметры-переменные
Задача: составить процедуру, которая меняет местами значения двух переменных.
Особенности:
надо, чтобы изменения, сделанные в процедуре, стали известны вызывающей программе
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

116 слайд 116
Параметры-переменные
Применение:
таким образом процедура (и функция) может возвращать несколько значений,
Запрещенные варианты вызова
Exchange ( 2, 3 ); < числа >
Exchange ( x+z, y+2 ); < выражения >
procedure Exchange ( a, b: integer );
var c: integer;
begin
c := a; a := b; b := c;
end;
var
параметры могут изменяться

117 слайд 117
Задания
“4”: Используя процедуры, построить фигуру.

“5”: Используя процедуры, построить фигуру.
a
a
a
0,866∙a
равносторонний треугольник

118 слайд 118
Pascal dilində
proqramlaşdırma
Mövzu 10. Rekursiya
© К.Ю. Поляков, 2006-2007

119 слайд 119
Рекурсивные объекты
Рекурсивный объект – это объект, определяемый через один или несколько таких же объектов.
У попа была собака, он ее любил.
Она съела кусок мяса, он ее убил.
В ямку закопал, надпись написал:
Сказка о попе и собаке
Примеры:
Сказка о попе и собаке:
Факториал:
если
если
Рисунок с рекурсией:

120 слайд 120
Дерево Пифагора
Дерево Пифагора из N уровней – это ствол и отходящие от него симметрично два дерева Пифагора из N-1 уровней, такие что длина их стволов в 2 раза меньше и угол между ними равен 90o.
6 уровней:
Как доказать, что это рекурсивная фигура?
?

121 слайд 121
Дерево Пифагора
Особенности:
когда остановиться?
деревья имеют различный наклон
когда число оставшихся уровней станет равно нулю!
(x1, y1)
(x0, y0)
α
α+45o
α-45o
L
x1 = x0 + L·cos(α)
y1 = y0 – L·sin(α)
наклон “дочерних” деревьев
α + π/4
α – π/4

122 слайд 122
Процедура
угол α
длина ствола
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
Рекурсивной называется процедура, вызывающая сама себя.

123 слайд 123
Программа
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);

124 слайд 124
“4”: Используя рекурсивную процедуру, построить фигуру:

“5”: Используя рекурсивную процедуру, построить фигуру:
Задания

125 слайд 125
Pascal dilində
proqramlaşdırma
Mövzu 11. Animasiya
© К.Ю. Поляков, 2006-2007

126 слайд 126
Анимация
Анимация (англ. animation) – оживление изображения на экране.
Задача: внутри синего квадрата 400 на 400 пикселей слева направо двигается желтый квадрат 20 на 20 пикселей. Программа останавливается, если нажата клавиша Esc или квадрат дошел до границы синей области.
Проблема: как изобразить перемещение объекта на экране?
Привязка: состояние объекта задается координатами (x,y)
Принцип анимации:
рисуем объект в точке (x,y)
задержка на несколько миллисекунд
стираем объект
изменяем координаты (x,y)
переходим к шагу 1

127 слайд 127
Как “поймать” нажатие клавиши?
Событие – это изменение в состоянии какого-либо объекта или действие пользователя (нажатие на клавишу, щелчок мышкой).
IsEvent – логическая функция, которая определяет, было ли какое-то действие пользователя.
Event – процедура, которая определяет, какое именно событие случилось.
if IsEvent then begin
Event(k, x, y);
if k = 1 then
writeln(‘Клавиша с кодом ‘, x)
else < k = 2 >
writeln(‘Мышь: x=’, x, ‘ y=’, y);
end;
var k, x, y: integer;

128 слайд 128
Как выйти из цикла при нажатии Esc?
program qq;
var stop: boolean;
k,code,i: integer;
begin
stop := False;
repeat
if IsEvent then begin
Event(k, code, i);
if (k = 1) and (code = 27) then
stop := True;
end;
.
until stop;
end;
если что-то произошло.
что произошло?
если нажата клавиша с кодом 27 (Esc), то стоп
True, если надо остановиться
запуск цикла

129 слайд 129
Процедура (рисование и стирание)
procedure Draw(x, y: integer; flag: boolean);
begin
if flag then
Brush(1, 255, 255, 0)
else
Brush(1, 0, 0, 255);
Rectangle(x, y, x+20, y+20);
end;
(x, y)
(x+20, y+20)
Идеи
одна процедура рисует и стирает
стереть = нарисовать цветом фона
границу квадрата отключить (в основной программе)
рисовать (True) или нет (False)?
рисуем: цвет кисти – желтый
стираем: цвет кисти – синий
только заливка!

130 слайд 130
Полная программа
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 мс
отключить границу

131 слайд 131
“4”: Два квадрата двигаются в противоположном направлении:

“5”: Два квадрата двигаются в противоположном направлении и отталкиваются от стенок синего квадрата:
Задания

132 слайд 132
Управление клавишами
Задача: жёлтый квадрат внутри синего квадрата управляется клавишами-стрелками. Коды клавиш:
влево – 37вверх – 38Esc – 27
вправо – 39вниз – 40
Проблема: как изменять направление движения?
Решение:
if then begin
if then begin

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;
если было нажатие на клавишу, …

133 слайд 133
Программа
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;
Что плохо?
?
процедура
основной цикл
обработка событий

134 слайд 134
Как убрать мигание?
Проблема: даже если не нажата никакая клавиша, квадрат перерисовывается через каждые 20 мс (мигание!)
Что хочется: не перерисовать квадрат, если не было никакого события
Решение: нарисовать квадрат и ждать события
Новая проблема: как ждать события?
Решение новой проблемы: пустой цикл “пока не случилось событие, ничего не делай”:
while not IsEvent do;

135 слайд 135
Программа
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;
Draw(x, y, False);
Event(k, code, i);
.
while not IsEvent do;
процедура
рисуем квадрат
ждем события
только теперь стираем
Что можно улучшить?
?

136 слайд 136
“4”: Квадрат двигается при нажатии стрелок, однако не может выйти за границы синего квадрата:

“5”: Квадрат непрерывно двигается, при нажатии стрелок меняет направление и отталкивается от стенок синего квадрата:
Задания

137 слайд 137
Вращение
Задача: изобразить модель вращения Земли вокруг Солнца.
Проблема: движение по окружности, как изменять координаты?
Решение: использовать в качестве независимой переменной (менять в цикле) угол поворота α
(x0, y0)
α
L
(x, y)
x = x0 + L·cos(α)
y = y0 – L·sin(α)

138 слайд 138
Процедура
procedure Draw(x, y: integer; flag: boolean);
const r = 10;
begin
if flag then
Brush(1, 100, 100, 255)
else
Brush(1, 0, 0, 0);
Ellipse(x-r, y-r, x+r, y+r);
end;
рисовать (True) или нет (False)?
рисуем: цвет кисти – голубой
стираем: цвет кисти – черный
только заливка!
радиус Земли
(x-r, y-r)
(x,y)
(x+r, y+r)

begin
.
end.
procedure Draw(x, y: integer; flag: Boolean);
begin
.
end;

140 слайд 140
Основная программа
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; < начальный угол, шаг 1o за 100 мс>
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.
залить фон черным
рисуем Солнце
новые координаты
поворот на ha
ждем 100 мс
if IsEvent then begin
Event(k, code, i);
if (k = 1) and (code = 27) then stop := true;
end;

141 слайд 141
“4”: Изобразить модель Солнца с двумя планетами, которые вращаются в противоположные стороны:

“5”: Изобразить модель системы Солнце-Земля-Луна:
Задания

142 слайд 142
Программирование
на языке Паскаль
Тема 12. Случайные числа
© К.Ю. Поляков, 2006-2007

143 слайд 143
Случайные числа
Случайные явления: везде…
бросание монеты (“орел” или “решка”)
падение снега
броуновское движение
помехи при телефонной связи
шум радиоэфира
Случайные числа – это такая последовательность чисел, для которой невозможно предсказать следующее даже зная все предыдущие.
Проблема: как получить на компьютере?
Возможные решения:
использовать внешний источник шумовых помех
с помощью математических преобразований

144 слайд 144
Псевдослучайные числа
Псевдослучайные числа – это такая последовательность чисел, которая обладает свойствами случайных чисел, но каждое следующее число вычисляется по заданной формуле.
Примеры:
Случайные целые числа [0,m) (линейный конгруэнтный метод)

Случайные вещественные числа [0,1]

Литература:
Д. Кнут, Искусство программирования для ЭВМ, т.2.
дробная часть числа
a, c, m – целые числа
простое число
230-1
например, k = 5

145 слайд 145
Распределение случайных чисел
Модель: снежинки падают на отрезок [a,b]
a
b
a
b
распределение
равномерное
неравномерное
Сколько может быть разных распределений?
?

146 слайд 146
Распределение случайных чисел
Особенности:
распределение – это характеристика всей последовательности, а не одного числа
равномерное распределение одно, компьютерные датчики (псевдо)случайных чисел дают равномерное распределение
неравномерных – много
любое неравномерное можно получить с помощью равномерного
a
b
a
b
равномерное распределение
равномерное распределение

147 слайд 147
Təsadüfü ədədlər generatoru
[0,N] intervalında tam ədədlər:
var x: integer;
.
x := random ( 100 ); < interval [0,99] >
[0,1] intervalında həqiqi ədədlər
var x: real;
.
x := random;

148 слайд 148
Случайные числа
Задача: заполнить прямоугольник
400 на 300 пикселей равномерно
точками случайного цвета
Как получить случайные координаты точки?
x := random ( 400 );
y := random ( 300 );
Как добиться равномерности?
обеспечивается автоматически при использовании
функции random
Как получить случайный цвет?
Pen (1, random(256), random(256), random(256));
Point ( x, y );

149 слайд 149
Программа
program qq;
var x, y, k, code, i: integer;
stop: boolean;
begin
stop := False;
repeat
x := random(400);
y := random(300);
Pen(1, random(256), random(256), random(256));
Point(x, y );
if IsEvent then begin
Event(k, code, i);
if (k = 1) and (code = 27) then stop := True;
end;
until stop;
end.
случайные координаты
случайный цвет
выход по клавише Esc

150 слайд 150
“4”: Ввести с клавиатуры координаты углов прямоугольника и заполнить его точками случайного цвета.

“5”: Заполнить треугольник точками случайного цвета (равномерно или неравномерно).
Подсказка: возьмите равнобедренный треугольник с углом 45о.
Задания
(100,100)
(300,200)

151 слайд 151
Pascal dilində
proqramlaşdırma
Mövzu 13. Функции
© К.Ю. Поляков, 2006-2007

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

153 слайд 153
Функции
Задача: составить функцию, которая вычисляет наибольшее из двух значений, и привести пример ее использования
Функция:
формальные параметры
function Max (a, b: integer): integer;
begin
if a > b then Max := a
else Max := b;
end.
это результат функции

154 слайд 154
Функции
Особенности:
заголовок начинается словом function
формальные параметры описываются так же, как и для процедур
можно использовать параметры-переменные
в конце заголовка через двоеточие указывается тип результата
функции располагаются ВЫШЕ основной программы
Max (a, b: integer): integer;
function
function Max (a, b: integer): ;
integer
function qq( a, b: integer; x: real ): real;
a, b: integer; x: real
function Max ( a, b: integer): integer;
var

155 слайд 155
Функции
Особенности:
можно объявлять и использовать локальные переменные
значение, которое является результатом, записывается в переменную, имя которой совпадает с названием функции; объявлять ее НЕ НАДО:
function Max (a, b: integer): integer;
begin
.

end;
Max := a;
function qq (a, b: integer): float;

156 слайд 156
Программа
program qq;
var a, b, max: integer;

begin
writeln(‘Введите два числа’);
read(a, b);
max := Max ( a, b );
writeln(‘Наибольшее число ‘, max );
end.
function Max (a, b: integer): integer;
begin
.
end;
c
c
c
Имена переменных, функций и
процедур не должны совпадать!
!
фактические параметры
вызов функции

157 слайд 157
Логические функции
Задача: составить функцию, которая определяет, верно ли, что заданное число – простое.
Особенности:
ответ – логическое значение (True или False)
результат функции можно использовать как логическую величину в условиях (if, while)
Алгоритм: считаем число делителей в интервале от 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;
Как улучшить?
?

158 слайд 158
Логические функции
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;
вызов функции
результат – логическое значение
перебор только до
условие – это логическое значение

159 слайд 159
Задания
“4”: Составить функцию, которая определяет сумму всех чисел от 1 до N и привести пример ее использования.
Пример:
Введите число:
100
сумма = 5050
“5”: Составить функцию, которая определяет, сколько зерен попросил положить на N-ую клетку изобретатель шахмат (на 1-ую – 1 зерно, на 2-ую – 2 зерна, на 3-ю – 4 зерна, …)
Пример:
Введите номер клетки:
28
На 28-ой клетке 134217728 зерен.

160 слайд 160
Tapşırıq (II variant)
“4”: Составить функцию, которая определяет наибольший общий делитель двух натуральных и привести пример ее использования.
Пример:
Введите два числа:
14 21
НОД(14,21)=7
“5”: Составить функцию, которая вычисляет функцию синус как сумму ряда (с точностью 0.001)

Пример:
Введите угол в градусах:
45
sin(45) = 0.707
x в радианах!

161 слайд 161
Конец фильма

Краткое описание документа:

Pascal programlaşdırma dilinə aid çox faydalı təqdimat .(rus dilindən müəllfin icazəsi ilə tərcümə olunub).Təqdimatdan istifadə edərək 9-cu sinif pascal dərsslərində istifadı etmək olar.Burada həmçinin bəzi məslələrin həlli də izah olunur.pascalprogramlaşdırmadilinə aid təqdiamt .Təqdimatda pascal dilinin bütün imkanları aydın izah olunur.

Mürəkkəb dövrlərə aid çox maraqlı izahlar var.Tapşırıqlar da çox aydın izah olunur.

Funksiyalar aid vəaltprogramlara aid də çox faydalı materiallar var.

Ümid eidrəm müəllimlərə faydalı bir təqdiamt olacaq.

Лучшее для учеников, педагогов и родителей

Опытные
онлайн-репетиторы

  • По любым предметам 1-11 классов
  • Подготовка к ЕГЭ и ОГЭ

Pascal proqramlaşdırma dili

Pascal ABC sistemi şaqird və aşağı kurs tələbələrinə Paskal proqramlaşdırma dilini oyrətmək məqsədi ilə yaranıb.
Bu sistemin məqsədi sadə proqramlardan modul, obyekt-yönümlü, komponentli proqramlaşdırmaya keçmə prosesini hamarlaşdırmaqdır.

Translyator – Pascal ABC 3.0.1, 5.03.07

“Pascal” proqramlaşdırma dili

1970-ci ildə yaradılmış yeni proqramlaşdırma dili sonrakı illərdə proqramçılara böyük təsir göstərdi.Yeni proqramlaşdırma dili XVII əsrdə yaşamış fransız filosofu və riyaziyyatçısı Blez Paskalın (Blaise Paskal) şərəfinə “Paskal” adlandırıldı. Onun müəllifi Niklaus Virt (Niklaus Wirth) idi.

Niklaus “Paskal” dilini 1968-ci ildə yazmağa başladı. Virt o zaman İsveçrədə Federal Texniki Universitetində informatika professoru idi və tələbələri proqramlaşdırma bacarıqlarına öyrətmək üçün vasitəyə ehtiyac duyurdu.
Virt yeniyətmə illərində radio ilə idarə olunan təyyarə modellərinin yaradılması ilə həvəslə maraqlanırdı. Nəticədə o, 1963-cü ildə Kaliforniya Universitetində elektrotexnika üzrə bakalavr dərəcəsi aldı.
1968-ci ildə, Stenford universitetində 5 il işlədikdən sonra informatika üzrə isveçrəli mütəxəssis Niklaus Virt “Paskal” proqramlaşdırma dili ilə məşğul olmaq üçün İsveçrəyə qayıtdı. Bu dil tezliklə proqramlaşdırmanı öyrənmək üçün standart vasitəyə çevrildi.

Pascal Proqramlaşdırma Dili

Pascal dili (Paskal) – 1971-ci ildə professor Niklaus Virt (Niclaus Wirth) tərəfindən yaradılmışdır. Dil fransız riyaziyyatçısı və filosofu Blez Paskalın (Blaise Paskal) şərəfinə adlandırılmışdır və qısa zaman içində universitetlərdə istifadə edilən proqramlaşdırma dili halına gəlmişdir.

Paskal dilinin bir sıra xüsusiyyətləri onun biznes və sənaye sahələrində geniş tətbiqinə gətirib çıxarmışdır. Modula və Modula-2 dilləri Paskal dili əsas götürülərək inkişaf etdirilmişdir

Pascal dilinin əlifbası

Hər hansı dilin əlifbası sonlu sayda simvollar ardıcıllığıdir. Turbo Pascal dilinin əlifbası aşağıdakı qruplara bölünür.
1. A-dan Z-ə kimi böyük və kiçik latın hərfləri.
2. 0-dan 9-a kimi onluq rəqəmlər.
3. Xüsusi simvollar: . () , # $ ^ @ * _ + ” : > < =
4. Boşluq simvolu.

Münasibət əməlləri.
Tam ədədlərdən ibarət cütlər üzərində təyin olunmuş və nəticədə məntiqi qiymət verən əməllər də vardır.
Bu əməllər həqiqi ədədlər üzərində də təyin olunub.

Simvol qiymətlər üzərində isə, yalnız = və <> əməlləri təyin olunmuşdur.

Onun üstünlükləri odur ki, o, qavraması üçün sadədir və istifadəçi tərəfindən səhv yazılmış kod kompüter sisteminə ziyan gətirmir.

Pascalda proqramları yazmaq üçün xüsusi proqramlaşdırma mühiti olmalıdır. Əgər sizdə bu proqram yoxdursa, onu İnternetin müəyyən saytlarından və ya bu saytın “Proqram təminatı” bölməsindən yükləyə bilərsiniz. Bu səhifədə Pascal dilində yazılmış bəzi sadə məsələlərin kodları göstərilib.

1) program proqram_adı(output); < dəyişənlərin elan edilməsi >begin < operator hissə >end.

. Artıq sizə aydındır ki, proqram sözü ilə proqramımıza ad veririk. Və sonra dəyişənləri elan edirik. Bizim misalda name dəyişənini elan edirik. Dəyişənlərin elan edilməsi, onların tipi, identifikatorlar haqqında daha geniş məlumat sonra. Deməli name dəyişənini elan edirik. Daha sonra begin sözü ilə proqrama başlayırıq. Və write(); operatoru ilə Adınızı daxil edin: ekranda çap olunur. Bundan sonra read(); operatoru ilə isə ekranda daxil etdiyimiz məlumatları name dəyişəninə mənimsədirik. Daha sonra artıq sizə məlum olan write(); operatoru ilə əvvəlcə Salam, sonra isə name dəyişənində olan məlumat, yəni sizin daxil etdiyiniz məlumat(adınız) çap olunur. Sonra isə ! işarəsi. Bura qədər aydın oldusa, artıq bu sizin Pascaldakı ilk proqramınızdır.

program MyFirstProgram(output); var name:string; begin write('Adınızı daxil edin: '); read(name); write('Salam, '+name+'!'); end. 

Dəyişənlərin və onların tipinin elan edilməsi

Pascal dilində dəyişənləri elan etmək üçün var operatorundan istifadə olunur. Bu zaman onun tipini yazmaq vacibdir:
var i : integer; ch : char;

Pascal dilində dəyişəni elan edərkən mütləq onun tipi də müəyyən olunmalıdır. Bizim misalda i dəyişəni tam tipli, ch isə simvol tiplidir.

Bundan başqa bir neçə eyni tipli dəyişənləri etmək üçün onları vergül ilə də birləşdirmək olar.

var i, j, k : integer; letter, ch : char;

Bu misalda i, j, k dəyişənləri tam tipli, letter, ch isə simvol tipli olur.

Paskal dilində bir çox dəyişən tipi var. Hələ ki bunların hamısını deyil, daha çox lazım olanları barədə yazacağam. Daha sonra hamısı barədə ətraflı məlumat verərəm. Paskalda dəyişənin tipini elan etməyin bir yolunu artıq bilirsiniz.

var x,y,z : integer;

Bunu başqa cür də etmək olar.

type number=integer; var x,y,z : number;

2)
. Artıq sizə aydındır ki, proqram sözü ilə proqramımıza ad veririk. Və sonra dəyişənləri elan edirik. Bizim misalda name dəyişənini elan edirik. Dəyişənlərin elan edilməsi, onların tipi, identifikatorlar haqqında daha geniş məlumat sonra. Deməli name dəyişənini elan edirik. Daha sonra begin sözü ilə proqrama başlayırıq. Və write();operatoru ilə Adınızı daxil edin: ekranda çap olunur. Bundan sonra read(); operatoru ilə isə ekranda daxil etdiyimiz məlumatları name dəyişəninə mənimsədirik. Daha sonra artıq sizə məlum olan write(); operatoru ilə əvvəlcə Salam, sonra isə name dəyişənində olan məlumat, yəni sizin daxil etdiyiniz məlumat(adınız) çap olunur. Sonra isə ! işarəsi. Bura qədər aydın oldusa, artıq bu sizin Pascaldakı ilk proqramınızdır.

Ədədin rəqəmləri

1. N natural ədədinin rəqəmlərini çap edin.
moddiv funksiyalardan istifadə edərək, Pascal dilində bu məsələnin həllini belə göstərmək olar.

var n:integer; begin write('Ededi daxil edin: '); readln(n); repeat writeln(n mod 10); // ədədin sonuncu rəqəmini çıxarır n:= n div 10; // sonuncu rəqəmi silir until n=0; readln end.

2. Natural N ədədinin birinci və sonuncu rəqəmlərinin cəmini tapın.

var a, b, sum, n: longint; begin readln(n); a := n mod 10; n := n div 10; while n > 0 do begin b := n mod 10; n := n div 10; end; writeln(a+b); readln; end.

Armstronq ədədləri

1. K ədədi daxil olunur. Tələb olunur: K dərəcəli Armstronq ədədləri çap etmək.

Həlli: (264 saylı məktəbin müəllimi Əhmədova Mətanət)

k,q,j:integer;
i,n,d,d1,s,p:longint;
begin readln(k);
d:=round(exp((k-1)*ln(10)));
d1:=d*10-1;
for i:=d to d1 do
begin
n:=i;s:=0;
repeat
q:=n mod 10;

p:=q;
for j:=1 to k-1 do
p:=p*q;
s:=s+p;
n:=n div 10;
until n=0;
if s=i then writeln(i);
end;
end.
Massivlərə aid məsələlər

1. A və B massivləri verilmişdir. Əlavə massivdən istifadə etmədən massiv elementlərinin yerini dəyişdirin.
Nümunə :

a(2,5,7,0,12)
b(6,1,34,9,8)
çıxış
a (6,1,34,9,8)
b (2,5,7,0,12)
Həlli: (264 saylı məktəbin müəllimi Əhmədova Mətanət)

Bu məslənin həlli çox sadədir. Riyaziyyatdan bir qaydanı tətbiq edək. Yəni əlavə dəyişəndən istifadə etmədən dəyişənlərin qiymətlərini dəyişdirək.

Fərz edək ki, a:=5; b:=3; Tələb olunur ki, əlavə dəyişəndən istifadə etmədən a:=3 ; b:= 5 olsun.
Bunun üçün a:=a+b (a=5+3=8 ; a=8)
b:=a-b (b=8-3=5 ;b=5)
a;=a-b (a=8-5=3;a=3)

yazmaq kifayət edər.Beləliklə, a= 3 ; b= 5 aldıq. Bu qaydanı massiv elemtlərinə tətbiq edərək, iki massiv elementlərinin qiymətlərini dəyişmiş olarıq.

var i:integer;
a,b :array[1..5] of integer;
begin
for i:=1 to 5 do
read(a[i],b[i]);
writeln('a massivi ilkin');
for i:=1 to 5 do
write(a[i],' ');
writeln;
writeln('b massivi ilkin');
for i:=1 to 5 do
write(b[i],' '); writeln;
for i:=1 to 5 do
begin
a[i]:=a[i]+b[i];
b[i]:=a[i]-b[i];
a[i]:=a[i]-b[i];
end;
writeln('a massivi son');
for i:=1 to 5 do
write(a[i],' ');
writeln;
writeln('b massivi son');
for i:=1 to 5 do

write(b[i],' ');
end.

Turbo Pascal
Share This:

About Qemo
Soratemplates is a blogger resources site is a provider of high quality blogger template with premium looking layout and robust design

1 yorum:

Mənə 5.000.000.00 ABŞ dolları məbləğində kredit verən kredit şirkəti digər kredit investorları mənim təklifimi laqeyd etsələr də mr benjamin lee mənə müvəffəqiyyət borcu verərlər. Onlar birbaşa kredit maliyyələşdirmə və investisiya baxımından layihədədirlər. kapital bazarları fondlarına çıxış əldə etmək istəyən şirkətlərə və şəxslərə maliyyələşdirmə həlləri təqdim edir, layihənizi maliyyələşdirməyə və ya işinizi genişləndirməyə kömək edə bilərlər .. E-poçt Əlaqə . Lfdsloans@outlook.com və ya da yazın
whatsapp nömrəsi + 1- (989-394-3740) Yanıtla Sil

Comments are closed, but trackbacks and pingbacks are open.