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

Содержание

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

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

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

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

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

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

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

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

компьютера

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

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

Слайд 4
Языки программирования
Машинно-ориентированные (низкого уровня) - каждая команда соответствует одной команде процессора

(ассемблер)
Языки высокого уровня – приближены к естественному (английскому) языку, легче воспринимаются человеком, не зависят от конкретного компьютера
для обучения: Бейсик, ЛОГО, Паскаль
профессиональные: Си, Фортран, Паскаль
для задач искусственного интеллекта: Пролог, ЛИСП
для Интернета: JavaScript, Java, Perl, PHP, ASP
Языки программированияМашинно-ориентированные (низкого уровня) - каждая команда соответствует одной команде процессора (ассемблер)Языки высокого уровня – приближены к

Слайд 5
Язык Паскаль
1970 – Никлаус Вирт (Швейцария)
язык для обучения студентов
разработка

программ «сверху вниз»





разнообразные структуры данных (массивы, структуры, множества)
Язык Паскаль1970 – Никлаус Вирт (Швейцария) язык для обучения студентов разработка программ «сверху вниз» разнообразные структуры данных

Слайд 6
Из чего состоит программа?
program ;
const …;{константы}
var …; {переменные}

begin
… {основная

программа}
end.

{ процедуры и функции }

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

Из чего состоит программа?program ;const …;{константы}var …; {переменные}begin … {основная программа}end.{ процедуры и функции }комментарии в фигурных

Слайд 7
Из чего состоит программа?
Константа – постоянная величина, имеющая имя.
Переменная – изменяющаяся

величина, имеющая имя (ячейка памяти).
Процедура – вспомогательный алгоритм, описывающий некоторые действия (рисование окружности).
Функция – вспомогательный алгоритм для выполнения вычислений (вычисление квадратного корня, sin).
Из чего состоит программа?Константа – постоянная величина, имеющая имя.Переменная – изменяющаяся величина, имеющая имя (ячейка памяти).Процедура –

Слайд 8
Имена программы, констант, переменных
Имена могут включать
латинские буквы (A-Z)


цифры


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

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

Имена НЕ могут включать
русские буквы
пробелы
скобки, знаки +, =, !, ? и др.

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

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

Имена программы, констант, переменныхИмена могут включатьлатинские буквы (A-Z)цифрызнак подчеркивания _заглавные и строчные буквы не различаютсяИмена НЕ могут

Слайд 9
Константы
const
i2 = 45; { целое число }
pi =

3.14; { вещественное число }

qq = 'Вася'; { строка символов }

L = True; { логическая величина }

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

можно использовать русские буквы!

может принимать два значения:
True (истина, "да")
False (ложь, "нет")

Константыconst 	  	i2 = 45; { целое число }	pi = 3.14; { вещественное число }	qq =

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

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

Типы переменных:
integer { целая }
real { вещественная }
char { один символ }
string { символьная строка }
boolean { логическая }

Объявление переменных (выделение памяти):
var a, b: integer;
Q: real;
s1, s2: string;

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

Слайд 11
Как изменить значение переменной?
Оператор – это команда языка программирования высокого уровня.
Оператор

присваивания служит для изменения значения переменной.

Пример:
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

Как изменить значение переменной?Оператор – это команда языка программирования высокого уровня.Оператор присваивания служит для изменения значения переменной.Пример:	program

Слайд 12
Оператор присваивания
Общая структура:
:= ;
Арифметическое выражение может включать
константы
имена переменных
знаки арифметических

операций:
+ - * / div mod

вызовы функций
круглые скобки ( )

умножение

деление

деление нацело

остаток от деления

Оператор присваиванияОбщая структура:	 := ;Арифметическое выражение может включатьконстантыимена переменныхзнаки арифметических операций:	 	 + -  *

Слайд 13 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;

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

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

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

2 3 5 4 1 7 8 6 9
z := (5*a*c+3*(c-d))/a*(b-c)/ b;

2 6 3 4 7 5 1 12 8 11 10 9
x:=(a*a+5*c*c-d*(a+b))/((c+d)*(d-2*a));



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

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

их сумму.

Простейшее решение:
program qq;
var a, b, c: integer;
begin
read ( a, b );
c := a + b;
writeln ( c );
end.

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

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

( a, b ); { ввод значений переменных a и b}

Как вводить два числа?
через пробел:
25 30
через Enter:
25
30

Оператор вводаread ( a );  { ввод значения переменной a}read ( a, b ); { ввод

Слайд 18
Оператор вывода
write ( a ); { вывод значения переменной a}
writeln

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

writeln ( 'Привет!' ); { вывод текста}

writeln ( 'Ответ: ', c ); { вывод текста и значения переменной c}

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

Оператор выводаwrite ( a );  { вывод значения переменной a}writeln ( a ); { вывод значения

Слайд 19
Форматы вывода
program qq;
var i: integer;
x: real;
begin
i := 15;

writeln ( '>', i, '<' );
writeln ( '>', i:5, '<' );
x := 12.345678;
writeln ( '>', x, '<' );
writeln ( '>', x:10, '<' );
writeln ( '>', x:7:2, '<' );
end.

>15<
> 15<

>1.234568E+001<
> 1.23E+001<
> 12.35<

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

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

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

Форматы выводаprogram qq;var i: integer;  x: real;begin i := 15; writeln ( '>', i, '', i:5,

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

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

"ввод"

блок "процесс"

блок "вывод"

блок "конец"

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

Слайд 22
Задания
"4": Ввести три числа, найти их сумму и произведение.
Пример:

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

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

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

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

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

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

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

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

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

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

Слайд 26
Вариант 1. Программа
program qq;
var a, b, max: integer;
begin
writeln('Введите два

целых числа');
read ( a, b );
if a > b then begin

end
else begin

end;
writeln ('Наибольшее число ', max);
end.


max := a;

max := b;

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

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

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


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

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

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

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

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

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

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

Слайд 30
Вариант 2. Программа
program qq;
var a, b, max: integer;
begin
writeln('Введите два

целых числа');
read ( a, b );
max := a;
if b > a then

writeln ('Наибольшее число ', max);
end.

max := b;

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


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

Слайд 31
Вариант 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,

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

Слайд 33
Задания
"4": Ввести три числа и найти наибольшее из них.
Пример:
Введите

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

Слайд 34Программирование на языке Паскаль
Тема 3. Сложные условия

Программирование  на языке ПаскальТема 3. Сложные условия

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

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

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




да
нет
x >= 25?


да
нет
x

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

Слайд 37

Вариант 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

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


да
нет
x >= 25 и
x

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

Слайд 39

Вариант 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 (x

Слайд 40
Сложные условия
Сложное условие – это условие, состоящее из нескольких простых условий

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

равно

не равно

Сложные условияСложное условие – это условие, состоящее из нескольких простых условий (отношений), связанных с помощью логических операций:not

Слайд 41
Сложные условия
Порядок выполнения
выражения в скобках
not
and
or, xor
=, =,
Особенность

– каждое из простых условий обязательно заключать в скобки.
Пример
4 1 6 2 5 3
if not (a > b) or (c <> d) and (b <> a)
then begin
...
end
Сложные условияПорядок выполнениявыражения в скобкахnotandor, xor=, =, Особенность – каждое из простых условий обязательно заключать в скобки.Пример

Слайд 42Истинно или ложно при 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) xor not (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 <

Слайд 43
Задания
"4": Ввести номер месяца и вывести название времени года.
Пример:
Введите

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

Слайд 44Программирование на языке Паскаль
Тема 4. Циклы

Программирование  на языке ПаскальТема 4. Циклы

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

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

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

начало
i, i2, i3
конец
нет
да
i

:= i * i;
i3 := i2 * i;

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

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

вычисляем квадрат и куб

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

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

Алгоритмначалоi, i2, i3конецнетдаi

Слайд 47Алгоритм (с блоком "цикл")

начало
i, i2, i3
конец

i2 := i * i;
i3 :=

i2 * i;

i := 1,8

блок "цикл"


тело цикла


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


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

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

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

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

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

чисел от 8 до 1 (в обратном порядке).
Особенность: переменная цикла должна уменьшаться.
Решение:
...
for i:=8 1 do begin
i2 := i*i;
i3 := i2*i;
writeln(i:4, i2:4, i3:4);
end;
...

downto

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Слайд 55
Как изменить шаг?
Задача. Вывести на экран квадраты и кубы нечётных целых

чисел от 1 до 9.
Особенность: переменная цикла должна увеличиваться на 2.
Проблема: в Паскале шаг может быть 1 или -1.
Решение:
...
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;
...

i mod 2 = 1


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

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

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

k изменяется от 1 до 5. Начальное значение i равно 1, с каждым шагом цикла i увеличивается на 2.
Решение:
...
???
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;

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

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

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


Решение:
...
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;

i = 2k-1

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

Слайд 58
Задания
"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

Задания

Слайд 59Программирование на языке Паскаль
Тема 5. Циклы с условием

Программирование  на языке ПаскальТема 5. Циклы с условием

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

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




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

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

начало
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выполнять

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


, n1: integer;

n1 := n;

n1,

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

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

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


end;

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

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

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

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

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

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

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

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

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

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

Слайд 66
Замена 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 =

Слайд 67
Задания
"4": Ввести целое число и найти сумму его цифр.
Пример:
Введите

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

Слайд 68
Последовательности
Примеры:
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

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

Слайд 69
Последовательности
Задача: найти сумму всех элементов последовательности,
которые по модулю больше

0,001:

Элемент последовательности (начиная с №2):

b := b+1;

c := 2*c;

z := -z;

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

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

начало
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;

первый элемент



новый элемент

изменение

АлгоритмначалоSконецнетда|a| > 0.001?S := S + a;S := 0; b := 1;  c := 2; z

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


переход к следующему слагаемому


начальные значения

увеличение суммы

расчет элемента последовательности

Программаprogram qq;var b, c, z: integer;  S, a: real;begin  S := 0; z := -1;

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


Ответ:
S =

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

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

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

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

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

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

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


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

n

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


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

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

read(n);
until n > 0;
... { основной алгоритм }
end.


until n > 0;

условие ВЫХОДА

Особенности:
тело цикла всегда выполняется хотя бы один раз
после слова until ("до тех пор, пока не…") ставится условие ВЫХОДА из цикла

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

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

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

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

Слайд 78Программирование на языке Паскаль
Тема 6. Оператор выбора

Программирование  на языке ПаскальТема 6. Оператор выбора

Слайд 79
Оператор выбора
Задача: Ввести номер месяца и вывести количество

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

Слайд 80Алгоритм
начало
конец

оператор выбора
ни один вариант не подошел
ввод M

да
нет
M = 1?
D := 31;
нет
M

= 2?

D := 28;

да

нет

M = 12?

D := 31;

да

вывод D

ошибка




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

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


ни один вариант не подошел

Программаprogram qq;var M, D: integer;begin  writeln('Введите номер месяца:');  read ( M );  case M

Слайд 82
Оператор выбора
Особенности:
после 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;

Оператор выбораОсобенности:после case может быть имя переменной или арифметическое выражение целого типа (integer)  или символьного типа

Слайд 83
Оператор выбора
Особенности:
если нужно выполнить только один оператор, слова begin и end

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

case i+3 of
1: a := b;
1: a := c;
end;

case i+3 of
1: a := b;
2: a := c;
end;

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

Слайд 84
Оператор выбора
Особенности:
значения, при которых выполняются одинаковые действия, можно группировать
case i of


1: a := b;
2,4,6: a := c;
10..15: a := d;
20,21,25..30: a := e;
else writeln('Ошибка');
end;

перечисление

диапазон

смесь

Оператор выбораОсобенности:значения, при которых выполняются одинаковые действия, можно группироватьcase i of 1:

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


Что неправильно?case a of 2: begin a := b; 4: a := c;end;case a of 2: a

Слайд 86
Задания (с защитой от неверного ввода)
"4": Ввести номер месяца и вывести

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

Слайд 87Программирование на языке Паскаль
Тема 7. Графика

Программирование  на языке ПаскальТема 7. Графика

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

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

x
y

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

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

Слайд 90
Точки, отрезки и ломаные
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

Слайд 91
Фигуры с заливкой
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,

Слайд 92
Текст
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

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


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

Слайд 94
Задания
"4": "Лягушка"







"5": "Корона"






Задания

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

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

Слайд 96

Как менять цвет?
(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;

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

Слайд 97
Штриховка
(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 := x2 – x1;
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,

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

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

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

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







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

Слайд 100Программирование на языке Паскаль
Тема 8. Графики функций

Программирование  на языке ПаскальТема 8. Графики функций

Слайд 101
Построение графиков функций
Задача: построить график функции y = 3 sin(x) на

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

Слайд 102
Преобразование координат
(x,y)

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

(xэ,yэ)



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

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

xэ = a + kx
yэ = b - ky

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

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


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 <= xmax do begin
y := 3*sin(x);
xe := a + round(k*x);
ye := b - round(k*y);
Point (xe, ye);
x := x + h;
end;
end.

Программа2πh – шаг изменения xw – длина оси ОХ в пикселяхна экранеоси координатцикл построения графикаprogram qq;const a

Слайд 104
Как соединить точки?
Алгоритм:
Если первая точка
перейти в точку (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э)Программа:начальное значениевыбор варианта действийлогическая

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







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


Задания

Слайд 106Программирование на языке Паскаль
Тема 9. Процедуры

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

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

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

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

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

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

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

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

заголовок


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

координаты

цвет

параметры

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

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

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

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

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

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

x

y

r

g

b

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

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

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

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

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

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

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

к ним доступа



program qq;
procedure A(x, y: integer);
var a, b: real;
begin
a := (x + y)/6;
...
end;
begin
...
end.


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

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

Слайд 114Параметры-переменные
Задача: составить процедуру, которая меняет местами значения двух переменных.
Особенности:
надо, чтобы изменения,

сделанные в процедуре, стали известны вызывающей программе

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

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

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

вызова
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

параметры могут изменяться





Параметры-переменныеПрименение:  таким образом процедура (и функция) может возвращать несколько значений,Запрещенные варианты вызоваExchange ( 2, 3 );

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







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


Задания

Слайд 117Программирование на языке Паскаль
Тема 10. Рекурсия

Программирование  на языке ПаскальТема 10. Рекурсия

Слайд 118
Рекурсивные объекты
Рекурсивный объект – это объект, определяемый через один или несколько

таких же объектов.

У попа была собака, он ее любил.
Она съела кусок мяса, он ее убил.
В ямку закопал, надпись написал:

Сказка о попе и собаке

Примеры:

Сказка о попе и собаке:

Факториал:


если

если

Рисунок с рекурсией:

Рекурсивные объектыРекурсивный объект – это объект, определяемый через один или несколько таких же объектов. У попа была

Слайд 119
Дерево Пифагора
Дерево Пифагора из N уровней – это ствол и отходящие

от него симметрично два дерева Пифагора из N-1 уровней, такие что длина их стволов в 2 раза меньше и угол между ними равен 90o.


6 уровней:



Дерево ПифагораДерево Пифагора из N уровней – это ствол и отходящие от него симметрично два дерева Пифагора

Слайд 120
Дерево Пифагора
Особенности:
когда остановиться?
деревья имеют различный наклон
когда число оставшихся уровней станет равно

нулю!


(x1, y1)

(x0, y0)



α

α+45o


α-45o

L

x1 = x0 + L·cos(α)
y1 = y0 – L·sin(α)

наклон "дочерних" деревьев

α + π/4
α – π/4

Дерево ПифагораОсобенности:когда остановиться?деревья имеют различный наклонкогда число оставшихся уровней станет равно нулю!(x1, y1)(x0, y0)αα+45oα-45oLx1 = x0 +

Слайд 121Процедура

угол α
длина ствола

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

Рекурсивной называется процедура, вызывающая сама себя.

Процедураугол αдлина стволаprocedure Pifagor(x0, y0, a, L: real;

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

program qq;
procedure Pifagor(x0, y0, a, L: real;

N: integer);
...
end;
begin
Pifagor (250, 400, pi/2, 150, 8);
end;

угол α

длина ствола

число уровней

x0

y0

Pifagor (250, 400, 2*pi/3, 150, 8);

Программаprogram qq; procedure Pifagor(x0, y0, a, L: real;

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







"5": Используя рекурсивную процедуру,

построить фигуру:


Задания


Слайд 124Программирование на языке Паскаль
Тема 11. Анимация

Программирование  на языке ПаскальТема 11. Анимация

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

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

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

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

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

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

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

– простое.
Особенности:
ответ – логическое значение (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 составное }


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

Слайд 157Логические функции
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 <= N do
if N mod i = 0 then count := count + 1;
i := i + 1;
end;
Prime := (count = 0);
end;


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

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

условие – это логическое значение

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

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

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

Слайд 159
Задания (вариант 2)
"4": Составить функцию, которая определяет наибольший общий делитель двух

натуральных и привести пример ее использования.
Пример:
Введите два числа:
14 21
НОД(14,21)=7
"5": Составить функцию, которая вычисляет функцию синус как сумму ряда (с точностью 0.001)

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

x в радианах!

Задания (вариант 2)

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

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


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

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

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

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