Презентация, доклад на тему Программирование на языке Паскаль

Содержание

Программирование на языке ПаскальТема 1. Введение

Слайд 1Программирование на языке Паскаль (7 класс)
Введение
Ветвления
Сложные условия
Циклы
Циклы с переменной
Графика
Процедуры
Анимация
Функции
Случайные числа

Программирование  на языке Паскаль (7 класс)ВведениеВетвленияСложные условияЦиклыЦиклы с переменной ГрафикаПроцедурыАнимацияФункцииСлучайные числа

Слайд 2Программирование на языке Паскаль
Тема 1. Введение

Программирование  на языке ПаскальТема 1. Введение

Слайд 3
Алгоритм
Свойства алгоритма
дискретность: состоит из отдельных шагов (команд)
понятность: должен включать только команды,

известные исполнителю (входящие в СКИ)
определенность: при одинаковых исходных данных всегда выдает один и тот же результат
конечность: заканчивается за конечное число шагов
массовость: может применяться многократно при различных исходных данных
корректность: дает верное решение при любых допустимых исходных данных

Алгоритм – это четко определенный план действий для исполнителя.

АлгоритмСвойства алгоритмадискретность: состоит из отдельных шагов (команд)понятность: должен включать только команды, известные исполнителю (входящие в СКИ)определенность: при

Слайд 4
Программа
Программа – это
алгоритм, записанный на каком-либо языке программирования
набор команд для

компьютера

Команда – это описание действий, которые должен выполнить компьютер.
откуда взять исходные данные?
что нужно с ними сделать?

1970 – язык Паскаль (Н. Вирт)

Оператор – это команда языка программирования высокого уровня.

ПрограммаПрограмма – это алгоритм, записанный на каком-либо языке программированиянабор команд для компьютераКоманда – это описание действий, которые

Слайд 5
Простейшая программа
program qq;
begin { начало программы }
end. { конец программы }
комментарии

в фигурных скобках не обрабатываются

название программы

Простейшая программаprogram qq;begin { начало программы }end. { конец программы }комментарии в фигурных скобках не обрабатываютсяназвание программы

Слайд 6
Вывод текста на экран
program qq;
begin
write('2+'); { без перехода }

writeln('2=?'); { на новую строку}
writeln('Ответ: 4');
end.

Протокол:
2+2=?
Ответ: 4






Вывод текста на экранprogram qq;begin write('2+');  { без перехода } writeln('2=?'); { на новую строку} writeln('Ответ:

Слайд 7
Задания
«4»: Вывести на экран текст "лесенкой"
Вася

пошел
гулять
«5»: Вывести на экран рисунок из букв
Ж
ЖЖЖ
ЖЖЖЖЖ
ЖЖЖЖЖЖЖ
HH HH
ZZZZZ
Задания«4»: Вывести на экран текст

Слайд 8
Переменные
Задача. Ввести с клавиатуры два числа и найти их сумму.
Протокол:
Введите

два целых числа
25 30
25+30=55

компьютер

пользователь

компьютер считает сам!

ПеременныеЗадача. Ввести с клавиатуры два числа и найти их сумму.Протокол: Введите два целых числа 25 30 25+30=55компьютерпользователькомпьютер

Слайд 9
Программа
program qq;
begin
{ ввести два числа }
{ вычислить их сумму

}
{ вывести сумму на экран }
end.

Псевдокод: алгоритм на русском языке с элементами Паскаля.

Программаprogram qq;begin { ввести два числа } { вычислить их сумму } { вывести сумму на экран

Слайд 10
Переменные
Переменная – это величина, имеющая имя, тип и значение. Значение переменной

можно изменять во время работы программы.



a

Значение

Имя


Другой тип данных

ПеременныеПеременная – это величина, имеющая имя, тип и значение. Значение переменной можно изменять во время работы программы.aЗначениеИмяДругой

Слайд 11
Имена переменных
В именах МОЖНО использовать
латинские буквы (A-Z)


цифры


знак подчеркивания _
заглавные и строчные

буквы не различаются

В именах НЕЛЬЗЯ использовать
русские буквы
пробелы
скобки, знаки +, =, !, ? и др.

имя не может начинаться с цифры

Какие имена правильные??
AXby R&B 4Wheel Вася “PesBarbos” TU154 [QuQu] _ABBA A+B

Имена переменныхВ именах МОЖНО использоватьлатинские буквы (A-Z)цифрызнак подчеркивания _заглавные и строчные буквы не различаютсяВ именах НЕЛЬЗЯ использоватьрусские

Слайд 12
Переменные
Типы переменных:
integer { целая }
real { вещественная }
и другие…
Объявление переменных:
var a, b, c:

integer;

Выделение места в памяти

variable – переменная

тип – целые


список имен переменных

ПеременныеТипы переменных:integer		{ целая }real		{ вещественная }и другие…Объявление переменных:var 	a, b, c: integer;Выделение места в памятиvariable – переменная

Слайд 13
Как записать значение в переменную?
a := 5;
Оператор присваивания

5

Оператор – это команда

языка программирова-ния (инструкция).
Оператор присваивания – это команда для записи нового значения в переменную.

a

Как записать значение в переменную?a := 5;Оператор присваивания5Оператор – это команда языка программирова-ния (инструкция).Оператор присваивания – это

Слайд 14
Блок-схема линейного алгоритма
начало
конец
c := a + b;
ввод a, b
вывод c
блок «начало»
блок

«ввод»

блок «процесс»

блок «вывод»

блок «конец»

Блок-схема линейного алгоритманачалоконецc := a + b;ввод a, bвывод cблок «начало»блок «ввод»блок «процесс»блок «вывод»блок «конец»

Слайд 15
Как ввести значение с клавиатуры
read ( a );

Оператор ввода

5
a

Как ввести значение с клавиатурыread ( a );Оператор ввода5a

Слайд 16
Ввод значений двух переменных
через пробел:
25 30
через Enter:
25
30
read ( a, b

);

Ввод значений двух переменных (через пробел или Enter).

Ввод значений двух переменныхчерез пробел:	25 30через Enter:	25 	30read ( a, b );Ввод значений двух переменных (через пробел

Слайд 17
Оператор вывода
{ вывод значения переменной a}
{ вывод значения переменной a и

переход на новую строчку}

{ вывод текста }

{вывод текста и значения переменной c}

write( a );

writeln( a );

writeln( 'Привет!' );

writeln( 'Ответ: ', c );

writeln ( a, '+', b, '=', c );

Оператор вывода{ вывод значения переменной a}{ вывод значения переменной a и переход на новую строчку}{ вывод текста

Слайд 18
Сложение двух чисел
Задача. Ввести два целых числа и вывести на экран

их сумму.

Простейшее решение:

program qq;
var a, b, c: integer;
begin
read ( a, b );
c := a + b;
writeln ( c );
end.

Сложение двух чиселЗадача. Ввести два целых числа и вывести на экран их сумму.Простейшее решение:	program qq;	var a, b,

Слайд 19
Полное решение
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

компьютер

пользователь

Полное решение	program qq;	var a, b, c: integer;	begin  writeln('Введите два целых числа');  read ( a, b

Слайд 20Задания
«3»: Ввести три числа, найти их сумму.
Пример:
Введите три

числа:
4 5 7
4+5+7=16
«4»: Ввести три числа, найти их сумму и произведение.
Пример:
Введите три числа:
4 5 7
4+5+7=16
4*5*7=140
Задания«3»: Ввести три числа, найти их сумму.  Пример:	 Введите три числа:	 4  5  7

Слайд 21Задания
«5»: Ввести три числа, найти их сумму, произведение и среднее арифметическое.

Пример:
Введите три числа:
4 5 7
4+5+7=16
4*5*7=140
(4+5+7)/3=5.333333
Задания«5»: Ввести три числа, найти их сумму, произведение и среднее арифметическое.  Пример:

Слайд 22
Как изменить значение переменной?
program qq;
var a, b: integer;
begin
a := 5;

b := a + 2;
a := (a + 2)*(b – 3);
b := b + 1;
end.


a

?

5

5


b

?

5+2

7


a

5

7*4

28

Пример:


b

7

7+1

8

Как изменить значение переменной?	program qq;	var a, b: integer;	begin	 a := 5;	 b := a + 2;	 a

Слайд 23
Арифметические операции
+ сложение – вычитание
* умножение / деление
div деление нацело (остаток

отбрасывается)
mod остаток от деления

var a, b: integer;
begin
a := 7*3 - 4; { 17 }
a := a * 5; { 85 }
b := a div 10; { 8 }
a := a mod 10; { 5 }
end.





Арифметические операции+ сложение		– вычитание * умножение		/ деление div деление нацело (остаток отбрасывается)mod остаток от деленияvar a, b:

Слайд 24 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.


Какие операторы неправильные?

имя переменной должно быть слева от знака :=

целая и дробная часть отделяются точкой

нельзя записывать вещественное значение в целую переменную


program qq;	var a, b: integer;		 x, y: real; 	begin	 a := 5;   10 := x;

Слайд 25
Порядок выполнения операций
вычисление выражений в скобках
умножение, деление, div, mod слева направо
сложение

и вычитание слева направо

z := (5*a+c)/a*(b-c)/ b;

x:=(5*c*c-d*(a+b))/((c+d)*(d-2*a));



1 2 4 5 3 6

2 3 5 4 1 10 6 9 8 7

Порядок выполнения операцийвычисление выражений в скобкахумножение, деление, div, mod слева направосложение и вычитание слева направоz := (5*a+c)/a*(b-c)/

Слайд 26
Ручная прокрутка программы
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.









Ручная прокрутка программыprogram qq;var 	a, b: integer;begin a := 5; b := a + 2; a :=

Слайд 27
Вывод целых чисел
program qq;
var a, b: integer;
begin
a := 15;
b

:= 45;
writeln ( a, b );
writeln ( a:4, b:4 );
end.

15 45

1545

Вывод целых чиселprogram qq;var a, b: integer;begin a := 15; b := 45;  writeln ( a,

Слайд 28
Вывод вещественных чисел
program qq;
var x: real;
begin
x := 12.345678;
writeln (

x );
writeln ( x:10 );
writeln ( x:7:2 );
end.

12.35

всего символов

всего символов

в дробной части

1.23E+001

1.234568E+001

1,234568∙101

Вывод вещественных чиселprogram qq;var x: real;begin x := 12.345678; writeln ( x ); writeln ( x:10 );

Слайд 29Программирование на языке Паскаль
Тема 2. Ветвления
© К.Ю. Поляков, 2006-2010

Программирование  на языке ПаскальТема 2. Ветвления© К.Ю. Поляков, 2006-2010

Слайд 30
Разветвляющиеся алгоритмы
Задача. Ввести два целых числа и вывести на экран наибольшее

из них.
Идея решения: надо вывести на экран первое число, если оно больше второго, или второе, если оно больше первого.
Особенность: действия исполнителя зависят от некоторых условий (если … иначе …).

Алгоритмы, в которых последовательность шагов зависит от выполнения некоторых условий, называются разветвляющимися.

Разветвляющиеся алгоритмыЗадача. Ввести два целых числа и вывести на экран наибольшее из них.Идея решения: надо вывести на

Слайд 31
Вариант 1. Блок-схема

полная форма ветвления
блок «решение»

Вариант 1. Блок-схемаполная форма ветвленияблок «решение»

Слайд 32
Вариант 1. Программа


max := a;
max := b;
полная форма условного оператора
program qq;
var

a, b, max: integer;
begin
writeln('Введите два целых числа');
read ( a, b );
if a > b then begin

end
else begin

end;
writeln ('Наибольшее число ', max);
end.
Вариант 1. Программа	max := a;max := b;полная форма условного оператора	program qq;	var a, b, max: integer;	begin  writeln('Введите

Слайд 33
Условный оператор
if then begin
{что делать, если условие верно}


end
else begin
{что делать, если условие неверно}
end;

Особенности:
перед else НЕ ставится точка с запятой
вторая часть (else …) может отсутствовать (неполная форма)
если в блоке один оператор, можно убрать слова begin и end

Условный оператор	if then begin  {что делать, если условие верно}    end else begin

Слайд 34
Что неправильно?
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

Что неправильно?	if a > b then begin  a := b;  end else  b :=

Слайд 35
Вариант 2. Блок-схема

неполная форма ветвления

Вариант 2. Блок-схеманеполная форма ветвления

Слайд 36
Вариант 2. Программа


program qq;
var a, b, max: integer;
begin
writeln('Введите два

целых числа');
read ( a, b );
max := a;
if b > a then
max := b;
writeln ('Наибольшее число ', max);
end.

неполная форма условного оператора

Вариант 2. Программа		program qq;	var a, b, max: integer;	begin  writeln('Введите два целых числа');  read ( a,

Слайд 37
Вариант 2Б. Программа


program qq;
var a, b, max: integer;
begin
writeln('Введите два

целых числа');
read ( a, b );
max := b;
if ??? then
???
writeln ('Наибольшее число ', max);
end.

max := a;

a > b

Вариант 2Б. Программа	program qq;	var a, b, max: integer;	begin  writeln('Введите два целых числа');  read ( a,

Слайд 38
Что неправильно?
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;


Что неправильно?	if a > b then begin   a := b;  else b := a;

Слайд 39Задания
«3»: Ввести два числа и вывести их в порядке возрастания.

Пример:
Введите два числа:
15 9
Ответ: 9 15
«4»: Ввести три числа и найти наибольшее из них.
Пример:
Введите три числа:
4 15 9
Наибольшее число 15
Задания«3»: Ввести два числа и вывести их в порядке возрастания.  Пример:		Введите два числа:		15  9		Ответ: 9

Слайд 40Задания
«5»: Ввести пять чисел и найти наибольшее из них.
Пример:

Введите пять чисел:
4 15 9 56 4
Наибольшее число 56
Задания«5»: Ввести пять чисел и найти наибольшее из них.  Пример:      Введите

Слайд 41Программирование на языке Паскаль
Тема 3. Сложные условия
© К.Ю. Поляков, 2006-2010

Программирование  на языке ПаскальТема 3. Сложные условия© К.Ю. Поляков, 2006-2010

Слайд 42
Сложные условия
Задача. Фирма набирает сотрудников от 25 до 40 лет включительно.

Ввести возраст человека и определить, подходит ли он фирме (вывести ответ «подходит» или «не подходит»).
Особенность: надо проверить, выполняются ли два условия одновременно.
Сложные условияЗадача. Фирма набирает сотрудников от 25 до 40 лет включительно. Ввести возраст человека и определить, подходит

Слайд 43
Вариант 1. Алгоритм
начало
ввод x
'подходит'
конец




да
нет
x >= 25?


да
нет
x

Вариант 1. Алгоритмначаловвод x'подходит'конецданетx >= 25?данетx

Слайд 44
Вариант 1. Программа



program qq;
var x: integer;
begin
writeln('Введите возраст');
read

( x );
if x >= 25 then
if x <= 40 then
writeln ('Подходит')
else writeln ('Не подходит')
else
writeln ('Не подходит');
end.
Вариант 1. Программа		program qq;	var x: integer;	begin  writeln('Введите возраст');  read ( x );  if x

Слайд 45Вариант 2. Алгоритм
начало
ввод x
'подходит'


да
нет
x >= 25 и
x

Вариант 2. Алгоритмначаловвод x'подходит'данетx >= 25  иx

Слайд 46
Вариант 2. Программа


сложное условие
program qq;
var x: integer;
begin
writeln('Введите возраст');

read ( x );
if (x >= 25) and (x <= 40) then
writeln ('Подходит')
else writeln ('Не подходит')
end.
Вариант 2. Программасложное условие	program qq;	var x: integer;	begin  writeln('Введите возраст');  read ( x );  if

Слайд 47
Сложные условия
Простые условия (отношения)
<

>= = <>
Сложное условие – это условие, состоящее из нескольких простых условий (отношений), связанных с помощью логических операций:
not – НЕ (отрицание, инверсия)
and – И (одновременное выполнение условий)
or – ИЛИ (выполнение хотя бы одного из условий)

равно

не равно

Сложные условияПростые условия (отношения)  <    >=  =  Сложное условие – это

Слайд 48
Сложные условия
Порядок выполнения (приоритет = старшинство)
выражения в скобках
not
and
or
=,

=, <>
Особенность – каждое из простых условий обязательно заключать в скобки.
Пример

4 1 6 2 5 3

if not (a > b) or (c <> d) and (b <> a)
then begin
...
end

Сложные условияПорядок выполнения (приоритет = старшинство)выражения в скобкахnotandor=, =, Особенность – каждое из простых условий обязательно заключать

Слайд 49Истинно или ложно при a := 2; b := 3; c

:= 4;
not (a > b)
(a < b) and (b < c)
not (a >= b) or (c = d)
(a < c) or (b < c) and (b < a)
(a < b) and (b > c)
Для каких значений x истинны условия:
(x < 6) and (x < 10)
(x < 6) and (x > 10)
(x > 6) and (x < 10)
(x > 6) and (x > 10)
(x < 6) or (x < 10)
(x < 6) or (x > 10)
(x > 6) or (x < 10)
(x > 6) or (x > 10)


Сложные условия

True

True

FALSE

(-∞; 6)


(6; 10)

(10; ∞)

(-∞; 10)

(-∞; 6) ∪ (10;∞)

(-∞; ∞)

(6; ∞)

x < 6

x > 10

x < 10

x > 6

True

True

Истинно или ложно при a := 2; b := 3; c := 4;not (a > b)(a <

Слайд 50Задания
«3»: Ввести три числа и определить, верно ли, что они вводились

в порядке возрастания.
Пример:
Введите три числа:
4 5 17
да
«4»: Ввести номер месяца и вывести название времени года.
Пример:
Введите номер месяца:
4
весна
Задания«3»: Ввести три числа и определить, верно ли, что они вводились в порядке возрастания.  Пример:		Введите три

Слайд 51Задания
«5»: Ввести возраст человека (от 1 до 150 лет) и вывести

его вместе с последующим словом «год», «года» или «лет».
Пример:
Введите возраст: Введите возраст:
24 57
Вам 24 года Вам 57 лет
Задания«5»: Ввести возраст человека (от 1 до 150 лет) и вывести его вместе с последующим словом «год»,

Слайд 52Программирование на языке Паскаль
Тема 4. Циклы
© К.Ю. Поляков, 2006-2010

Программирование  на языке ПаскальТема 4. Циклы© К.Ю. Поляков, 2006-2010

Слайд 53
Циклы
Цикл – это многократное выполнение одинаковой последовательности действий.
цикл с известным числом

шагов
цикл с неизвестным числом шагов (цикл с условием)
Задача. Вывести на экран 5 раз слово «Привет».
Особенность: одинаковые действия выполняются 5 раз.
ЦиклыЦикл – это многократное выполнение одинаковой последовательности действий.цикл с известным числом шаговцикл с неизвестным числом шагов (цикл

Слайд 54
Циклы
program qq;
begin
writeln('Привет');
writeln('Привет');
writeln('Привет');
writeln('Привет');
writeln('Привет');


end.
Циклыprogram qq;begin writeln('Привет');  writeln('Привет');  writeln('Привет');  writeln('Привет');  writeln('Привет'); end.

Слайд 55Циклы

начало
конец
Блок-схема:
да
нет
тело цикла

ЦиклыначалоконецБлок-схема:данеттело цикла

Слайд 56
Циклы
program Privet;
begin
{ сделай 5 раз }
writeln('Привет');
end.





N :=

N + 1;
Циклыprogram Privet;begin { сделай 5 раз }  writeln('Привет'); end.N := N + 1;

Слайд 57
Алгоритм

начало
Привет!
конец
да
нет
N = 5?

N := 0;
N := N + 1;

еще не сделали

ни одного раза

проверить, все ли сделали

вывод на экран

считаем очередной шаг

АлгоритмначалоПривет!конецданетN = 5?N := 0;N := N + 1;еще не сделали ни одного разапроверить, все ли сделаливывод

Слайд 58Цикл с условием
program Privet2;
var N: integer;
begin
N:= 0;
while ( N

<> 5 ) do begin
writeln('Привет!');
N:= N + 1;
end
end.
Цикл с условиемprogram Privet2;var N: integer;begin N:= 0; while ( N 5 ) do begin  writeln('Привет!');

Слайд 59Ввод количества
program Privet2;
var N : integer;
begin
N:= 0;
writeln('Введите

число шагов:');
read(K);
while ( N <> ) do begin
writeln('Привет!');
N:= N + 1;
end
end.

K

, K

Ввод количестваprogram Privet2;var N   : integer;begin N:= 0; writeln('Введите число шагов:'); read(K); while ( N

Слайд 60Цикл с условием
Вместо знаков вопроса добавьте числа и операторы так, чтобы

цикл выполнился ровно 5 раз:

program Privet3;
var N: integer;
begin
N:= 5;
while ( N <> ??? ) do begin
writeln('Привет!');
???;
end
end.

0

N:= N - 1;

Цикл с условиемВместо знаков вопроса добавьте числа и операторы так, чтобы цикл выполнился ровно 5 раз: program

Слайд 61program Primer1;
var N: integer;
begin
N:= 1;
while ( N

) do begin
writeln(N);
N:= N + 1;
end
end.

Что получим?

1
2
3
4
5


program Primer1;var N: integer;begin N:= 1; while ( N

Слайд 62program Primer2;
var N: integer;
begin
N:= 1;
while ( N

) do begin
writeln(N);
N:= N + 2;
end
end.

Что получим?

1
3
5


program Primer2;var N: integer;begin N:= 1; while ( N

Слайд 63program Primer3;
var N: integer;
begin
N:= 2;
while ( N 5

) do begin
writeln(N);
N:= N + 2;
end
end.

Что получим?

2
4
6
8
10
12
14
16
...


program Primer3;var N: integer;begin N:= 2; while ( N 5 ) do begin  writeln(N);  N:=

Слайд 64program Primer4;
var N: integer;
begin
N:= 1;
while ( N

) do begin
writeln(N*N*N);
N:= N + 1;
end
end.

Что получим?

1
8
27
64
125


program Primer4;var N: integer;begin N:= 1; while ( N

Слайд 65program Primer5;
var N: integer;
begin
N:= 5;
while ( N >= 1

) do begin
writeln(N*N*N);
N:= N - 1;
end
end.

Что получим?

125
64
27
8
1


program Primer5;var N: integer;begin N:= 5; while ( N >= 1 ) do begin  writeln(N*N*N);

Слайд 66Задания
«3»: Ввести натуральное число вывести квадраты и кубы всех чисел от

1 до этого числа.
Пример:
Введите натуральное число:
3
1: 1 1
2: 4 8
3: 9 27
«4»: Ввести два целых числа a и b (a ≤ b) и вывести квадраты все чисел от a до b.
Пример:
Введите два числа:
4 5
4*4=16
5*5=25
Задания«3»: Ввести натуральное число вывести квадраты и кубы всех чисел от 1 до этого числа.  Пример:		Введите

Слайд 67Задания
«5»: Ввести два целых числа a и b (a ≤ b)

и вывести сумму квадратов всех чисел от a до b.
Пример:
Введите два числа:
4 10
Сумма квадратов 371
Задания«5»: Ввести два целых числа a и b (a ≤ b) и вывести сумму квадратов всех чисел

Слайд 68
Цикл с неизвестным числом шагов
Пример: Отпилить полено от бревна. Сколько раз

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




Проблема: Неизвестно, сколько шагов надо сделать.
Решение: Надо остановиться, когда n = 0, т.е. надо делать «пока n <> 0».
Цикл с неизвестным числом шаговПример: Отпилить полено от бревна. Сколько раз надо сделать движения пилой?Задача: Ввести целое

Слайд 69

Алгоритм

начало
count
конец
нет
да
n 0?

count := 0;

count := count + 1;
n

:= n div 10;

обнулить счетчик цифр

ввод n


выполнять «пока n <> 0»

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

Слайд 70Программа
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»

Программаprogram qq;var n, count: integer;begin writeln('Введите целое число'); read(n); count := 0; while n 0 do begin

Слайд 71
Цикл с условием
while do begin
{тело цикла}


end;

Особенности:
можно использовать сложные условия:
если в теле цикла только один оператор, слова begin и end можно не писать:

while (a < b) and (b < c) do begin
{тело цикла}
end;

while a < b do
a := a + 1;

Цикл с условием	while do begin  {тело цикла}    end;Особенности:можно использовать сложные условия:если в теле

Слайд 72
Цикл с условием
Особенности:
условие пересчитывается каждый раз при входе в цикл
если условие

на входе в цикл ложно, цикл не выполняется ни разу
если условие никогда не станет ложным, программа зацикливается

a := 4; b := 6;
while a > b do
a := a – b;

a := 4; b := 6;
while a < b do
d := a + b;

Цикл с условиемОсобенности:условие пересчитывается каждый раз при входе в циклесли условие на входе в цикл ложно, цикл

Слайд 73
Сколько раз выполняется цикл?
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;

зацикливание

Сколько раз выполняется цикл?a := 4; b := 6;while a < b do a := a +

Слайд 74Задания

«3»: Ввести целое число и определить, верно ли, что в нём

ровно 3 цифры.
Пример:
Введите число: Введите число:
123 1234
Да. Нет.
«4»: Ввести целое число и найти сумму его цифр.
Пример:
Введите целое число:
1234
Сумма цифр числа 1234 равна 10.
Задания«3»: Ввести целое число и определить, верно ли, что в нём ровно 3 цифры.   Пример:		Введите

Слайд 75Задания

«5»: Ввести целое число и определить, верно ли, что в его

записи есть две одинаковые цифры, стоящие рядом.
Пример:
Введите целое число: Введите целое число:
1232 1224
Нет. Да.
«6»: Ввести целое число и определить, верно ли, что в его записи есть две одинаковые цифры, НЕ обязательно стоящие рядом.
Пример:
Введите целое число: Введите целое число:
1234 1242
Нет. Да.

Задания«5»: Ввести целое число и определить, верно ли, что в его записи есть    две

Слайд 76Задания-2

«3»: Ввести целое число и определить, верно ли, что в нём

ровно 1 цифра «9».
Пример:
Введите число: Введите число:
193 1994
Да. Нет.
«4»: Ввести целое число и определить, верно ли, что все его цифры четные.
Пример:
Введите число: Введите число:
2684 2994
Да. Нет.
Задания-2«3»: Ввести целое число и определить, верно ли, что в нём ровно 1 цифра «9».

Слайд 77Задания-2

«5»: Ввести целое число и определить, верно ли, что все его

цифры расположены в порядке возрастания.
Пример:
Введите целое число: Введите целое число:
1238 1274
Да. Нет.
«6»: Ввести целое число и «перевернуть» его, так чтобы первая цифра стала последней и т.д.
Пример:
Введите целое число: Введите целое число:
1234 782
4321 287

Задания-2«5»: Ввести целое число и определить, верно ли, что все его цифры расположены в порядке возрастания.

Слайд 78
Цикл с постусловием
Задача: Ввести целое положительное число (

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

Цикл с постусловием – это цикл, в котором проверка условия выполняется в конце цикла.

Цикл с постусловиемЗадача: Ввести целое положительное число ( проверку условия цикла надо делать в конце цикла (цикл

Слайд 79
Цикл с постусловием: алгоритм

начало
конец
да
нет
n > 0?


тело цикла
условие ВЫХОДА
блок «типовой процесс»
ввод

n

основной алгоритм

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

Слайд 80
Программа
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 ("до тех пор, пока не…") ставится условие ВЫХОДА из цикла

Программаprogram qq;var n: integer;begin  repeat   writeln('Введите положительное число');   read(n);  until n

Слайд 81
Сколько раз выполняется цикл?
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;

зацикливание

Сколько раз выполняется цикл?a := 4; b := 6;repeat a := a + 1; until a >

Слайд 82
Задания (с защитой от неверного ввода)
«4»: Ввести натуральное число и определить,

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

Слайд 83Программирование на языке Паскаль
Тема 5. Циклы с переменной
© К.Ю. Поляков, 2006-2010

Программирование  на языке ПаскальТема 5. Циклы с переменной© К.Ю. Поляков, 2006-2010

Слайд 84
Цикл с переменной
Задача. Вывести на экран кубы целых чисел от 1

до 8 (от a до b).
Особенность: одинаковые действия выполняются 8 раз.

N := 1; { очередное число }
cubeN := N*N*N; { куб этого числа }
writeln(N:4, cubeN:4);
N := 2;
...

Цикл с переменнойЗадача. Вывести на экран кубы целых чисел от 1 до 8 (от a до b).Особенность:

Слайд 85
Алгоритм

начало
конец
нет
да
N

начальное значение переменной цикла

проверить, все ли сделали

вычисляем куб

вывод результата

перейти к следующему i

АлгоритмначалоконецнетдаN

Слайд 86Цикл с переменной
Задача: вывести кубы натуральных чисел от 1 до 8.


program Cubes;
var N, cubeN: integer;
begin
N:= 1;
while ( N <= 8 ) do begin
cubeN:= N*N*N;
writeln(cubeN);
N:= N + 1;
end
end.

N:= 1;

N <= 8

N:= N + 1;

3 действия с N

Цикл с переменнойЗадача: вывести кубы натуральных чисел от 1 до 8. program Cubes;var N, cubeN: integer;begin N:=

Слайд 87Цикл с переменной
Задача: вывести кубы натуральных чисел от 1 до 8.


program Cubes2;
var N, cubeN: integer;
begin




end.

for N:=1 to 8 do begin
cubeN:= N*N*N;
writeln(cubeN)
end

для 1,2,3,…,8

Цикл с переменнойЗадача: вывести кубы натуральных чисел от 1 до 8. program Cubes2;var N, cubeN: integer;beginend.for N:=1

Слайд 88
Алгоритм (с блоком «цикл»)

начало
конец

cubeN := N*N*N;
N := 1,8
блок «цикл»
тело цикла

Алгоритм (с блоком «цикл»)началоконецcubeN := N*N*N;N := 1,8блок «цикл»тело цикла

Слайд 89
Программа


program qq;
var N, cubeN: integer;
begin


for N:=1 to 8 do

begin
cubeN := N*N*N;
writeln(N:4, cubeN:4)
end
end.

переменная
цикла

начальное значение

конечное значение

Программаprogram qq;var N, cubeN: integer;begin  for N:=1 to 8 do begin  cubeN := N*N*N;

Слайд 90
Цикл с уменьшением переменной
Задача. Вывести на экран кубы целых чисел от

8 до 1 (в обратном порядке).
Особенность: переменная цикла должна уменьшаться.
Решение:

for N:=8 1 do begin
cubeN := N*N*N;
writeln(N:4, cubeN:4)
end;

downto

Цикл с уменьшением переменнойЗадача. Вывести на экран кубы целых чисел от 8 до 1 (в обратном порядке).Особенность:

Слайд 91
Цикл с переменной
for := to

значение> do begin
{тело цикла}
end;

Увеличение переменной на 1:

for <переменная> := <начальное значение> downto
<конечное значение> do begin
{тело цикла}
end;

Уменьшение переменной на 1:

Цикл с переменной	for := to   do begin  {тело цикла}    end;Увеличение переменной

Слайд 92
Цикл с переменной
Особенности:
переменная цикла может быть только целой (integer)
шаг изменения переменной

цикла всегда равен 1 (to) или -1 (downto)
если в теле цикла только один оператор, слова begin и end можно не писать:
если конечное значение меньше начального, цикл (to) не выполняется ни разу (проверка условия в начале цикла, цикл с предусловием)

for i:=1 to 8 do
writeln('Привет');

Цикл с переменнойОсобенности:переменная цикла может быть только целой (integer)шаг изменения переменной цикла всегда равен 1 (to) или

Слайд 93
Цикл с переменной
Особенности:
в теле цикла не разрешается изменять переменную цикла (почему?)
при

изменении начального и конечного значения внутри цикла количество шагов не изменится:

N := 8;
for i:=1 to N do begin
writeln('Привет');
N := N + 1;
end;

нет зацикливания

Цикл с переменнойОсобенности:в теле цикла не разрешается изменять переменную цикла (почему?)при изменении начального и конечного значения внутри

Слайд 94
Цикл с переменной
Особенности:
после выполнения цикла во многих системах устанавливается первое значение

переменной цикла, при котором нарушено условие:

for i:=1 to 8 do
writeln('Привет');
writeln('i=', i);

for i:=8 downto 1 do
writeln('Привет');
writeln('i=', i);

i=9

i=0

НЕ ДОКУМЕНТИРОВАНО

Цикл с переменнойОсобенности:после выполнения цикла во многих системах устанавливается первое значение переменной цикла, при котором нарушено условие:for

Слайд 95
Сколько раз выполняется цикл?
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

Сколько раз выполняется цикл?a := 1;for i:=1 to 3 do a := a+1;a = 4a := 1;for

Слайд 96 for N:=1 to 9 do begin
if

??? then begin


end;
end;


Как изменить шаг?

Задача. Вывести на экран кубы нечётных целых чисел от 1 до 9.
Особенность: переменная цикла должна увеличиваться на 2.
Проблема: в Паскале шаг может быть 1 или -1.
Решение:

N mod 2 = 1

cubeN := N*N*N;
writeln(N:4, cubeN:4);

выполняется только для нечетных i

for N:=1 to 9 do begin  if   ???   then begin

Слайд 97
Как изменить шаг? – II
Идея: Надо вывести всего 5 чисел, переменная

k изменяется от 1 до 5. Начальное значение N равно 1, с каждым шагом цикла N увеличивается на 2.
Решение:

???
for k:=1 to 5 do begin
cubeN := N*N*N;
writeln(N:4, cubeN:4);
???
end;

N := N + 2;

N := 1;

Как изменить шаг? – IIИдея: Надо вывести всего 5 чисел, переменная k изменяется от 1 до 5.

Слайд 98
Как изменить шаг? – III
Идея: Надо вывести всего 5 чисел, переменная

k изменяется от 1 до 5. Зная k, надо рассчитать N.


Решение:

N = 2k-1

for k:=1 to 5 do begin
???
cubeN := N*N*N;
writeln(N:4, cubeN:4);
end;

N := 2*k – 1;

Как изменить шаг? – IIIИдея: Надо вывести всего 5 чисел, переменная k изменяется от 1 до 5.

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

{тело цикла}
end;

i := 1;
while i <= 10 do begin
{тело цикла}
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 возможна всегда.

Замена for на while и наоборотfor i:=1 to 10 do begin {тело цикла}end;i := 1;while i =

Слайд 100Задания

«4»: Ввести натуральное число A и вывести числа от A до

1 (через одно) в порядке убывания.
Пример:
Введите натуральное число:
8
Ответ: 8 6 4 2

«3»: Ввести два целых числа a и b (a ≤ b) и вывести кубы всех чисел от a до b.
Пример:
Введите два числа:
4 6
4*4*4=64
5*5*5=125
6*6*6=216

Задания«4»: Ввести натуральное число A и вывести числа от A до 1 (через одно) в порядке убывания.

Слайд 101Задания
«5»: Ввести целое число a и вывести сумму квадратов всех чисел

от 1 до a с шагом 0.1.
Пример:
Введите последнее число:
3
Сумма 91.7

12 + 1.12 + 1.22 +…+ a2

Задания«5»: Ввести целое число a и вывести сумму квадратов всех чисел от 1 до a с шагом

Слайд 102Задания-2
«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

Задания-2«4»: Ввести a и b и вывести квадраты и кубы чисел от a до b.  Пример:		Введите

Слайд 103Программирование на языке Паскаль
Тема 6. Графика
© К.Ю. Поляков, 2006-2010

Программирование  на языке ПаскальТема 6. Графика© К.Ю. Поляков, 2006-2010

Слайд 104
Система координат

(0,0)
(x,y)
X
Y

x
y

Система координат(0,0)(x,y)XYxy

Слайд 105
Управление цветом
Цвет и толщина линий, цвет точек:
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

Управление цветомЦвет и толщина линий, цвет точек:   Pen ( 1, 255, 0, 0 );Цвет и

Слайд 106
Точки, отрезки и ломаные
Pen (1, 0, 255, 0); Line (x1, y1,

x2, y2);

Pen (1, 0, 0, 255);
Point (x, y);

Pen (1, 255, 0, 0); MoveTo (x1, y1); LineTo (x2, y2);
LineTo (x3, y3);
LineTo (x4, y4);
LineTo (x5, y5);

Точки, отрезки и ломаныеPen (1, 0, 255, 0); Line (x1, y1, x2, y2);Pen (1, 0, 0, 255);Point

Слайд 107
Фигуры с заливкой
Pen (1, 0, 0, 255);
Brush (1, 255, 255, 0);
Rectangle

(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);

Фигуры с заливкойPen (1, 0, 0, 255);Brush (1, 255, 255, 0);Rectangle (x1, y1, x2, y2);Pen (1, 255,

Слайд 108
Текст
TextColor (0, 0, 255);
Brush (1, 255, 255, 0);
Font (20, 30, 600);
MoveTo

(x, y);
writeln ('Привет!');

Привет!

(x, y)


размер
10 пикселей

угол
поворота

насыщенность:
400 – нормальный
600 – жирный


30о

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

Слайд 109
Пример


(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.


Пример(200, 50)(100, 100)(300, 200)program qq;begin  Pen(2, 255, 0, 255);  Brush(1, 0, 0, 255);  Rectangle(100,

Слайд 110«3»: «Домик»







«4»: «Лягушка»
Задания



«3»: «Домик» «4»: «Лягушка»Задания

Слайд 111«5»: «Корона»
Задания

«5»: «Корона»Задания

Слайд 112
Штриховка
(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);
...

Rectangle (x1, y1, x2, y2);
h := (x2 – x1) / (N + 1);
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

Штриховка(x1, y1)(x2, y2)N линий (N=5)hRectangle (x1, y1, x2, y2);Line( x1+h,  y1, x1+h,  y2);Line( x1+2*h, y1,

Слайд 113
Штриховка (программа)
(x1, y1)
(x2, y2)



h
program qq;
var i, x1, x2, y1, y2, N:

integer;
h, x: real;
begin
x1 := 100; y1 := 100;
x2 := 300; y2 := 200;
N := 10;
Rectangle (x1, y1, x2, y2);
h := (x2 - x1) / (N + 1);
x := x1 + h;
for i:=1 to N do begin
Line(round(x), y1, round(x), y2);
x := x + h;
end;
end.

N

Штриховка (программа)(x1, y1)(x2, y2)hprogram qq;var i, x1, x2, y1, y2, N: integer;  h, x: real;begin

Слайд 114
Штриховка
(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

Штриховка(x1, y1)(x2, y2)(x3, y2)ah(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,

Слайд 115
Штриховка

(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;

Штриховка(x1, y1)(x2, y2)hxhyyxyLine( 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,

Слайд 116Задания

«3»: Ввести с клавиатуры количество линий, построить фигуру и выполнить штриховку:





«4»: Ввести с клавиатуры количество линий, построить фигуру и выполнить штриховку:

или

Задания«3»: Ввести с клавиатуры количество линий, построить фигуру и выполнить штриховку: «4»: Ввести с клавиатуры количество линий,

Слайд 117Задания

«5»: Ввести с клавиатуры количество линий и построить фигуру:

Задания«5»: Ввести с клавиатуры количество линий и   построить фигуру:

Слайд 118

Как менять цвет?
(x1, y1)
(x2, y2)


Brush ( 1, c, c, c );
Fill

( ???, ??? );

серый: R = G = B

Шаг изменения c:

x

(x-2, y1+2)





hc := 255 div N;
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)-2, y1+2);
x := x + h; c := c + hc;
end;

var c, hc: integer;

Как менять цвет?(x1, y1)(x2, y2)Brush ( 1, c, c, c );Fill ( ???, ??? );серый: R =

Слайд 119
Задания
«4»: Ввести с клавиатуры число линий штриховки и построить фигуру, залив

все области разным цветом.







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

или

или

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

Слайд 120Программирование на языке Паскаль
Тема 7. Процедуры
© К.Ю. Поляков, 2006-2010

Программирование  на языке ПаскальТема 7. Процедуры© К.Ю. Поляков, 2006-2010

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

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

Слайд 122
Процедуры
Процедура – это вспомогательный алгоритм, который предназначен для выполнения некоторых действий.
Применение:
выполнение

одинаковых действий в разных местах программы
разбивка программы (или другой процедуры) на подзадачи для лучшего восприятия
ПроцедурыПроцедура – это вспомогательный алгоритм, который предназначен для выполнения некоторых действий.Применение:выполнение одинаковых действий в разных местах программыразбивка

Слайд 123
Процедуры
Порядок разработки:
выделить одинаковые или похожие действия (три фигуры)
найти в них общее

(размеры, форма, угол поворота) и отличия (координаты, цвет)
отличия записать в виде неизвестных переменных, они будут параметрами процедуры

(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);

тело процедуры

координаты

цвет

параметры

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

Слайд 124Программа
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;

формальные параметры

процедура

Программаprogram qq;begin  Pen(1, 255, 0, 255);  Tr(100, 100, 0, 0, 255);  Tr(200, 100, 0,

Слайд 125
Процедуры
Особенности:
все процедуры расположены выше основной программы
в заголовке процедуры перечисляются формальные параметры,

они обозначаются именами, поскольку могут меняться
при вызове процедуры в скобках указывают фактические параметры (числа или арифметические выражения) в том же порядке

procedure Tr( x, y, r, g, b: integer);

Tr (200, 100, 0, 255, 0);

x

y

r

g

b

ПроцедурыОсобенности:все процедуры расположены выше основной программыв заголовке процедуры перечисляются формальные параметры, они обозначаются именами, поскольку могут менятьсяпри

Слайд 126
Процедуры
Особенности:
для каждого формального параметра после двоеточия указывают его тип
если однотипные параметры

стоят рядом, их перечисляют через запятую
внутри процедуры параметры используются так же, как и переменные

procedure A (x: real; y: integer; z: real);

procedure A (x, z: real; y, k, l: integer);

ПроцедурыОсобенности:для каждого формального параметра после двоеточия указывают его типесли однотипные параметры стоят рядом, их перечисляют через запятуювнутри

Слайд 127
Процедуры
Особенности:
в процедуре можно объявлять дополнительные локальные переменные, остальные процедуры не имеют

к ним доступа


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;

ПроцедурыОсобенности:в процедуре можно объявлять дополнительные локальные переменные, остальные процедуры не имеют к ним доступаprogram qq; procedure A(x,

Слайд 128Задания

«3»: Используя одну процедуру, построить фигуру.







«4»: Используя одну процедуру,

построить фигуру.
Задания«3»: Используя одну процедуру, построить фигуру. «4»: Используя одну процедуру, построить фигуру.

Слайд 129Задания

«5»: Используя одну процедуру, построить фигуру.

Задания«5»: Используя одну процедуру, построить фигуру.

Слайд 130Построение графиков функций

Задача: построить график функции y = x2 на интервале

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

Слайд 131Преобразование координат

(x,y)
x
y
Математическая
система координат
Экранная система координат (пиксели)

(xэ,yэ)


(0,0)
(0,0)
x0
y0
k – масштаб (длина изображения

единичного отрезка на экране)

xэ = x0 + kx
yэ = y0 - ky





Преобразование координат(x,y)xyМатематическая система координатЭкранная система координат (пиксели)(xэ,yэ)xэyэ(0,0)(0,0)x0y0k – масштаб (длина изображения единичного отрезка на экране)xэ = x0

Слайд 132Программа


h – шаг изменения x
на экране
оси координат
цикл построения графика


program qq;
const x0

= 150; y0 = 250; k = 50;
xmin = -2; xmax = 2;
var x, y, h: real;
xe, ye: integer;
begin
Line(0, y0, x0+150, y0);
Line(x0, 0, x0, y0+20);
x := xmin; h := 0.02;
while x <= xmax do begin
y := x*x;
xe := x0 + round(k*x);
ye := y0 - round(k*y);
Point (xe, ye);
x := x + h;
end;
end.
Программаh – шаг изменения xна экранеоси координатцикл построения графикаprogram qq;const x0 = 150; y0 = 250; k

Слайд 133Как соединить точки?

Алгоритм:
Если первая точка
перейти в точку (xэ,yэ)
иначе
отрезок

в точку (xэ,yэ)

Программа:



начальное значение

выбор варианта действий


логическая переменная

var first: boolean;
...
begin
...
first := True;
while x <= xmax do begin
...
if first then begin
MoveTo(xe, ye);
first := False;
end
else LineTo(xe, ye);
...
end;
end.

Как соединить точки?Алгоритм:Если первая точка перейти в точку (xэ,yэ)иначе  отрезок в точку (xэ,yэ)Программа:начальное значениевыбор варианта действийлогическая

Слайд 134Задания

«3»: Построить график функции на интервале [-2,2].




«4»: Построить

графики функций
и
на интервале [-2,2].



Задания«3»: Построить график функции      на интервале [-2,2]. «4»: Построить графики функций

Слайд 135Задания

«5»: Построить графики функций

и
на интервале [-2,2].



Задания«5»: Построить графики функций           ина интервале [-2,2].

Слайд 136Программирование на языке Паскаль
Тема 8. Анимация
© К.Ю. Поляков, 2006-2010

Программирование  на языке ПаскальТема 8. Анимация© К.Ю. Поляков, 2006-2010

Слайд 137
Анимация
Анимация (англ. animation) – оживление изображения на экране.
Задача: внутри синего квадрата

400 на 400 пикселей слева направо двигается желтый квадрат 20 на 20 пикселей. Программа останавливается, если нажата клавиша Esc или квадрат дошел до границы синей области.

Проблема: как изобразить перемещение объекта на экране?
Привязка: состояние объекта задается координатами (x,y)
Принцип анимации:
рисуем объект в точке (x,y)
задержка на несколько миллисекунд
стираем объект
изменяем координаты (x,y)
переходим к шагу 1

АнимацияАнимация (англ. animation) – оживление изображения на экране.Задача: внутри синего квадрата 400 на 400 пикселей слева направо

Слайд 138
Как «поймать» нажатие клавиши?
Событие – это изменение в состоянии какого-либо объекта

или действие пользователя (нажатие на клавишу, щелчок мышкой).
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;

Как «поймать» нажатие клавиши?Событие – это изменение в состоянии какого-либо объекта или действие пользователя (нажатие на клавишу,

Слайд 139

Как выйти из цикла при нажатии 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, если надо остановиться

запуск цикла

Как выйти из цикла при нажатии Esc?program qq;var stop: boolean;   k,code,i: integer; 	begin stop :=

Слайд 140

Процедура (рисование и стирание)
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)?

рисуем: цвет кисти – желтый

стираем: цвет кисти – синий

только заливка!

Процедура (рисование и стирание)procedure Draw(x, y: integer; flag: boolean);begin if flag then  Brush(1, 255, 255, 0)

Слайд 141

Полная программа



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 мс

отключить границу


Полная программаprogram qq;var x, y, k, code, i: integer;  stop: boolean; procedure Draw(x,y: integer; flag: Boolean);

Слайд 142Задания
«3»: Квадрат двигается справа налево:



«4»: Два квадрата двигаются в противоположных направлениях:

Задания«3»: Квадрат двигается справа налево:«4»: Два квадрата двигаются в противоположных направлениях:

Слайд 143Задания

«5»: Два квадрата двигаются в противоположных направлениях и отталкиваются от стенок

синего квадрата:








Задания«5»: Два квадрата двигаются в противоположных направлениях  и отталкиваются от стенок синего квадрата:

Слайд 144
Управление клавишами
Задача: жёлтый квадрат внутри синего квадрата управляется клавишами-стрелками. Коды клавиш:
влево

– 37 вверх – 38 Esc – 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;

если было нажатие на клавишу, …

Управление клавишамиЗадача: жёлтый квадрат внутри синего квадрата управляется клавишами-стрелками. Коды клавиш:			влево – 37		вверх – 38		Esc – 27			вправо

Слайд 145Программа
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;

процедура

основной цикл

обработка событий

Программаprogram qq;var x, y, k, code, i: integer;  stop: boolean;begin ... repeat  Draw(x, y, True);

Слайд 146Как убрать мигание?
Проблема: даже если не нажата никакая клавиша, квадрат перерисовывается

через каждые 20 мс (мигание!)
Что хочется: не перерисовать квадрат, если не было никакого события
Решение: нарисовать квадрат и ждать события
Новая проблема: как ждать события?
Решение новой проблемы: пустой цикл "пока не случилось событие, ничего не делай":

while not IsEvent do;

Как убрать мигание?Проблема: даже если не нажата никакая клавиша, квадрат перерисовывается через каждые 20 мс (мигание!)Что хочется:

Слайд 147Программа
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;

процедура

рисуем квадрат

ждем события

только теперь стираем

Программаprogram qq;var x, y, k, code, i: integer;  stop: boolean;begin ... repeat  Draw(x, y, True);

Слайд 148Задания
«3»: Квадрат в самом начале стоит в правом нижнем углу, и

двигается при нажатии стрелок только вверх или влево:


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













Задания«3»: Квадрат в самом начале стоит в правом нижнем углу, и двигается при нажатии стрелок только вверх

Слайд 149Задания
«5»: Квадрат непрерывно двигается, при нажатии стрелок меняет направление и отталкивается

от стенок синего квадрата:







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

Слайд 150Программирование на языке Паскаль
Тема 9. Функции
© К.Ю. Поляков, 2006-2010

Программирование  на языке ПаскальТема 9. Функции© К.Ю. Поляков, 2006-2010

Слайд 151Функции
Функция – это вспомогательный алгоритм (подпрограмма), результатом работы которого является некоторое

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

Слайд 152
Функции
Задача: составить функцию, которая вычисляет наибольшее из двух значений, и привести

пример ее использования
Функция:

формальные параметры




это результат функции

результат - целое число

локальная переменная


function Max (a, b: integer): integer;
var x: integer;
begin
if a > b then x := a
else x := b;
Max := x;
end;


ФункцииЗадача: составить функцию, которая вычисляет наибольшее из двух значений, и привести пример ее использованияФункция:формальные параметрыэто результат функциирезультат

Слайд 153Функции
Особенности:
заголовок начинается словом function
формальные параметры описываются так же, как и для

процедур
в конце заголовка через двоеточие указывается тип результата
функции располагаются ВЫШЕ основной программы
ФункцииОсобенности:заголовок начинается словом functionформальные параметры описываются так же, как и для процедурв конце заголовка через двоеточие указывается

Слайд 154Функции
Особенности:
можно объявлять и использовать локальные переменные
значение, которое является результатом, записывается в

переменную, имя которой совпадает с названием функции; объявлять ее НЕ НАДО:
ФункцииОсобенности:можно объявлять и использовать локальные переменныезначение, которое является результатом, записывается в переменную, имя которой совпадает с названием

Слайд 155Программа
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

фактические параметры

вызов функции

Программаprogram qq;var a, b, max: integer;begin writeln('Введите два числа'); read(a, b); max := Max ( a, b

Слайд 156
Задания
«3»: Составить функцию, которая определяет наименьшее из трех чисел и привести

пример ее использования.
Пример:
Введите два числа:
28 15
Наименьшее число – 15.
«4»: Составить функцию, которая определяет наибольшее из трех чисел и привести пример ее использования.
Пример:
Введите три числа:
28 15 10
Наибольшее число – 28.
Задания«3»: Составить функцию, которая определяет наименьшее из трех чисел и привести пример ее использования.  Пример:

Слайд 157
Задания
«5»: Составить функцию, которая определяет сумму всех чисел от 1 до

N и привести пример ее использования.
Пример:
Введите число:
100
сумма = 5050
Задания«5»: Составить функцию, которая определяет сумму всех чисел от 1 до N и привести пример ее использования.

Слайд 158Логические функции
Задача: составить функцию, которая определяет, верно ли, что заданное число

– четное.
Особенности:
ответ – логическое значение (True или False)
результат функции можно использовать как логическую величину в условиях (if, while)
Алгоритм: если число делится на 2, оно четное.

if N mod 2 = 0 then
{ число N четное}
else { число N составное }

Логические функцииЗадача: составить функцию, которая определяет, верно ли, что заданное число – четное.Особенности:ответ – логическое значение (True

Слайд 159Логические функции
program qq;
var N: integer;






begin
writeln('Введите целое число');
read(N);
if Chet(N)

then
writeln(N, ' – четное число')
else writeln(N, ' – нечетное число');
end.

function Chet(N: integer): boolean;
begin
if N mod 2 = 0 then
Chet := True
else Chet := False;
end;

вызов функции

результат – логическое значение

или
Chet:=(N mod 2)= 0;

Логические функцииprogram qq;var N: integer;begin writeln('Введите целое число'); read(N); if Chet(N) then    writeln(N, '

Слайд 160Задания

«3»: Составить функцию, которая определяет, верно ли, что число оканчивается на

0.
Пример:
Введите число: Введите число:
170 237
Верно. Неверно.
«4»: Составить функцию, которая определяет, верно ли, что в числе вторая цифра с конца больше 6.
Пример:
Введите число: Введите число:
178 237
Верно. Неверно.
Задания«3»: Составить функцию, которая определяет, верно ли, что число оканчивается на 0.  Пример:	 Введите число:	Введите число:

Слайд 161Задания

«5»: Составить функцию, которая определяет, верно ли, что переданное ей число

– простое (делится только на само себя и на единицу).
Пример:
Введите число: Введите число:
29 28
Простое число. Составное число.
Задания«5»: Составить функцию, которая определяет, верно ли, что переданное ей число – простое (делится только на само

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

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

Слайд 163Случайные процессы
Случайно…
встретить друга на улице
разбить тарелку
найти 10 рублей
выиграть в лотерею
Случайный выбор:
жеребьевка

на соревнованиях
выигравшие номера в лотерее

Как получить случайность?

Случайные процессыСлучайно…встретить друга на улицеразбить тарелкунайти 10 рублейвыиграть в лотереюСлучайный выбор:жеребьевка на  соревнованияхвыигравшие номера  в

Слайд 164
Случайные числа на компьютере
Электронный генератор
нужно специальное устройство
нельзя воспроизвести результаты

318458191041
564321
209938992481
458191
938992
малый период (последовательность

повторяется через 106 чисел)

Метод середины квадрата (Дж. фон Нейман)

в квадрате

Псевдослучайные числа – обладают свойствами случайных чисел, но каждое следующее число вычисляется по заданной формуле.

Случайные числа на компьютереЭлектронный генераторнужно специальное устройствонельзя воспроизвести результаты318458191041564321209938992481458191938992малый период  (последовательность повторяется через 106 чисел)Метод середины

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

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

Слайд 166Распределение случайных чисел
Особенности:
распределение – это характеристика всей последовательности, а не

одного числа
равномерное распределение одно, компьютерные датчики случайных чисел дают равномерное распределение
неравномерных – много
любое неравномерное можно получить с помощью равномерного


a

b

a

b

равномерное распределение

неравномерное распределение

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

Слайд 167Генератор случайных чисел в Паскале
Целые числа в интервале [0,N):
var

x: integer;
...
x := random ( 100 ); { интервал [0,99] }
Вещественные числа в интервале [0,1)
var x: real;
...
x := random; { интервал [0,1) }

Генератор случайных чисел в ПаскалеЦелые числа в интервале [0,N):  var x: integer; ... x := random

Слайд 168Случайные числа
Задача: заполнить прямоугольник 400 на 300 пикселей равномерно точками случайного

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

Слайд 169Программа
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

Программаprogram qq;var x, y, k, code, i: integer;  stop: boolean;begin stop := False; repeat

Слайд 170Задания
«3»: Заполнить квадрат точками случайного цвета. размер квадрата ввести с клавиатуры:

Пример:
Введите размер квадрата:
150


«4»: Заполнить область точками случайного цвета:
Задания«3»: Заполнить квадрат точками случайного цвета. размер квадрата ввести с клавиатуры:	 Пример:	 Введите размер квадрата:	 150«4»: Заполнить

Слайд 171Задания
«5»: Заполнить область точками случайного цвета:
или

Задания«5»: Заполнить область точками случайного цвета:или

Слайд 172«4»: Ввести с клавиатуры координаты углов прямоугольника и заполнить его точками

случайного цвета.




«5»: Заполнить треугольник точками случайного цвета (равномерно или неравномерно).
Подсказка: возьмите равнобедренный треугольник с углом 45о.

Задания


(100,100)

(300,200)

«4»: Ввести с клавиатуры координаты углов прямоугольника и заполнить его точками случайного цвета. «5»: Заполнить треугольник точками

Слайд 173
Конец фильма

Конец фильма

Что такое shareslide.ru?

Это сайт презентаций, где можно хранить и обмениваться своими презентациями, докладами, проектами, шаблонами в формате PowerPoint с другими пользователями. Мы помогаем школьникам, студентам, учителям, преподавателям хранить и обмениваться учебными материалами.


Для правообладателей

Яндекс.Метрика

Обратная связь

Email: Нажмите что бы посмотреть