Что такое findslide.org?

FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.


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

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

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

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

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

Содержание

Программирование на языке ПаскальТема 1. Введение© К.Ю. Поляков, 2006-2007
Программирование  на языке Паскаль© К.Ю. Поляков, 2006-2007ВведениеВетвленияСложные условияЦиклыЦиклы с условиемОператор выбораГрафикаГрафики функцийПроцедурыРекурсияАнимацияСлучайные числаФункции Программирование  на языке ПаскальТема 1. Введение© К.Ю. Поляков, 2006-2007 АлгоритмСвойства алгоритмадискретность: состоит из отдельных шагов (команд)понятность: должен включать только команды, известные ПрограммаПрограмма – это алгоритм, записанный на каком-либо языке программированиянабор команд для компьютераКоманда Языки программированияМашинно-ориентированные (низкого уровня) - каждая команда соответствует одной команде процессора (ассемблер)Языки Язык Паскаль1970 – Никлаус Вирт (Швейцария) язык для обучения студентов разработка программ Из чего состоит программа?program ;const …;{константы}var …; {переменные}begin … {основная программа}end.{ процедуры Из чего состоит программа?Константа – постоянная величина, имеющая имя.Переменная – изменяющаяся величина, Имена программы, констант, переменныхИмена могут включатьлатинские буквы (A-Z)цифрызнак подчеркивания _заглавные и строчные Константыconst 	  	i2 = 45; { целое число }	pi = 3.14; ПеременныеПеременная – это величина, имеющая имя, тип и значение. Значение переменной можно Как изменить значение переменной?Оператор – это команда языка программирования высокого уровня.Оператор присваивания Оператор присваиванияОбщая структура:Арифметическое выражение может включатьконстантыимена переменныхзнаки арифметических операций:	 	 + - program qq;	var a, b: integer;		 x, y: real; 	begin	 a := 5; Ручная прокрутка программыprogram qq;var 	a, b: integer;begin a := 5; b := Порядок выполнения операцийвычисление выражений в скобкахумножение, деление, div, mod слева направосложение и Сложение двух чиселЗадача. Ввести два целых числа и вывести на экран их Оператор вводаread ( a );  { ввод значения переменной a}read ( Оператор выводаwrite ( a );  { вывод значения переменной a}writeln ( Форматы выводаprogram qq;var i: integer;  x: real;begin i := 15; writeln Полное решение	program qq;	var a, b, c: integer;	begin  writeln('Введите два целых числа'); Блок-схема линейного алгоритманачалоконецc := a + b;ввод a, bвывод cблок Задания Программирование  на языке ПаскальТема 2. Ветвления© К.Ю. Поляков, 2006-2007 Разветвляющиеся алгоритмыЗадача. Ввести два целых числа и вывести на экран наибольшее из Вариант 1. Блок-схемаполная форма ветвленияблок Вариант 1. Программа	max := a;max := b;полная форма условного оператора	program qq;	var a, Условный оператор	if then begin  {что делать, если условие верно} Что неправильно?	if a > b then begin  a := b; Вариант 2. Блок-схеманеполная форма ветвления Вариант 2. Программа		program qq;	var a, b, max: integer;	begin  writeln('Введите два целых Вариант 2Б. Программа	program qq;	var a, b, max: integer;	begin  writeln('Введите два целых Что неправильно?	if a > b then begin   a := b; Задания Программирование  на языке ПаскальТема 3. Сложные условия© К.Ю. Поляков, 2006-2007 Сложные условияЗадача. Фирма набирает сотрудников от 25 до 40 лет включительно. Ввести Вариант 1. Алгоритмначаловвод x'подходит'конецданетx >= 25?данетx Вариант 1. Программа		program qq;	var x: integer;	begin  writeln('Введите возраст');  read ( Вариант 2. Алгоритмначаловвод x'подходит'данетx >= 25  иx Вариант 2. Программасложное условие	program qq;	var x: integer;	begin  writeln('Введите возраст');  read Сложные условияСложное условие – это условие, состоящее из нескольких простых условий (отношений), Сложные условияПорядок выполнениявыражения в скобкахnotandor, xor=, =, Особенность – каждое из простых Истинно или ложно при a := 2; b := 3; c := Задания Программирование  на языке ПаскальТема 4. Циклы© К.Ю. Поляков, 2006-2007 ЦиклыЦикл – это многократное выполнение одинаковой последовательности действий.цикл с известным числом шаговцикл Алгоритмначалоi, i2, i3конецнетдаi Алгоритм (с блоком Программаprogram qq;var i, i2, i3: integer;begin  for i:=1 to 8 do Цикл с уменьшением переменнойЗадача. Вывести на экран квадраты и кубы целых чисел Цикл с переменной	for := to   do begin  {тело цикла} Цикл с переменнойОсобенности:переменная цикла может быть только целой (integer)шаг изменения переменной цикла Цикл с переменнойОсобенности:в теле цикла не разрешается изменять переменную цикла (почему?)при изменении Цикл с переменнойОсобенности:после выполнения цикла во многих системах устанавливается первое значение переменной Сколько раз выполняется цикл?a := 1;for i:=1 to 3 do a := for i:=1 to 9 do begin  if   ??? Как изменить шаг? – IIИдея: Надо вывести всего 5 чисел, переменная k Как изменить шаг? – IIIИдея: Надо вывести всего 5 чисел, переменная k Задания Программирование  на языке ПаскальТема 5. Циклы с условием© К.Ю. Поляков, 2006-2007 Цикл с неизвестным числом шаговПример: Отпилить полено от бревна. Сколько раз надо Алгоритмначалоcountконецнетдаn 0?count := 0;count := count + 1;  n := n Программаprogram qq;var n, count: integer;begin writeln('Введите целое число'); read(n); count := 0; Цикл с условием	while do begin  {тело цикла}    end;Особенности:можно Цикл с условиемОсобенности:условие пересчитывается каждый раз при входе в циклесли условие на Сколько раз выполняется цикл?a := 4; b := 6;while a < b Замена for на while и наоборотfor i:=1 to 10 do begin {тело Задания ПоследовательностиПримеры:1, 2, 3, 4, 5, …1, 2, 4, 7, 11, 16, …1, ПоследовательностиЗадача: найти сумму всех элементов последовательности,  которые по модулю больше 0,001: АлгоритмначалоSконецнетда|a| > 0.001?S := S + a;S := 0; b := 1; Программаprogram qq;var b, c, z: integer;  S, a: real;begin  S Задания Цикл с постусловиемЗадача: Ввести целое положительное число ( проверку условия цикла надо Цикл с постусловием: алгоритм началоконецданетn > 0?тело циклаусловие ВЫХОДАблок Программаprogram qq;var n: integer;begin  repeat   writeln('Введите положительное число'); Сколько раз выполняется цикл?a := 4; b := 6;repeat a := a Задания (с защитой от неверного ввода) Программирование  на языке ПаскальТема 6. Оператор выбора© К.Ю. Поляков, 2006-2007 Оператор выбораЗадача: Ввести номер месяца и вывести количество Алгоритмначалоконецоператор выборани один вариант не подошелввод MданетM = 1?D := 31;нетM = Программаprogram qq;var M, D: integer;begin  writeln('Введите номер месяца:');  read ( Оператор выбораОсобенности:после case может быть имя переменной или арифметическое выражение целого типа Оператор выбораОсобенности:если нужно выполнить только один оператор, слова begin и end можно Оператор выбораОсобенности:значения, при которых выполняются одинаковые действия, можно группироватьcase i of 1: Что неправильно?case a of 2: begin a := b; 4: a := Задания (с защитой от неверного ввода) Программирование  на языке ПаскальТема 7. Графика© К.Ю. Поляков, 2006-2007 Система координат(0,0)(x,y)XYxy Управление цветомЦвет и толщина линий, цвет точек:   Pen ( 1, Точки, отрезки и ломаныеPen (1, 0, 255, 0); Line (x1, y1, x2, Фигуры с заливкойPen (1, 0, 0, 255);Brush (1, 255, 255, 0);Rectangle (x1, ТекстTextColor (0, 0, 255);Brush (1, 255, 255, 0);Font (20, 30, 600);MoveTo (x, Пример(200, 50)(100, 100)(300, 200)program qq;begin  Pen(2, 255, 0, 255);  Brush(1, Задания Штриховка(x1, y1)(x2, y2)N линий (N=5)hRectangle (x1, y1, x2, y2);Line( x1+h,  y1, Как менять цвет?(x1, y1)(x2, y2)Brush ( 1, c, c, c );Fill ( Штриховка(x1, y1)(x2, y2)(x3, y2)ah(x3+a, y1)Line( x1+h,  y1, x1+h-a,  y2);Line( x1+2*h, Штриховка(x1, y1)(x2, y2)hxhyyxyLine( x1, y1+hy,  x1+hx,  y1+hy) ;Line( x1, y1+2*hy, Задания Программирование  на языке ПаскальТема 8. Графики функций© К.Ю. Поляков, 2006-2007 Построение графиков функцийЗадача: построить график функции y = 3 sin(x) на интервале Преобразование координат(x,y)XYxyМатематическая система координатЭкранная система координат (пиксели)(xэ,yэ)xэyэ(0,0)(0,0)abk – масштаб (длина изображения единичного Программа2πh – шаг изменения xw – длина оси ОХ в пикселяхна экранеоси Как соединить точки?Алгоритм:Если первая точка перейти в точку (xэ,yэ)иначе  отрезок в Задания Программирование  на языке ПаскальТема 9. Процедуры© К.Ю. Поляков, 2006-2007 ПроцедурыЗадача: Построить фигуру:Особенность: Три похожие фигуры.общее:  размеры, угол поворотаотличия: координаты, цвет ПроцедурыПроцедура – это вспомогательный алгоритм, который предназначен для выполнения некоторых действий.Применение:выполнение одинаковых ПроцедурыПорядок разработки:выделить одинаковые или похожие действия (три фигуры)найти в них общее (размеры, Программаprogram qq;begin  Pen(1, 255, 0, 255);  Tr(100, 100, 0, 0, ПроцедурыОсобенности:все процедуры расположены выше основной программыв заголовке процедуры перечисляются формальные параметры, они ПроцедурыОсобенности:для каждого формального параметра после двоеточия указывают его типесли однотипные параметры стоят ПроцедурыОсобенности:в процедуре можно объявлять дополнительные локальные переменные, остальные процедуры не имеют к Параметры-переменныеЗадача: составить процедуру, которая меняет местами значения двух переменных.Особенности:надо, чтобы изменения, сделанные Параметры-переменныеПрименение:  таким образом процедура (и функция) может возвращать несколько значений,Запрещенные варианты Задания Программирование  на языке ПаскальТема 10. Рекурсия© К.Ю. Поляков, 2006-2007 Рекурсивные объектыРекурсивный объект – это объект, определяемый через один или несколько таких Дерево ПифагораДерево Пифагора из N уровней – это ствол и отходящие от Дерево ПифагораОсобенности:когда остановиться?деревья имеют различный наклонкогда число оставшихся уровней станет равно нулю!(x1, Процедураугол αдлина стволаprocedure Pifagor(x0, y0, a, L: real; Программаprogram qq; procedure Pifagor(x0, y0, a, L: real; Программирование  на языке ПаскальТема 11. Анимация© К.Ю. Поляков, 2006-2007 АнимацияАнимация (англ. animation) – оживление изображения на экране.Задача: внутри синего квадрата 400 Как Как выйти из цикла при нажатии Esc?program qq;var stop: boolean; Процедура (рисование и стирание)procedure Draw(x, y: integer; flag: boolean);begin if flag then Полная программаprogram qq;var x, y, k, code, i: integer;  stop: boolean; Управление клавишамиЗадача: жёлтый квадрат внутри синего квадрата управляется клавишами-стрелками. Коды клавиш:			влево – Программаprogram qq;var x, y, k, code, i: integer;  stop: boolean;begin ... Как убрать мигание?Проблема: даже если не нажата никакая клавиша, квадрат перерисовывается через Программаprogram qq;var x, y, k, code, i: integer;  stop: boolean;begin ... ВращениеЗадача: изобразить модель вращения Земли вокруг Солнца.Проблема: движение по окружности, как изменять Процедураprocedure Draw(x, y: integer; flag: boolean);const r = 10;begin if flag then Константы и переменныеprogram qq;const rSun = 60;  { радиус Солнца} Основная программаprogram qq;...begin Brush(1, 0, 0, 0); Fill(1,1); Brush(1, 255, 255, 0); Программирование  на языке ПаскальТема 12. Случайные числа© К.Ю. Поляков, 2006-2007 Случайные числаСлучайные явления: везде…бросание монеты ( Псевдослучайные числаПсевдослучайные числа – это такая последовательность чисел, которая обладает свойствами случайных Распределение случайных чиселМодель: снежинки падают на отрезок [a,b]распределениеравномерноенеравномерное Распределение случайных чиселОсобенности: распределение – это характеристика всей последовательности, а не одного Генератор случайных чисел в ПаскалеЦелые числа в интервале [0,N]:  var x: Случайные числаЗадача: заполнить прямоугольник  400 на 300 пикселей равномерно  точками Программаprogram qq;var x, y, k, code, i: integer;  stop: boolean;begin stop Программирование  на языке ПаскальТема 13. Функции© К.Ю. Поляков, 2006-2007 ФункцииФункция – это вспомогательный алгоритм (подпрограмма), результатом работы которого является некоторое значение. ФункцииЗадача: составить функцию, которая вычисляет наибольшее из двух значений, и привести пример ФункцииОсобенности:заголовок начинается словом functionформальные параметры описываются так же, как и для процедурможно ФункцииОсобенности:можно объявлять и использовать локальные переменныезначение, которое является результатом, записывается в переменную, Программаprogram qq;var a, b, max: integer;begin writeln('Введите два числа'); read(a, b); max Логические функцииЗадача: составить функцию, которая определяет, верно ли, что заданное число – Логические функцииprogram qq;var N: integer;begin writeln('Введите целое число'); read(N); if Prime(N) then Задания Задания (вариант 2) Конец фильма
Слайды презентации

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

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

2006-2007


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

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

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

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

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


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

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

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

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

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

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

одной команде процессора (ассемблер)
Языки высокого уровня – приближены к

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

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

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

обучения студентов
разработка программ «сверху вниз»





разнообразные структуры данных

(массивы, структуры, множества)

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

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

{переменные}

begin
… {основная программа}
end.
{ процедуры и функции }
комментарии в

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

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

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

имя.
Переменная – изменяющаяся величина, имеющая имя (ячейка памяти).
Процедура –

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

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


цифры


знак

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

подчеркивания _
заглавные и строчные буквы не различаются
Имена НЕ могут

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

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

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


Слайд 10
Константы
const
i2 = 45; { целое

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

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

qq =

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

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

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

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

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


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

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

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

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

Объявление переменных (выделение памяти):

var a, b: integer;
Q: real;
s1, s2: string;


Слайд 12
Как изменить значение переменной?
Оператор – это команда языка

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

программирования высокого уровня.
Оператор присваивания служит для изменения значения переменной.
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

Пример:


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

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

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

div mod

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

умножение

деление

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

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

<имя переменной> := <выражение>;


Слайд 14 program qq;
var a, b: integer;
x, y: real;

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


begin
a := 5;
10 :=

x;
y := 7,8;
b := 2.5;
x := 2*(a + y);
a := b + x;
end.


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

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

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

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



Слайд 15
Ручная прокрутка программы
program qq;
var a, b: integer;
begin
a

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

:= 5;
b := a + 2;
a :=

(a + 2)*(b – 3);
b := a div 5;
a := a mod b;
a := a + 1;
b := (a + 14) mod 7;
end.










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

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

mod слева направо
сложение и вычитание слева направо
z := (5*a*c+3*(c-d))/a*(b-c)/

b;

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



2 3 5 4 1 7 8 6 9

2 6 3 4 7 5 1 12 8 11 10 9


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

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

вывести на экран их сумму.
Простейшее решение:
program qq;
var a, b,

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

Слайд 18
Оператор ввода
read ( a ); { ввод

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

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

значений переменных a и b}

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


Слайд 19
Оператор вывода
write ( a ); { вывод

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

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

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

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

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

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


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

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

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<

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

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

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


Слайд 21
Полное решение
program qq;
var a, b, c: integer;
begin

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

writeln('Введите два целых числа');
read ( a, b

);
c := a + b;
writeln ( a, '+', b, '=', c );
end.

Протокол:
Введите два целых числа
25 30
25+30=55

это выводит компьютер

это вводит пользователь


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

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

b
вывод c
блок "начало"
блок "ввод"
блок "процесс"
блок "вывод"
блок "конец"


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

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

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

2006-2007


Слайд 25
Разветвляющиеся алгоритмы
Задача. Ввести два целых числа и вывести

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

на экран наибольшее из них.
Идея решения: надо вывести на

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

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


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

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

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

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


max := a;
max := b;
полная форма

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

условного оператора
program qq;
var a, b, max: integer;
begin
writeln('Введите

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

end
else begin

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

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

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

если условие верно}
end
else begin

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

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


Слайд 29
Что неправильно?
if a > b then begin

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

a := b;
end
else
b

:= a;
end;

if a > b then begin
a := b;
else begin
b := a;
end;

if a > b then begin
a := b;
end;
else begin
b := a;
end;

if a > b then begin
a := b;
end
else b > a begin
b := a;
end;

begin

end

begin

end


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

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

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

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


program qq;
var a, b, max: integer;
begin

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

writeln('Введите два целых числа');
read ( a,

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

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


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


program qq;
var a, b, max: integer;
begin

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

writeln('Введите два целых числа');
read ( a,

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

max := a;

a > b


Слайд 33
Что неправильно?
if a > b then begin

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

a := b;
else b :=

a;

if a > b then begin
a := b;
end;
else b := a;

if a > b then
else begin
b := a;
end;

if a > b then
a := b;
else b := a; end;

a := b

end

a := b



if b >= a then
b := a;



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

Задания

них.
Пример:
Введите три числа:
4 15 9
Наибольшее

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

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

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

Поляков, 2006-2007


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

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

40 лет включительно. Ввести возраст человека и определить, подходит

ли он фирме (вывести ответ "подходит" или "не подходит").
Особенность: надо проверить, выполняются ли два условия одновременно.

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




да
нет
x >= 25?


да
нет
x

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

подходит'
'не подходит'



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



program qq;
var x: integer;
begin
writeln('Введите

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

возраст');
read ( x );
if x

>= 25 then
if x <= 40 then
writeln ('Подходит')
else writeln ('Не подходит')
else
writeln ('Не подходит');
end.

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


да
нет
x >= 25 и
x

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

40?
'не подходит'


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


сложное условие
program qq;
var x: integer;
begin

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

writeln('Введите возраст');
read ( x );
if

(x >= 25) and (x <= 40) then
writeln ('Подходит')
else writeln ('Не подходит')
end.

Слайд 41
Сложные условия
Сложное условие – это условие, состоящее из

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

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

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

равно

не равно


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

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

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

заключать в скобки.
Пример

4 1 6 2 5 3

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


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

Истинно или ложно при a := 2; b := 3; c

:= 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


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

Задания

года.
Пример:
Введите номер месяца:
4
весна
"5": Ввести возраст человека (от

1 до 150 лет) и вывести его вместе с последующим словом "год", "года" или "лет".
Пример:
Введите возраст: Введите возраст:
24 57
Вам 24 года Вам 57 лет

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

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

2006-2007


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

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

с известным числом шагов
цикл с неизвестным числом шагов (цикл

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

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

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

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

i + 1;

i2 := i * i;
i3 := i2

* i;

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

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

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

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

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


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

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

i2 := i


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


program qq;
var i, i2, i3: integer;
begin


for

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

i:=1 to 8 do begin
i2 := i*i;

i3 := i2*i;
writeln(i:4, i2:4, i3:4);
end;
end.

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

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

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


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

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

и кубы целых чисел от 8 до 1 (в

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

for i:=8 1 do begin
i2 := i*i;
i3 := i2*i;
writeln(i:4, i2:4, i3:4);
end;

downto


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

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

do begin
{тело цикла}


end;

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

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

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


Слайд 52
Цикл с переменной
Особенности:
переменная цикла может быть только целой

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

(integer)
шаг изменения переменной цикла всегда равен 1 (to) или

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

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


Слайд 53
Цикл с переменной
Особенности:
в теле цикла не разрешается изменять

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

переменную цикла (почему?)
при изменении начального и конечного значения внутри

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

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

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


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

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

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

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

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

i=9

i=0

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


Слайд 55
Сколько раз выполняется цикл?
a := 1;
for i:=1 to

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

3 do a := a+1;
a = 4
a := 1;
for

i:=3 to 1 do a := a+1;

a = 1

a := 1;
for i:=1 downto 3 do a := a+1;

a = 1

a := 1;
for i:=3 downto 1 do a := a+1;

a = 4


Слайд 56 for i:=1 to 9 do begin
if

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

??? then begin

i2 := i*i;
i3 := i2*i;
writeln(i:4, i2:4, i3:4);
end;
end;


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

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

i mod 2 = 1

i2 := i*i;
i3 := i2*i;
writeln(i:4, i2:4, i3:4);

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


Слайд 57
Как изменить шаг? – II
Идея: Надо вывести всего

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

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;


Слайд 58
Как изменить шаг? – III
Идея: Надо вывести всего

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

5 чисел, переменная k изменяется от 1 до 5.

Зная k, надо рассчитать i.


Решение:

i = 2k-1

for k:=1 to 5 do begin
???
i2 := i*i;
i3 := i2*i;
writeln(i:4, i2:4, i3:4);
end;

i := 2*k – 1;


Слайд 59
Задания
"4": Ввести a и b и вывести квадраты

Задания

и кубы чисел от a до b.
Пример:
Введите

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


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

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

К.Ю. Поляков, 2006-2007


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

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

бревна. Сколько раз надо сделать движения пилой?
Задача: Ввести целое

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




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

Слайд 62

Алгоритм

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

count := 0;

count := count +

Алгоритмначалоcountконецнетдаn 0?count := 0;count := count + 1; n := n

1;
n := n div 10;
обнулить счетчик цифр
ввод

n


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


Слайд 63 Программа
program qq;
var n, count: integer;
begin
writeln('Введите целое число');

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

read(n);
count := 0;
while n 0 do

begin
count := count + 1;
n := n div 10;
end;
writeln('В числе ', n, ' нашли ',
count, ' цифр');
end.

while n <> 0 do begin
count := count + 1;
n := n div 10;
end;

, n1: integer;

n1 := n;

n1,

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


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

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

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

теле цикла только один оператор, слова begin и end можно не писать:

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

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


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

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

в цикл
если условие на входе в цикл ложно, цикл

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

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

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


Слайд 66
Сколько раз выполняется цикл?
a := 4; b :=

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

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

1;

2 раза
a = 6

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

1 раз
a = 10

a := 4; b := 6;
while a > b do a := a + 1;

0 раз
a = 4

a := 4; b := 6;
while a < b do b := a - b;

1 раз
b = -2

a := 4; b := 6;
while a < b do a := a - 1;

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


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

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

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 возможна всегда.


Слайд 68
Задания
"4": Ввести целое число и найти сумму его

Задания

цифр.
Пример:
Введите целое число:
1234
Сумма цифр числа 1234 равна

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

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

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

7, 11, 16, …
1, 2, 4, 8, 16, 32,



an = n

a1 = 1, an+1 = an+1

a1 = 1, an+1 = an + n

an = 2n-1

a1 = 1, an+1 = 2an

b1 = 1, bn+1 = bn+1

c1 = 2, cn+1 = 2cn


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

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

по модулю больше 0,001:
Элемент последовательности (начиная с №2):
b

:= b+1;

c := 2*c;

z := -z;


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

начало
S
конец
нет
да
|a| > 0.001?


S := S + a;

S :=

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

0; b := 1; c := 2; z :=

-1; a := 1;

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

a := z*b/c;
b := b + 1; c := 2*c; z := -z;

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

a := 1;

S := 0;

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

изменение


Слайд 72
Программа
program qq;
var b, c, z: integer;
S,

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

a: real;
begin
S := 0; z := -1;

b := 1; c := 2; a := 1;
while abs(a) > 0.001 do begin
S := S + a;
a := z * b / c;
z := - z;
b := b + 1;
c := c * 2;
end;
writeln('S =', S:10:3);
end.

z := - z;
b := b + 1;
c := c * 2;

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

S := 0; z := -1;
b := 1; c := 2; a := 1;

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

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

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


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


Задания

Ответ:
S = 1.157
"5": Найти сумму элементов последовательности с

точностью 0,001:
Ответ:
S = 1.220

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

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

и определить число цифр в нем.
Проблема: Как не

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

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


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

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


тело цикла
условие

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

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


Слайд 76
Программа
program qq;
var n: integer;
begin
repeat

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

writeln('Введите положительное число');
read(n);
until n

> 0;
... { основной алгоритм }
end.

repeat
writeln('Введите положительное число');
read(n);
until n > 0;

until n > 0;

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

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


Слайд 77
Сколько раз выполняется цикл?
a := 4; b :=

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

6;
repeat a := a + 1; until a >

b;

3 раза
a = 7

a := 4; b := 6;
repeat a := a + b; until a > b;

1 раз
a = 10

a := 4; b := 6;
repeat a := a + b; until a < b;

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

a := 4; b := 6;
repeat b := a - b; until a < b;

2 раза
b = 6

a := 4; b := 6;
repeat a := a + 2; until a < b;

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


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

число и определить, верно ли, что сумма его цифр

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

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

Программирование на языке ПаскальТема 6. Оператор выбора© К.Ю. Поляков, 2006-2007

Поляков, 2006-2007


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

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

дней

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

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

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

да
нет
M =

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

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

:= 31;

да

вывод D

ошибка





Слайд 82
Программа
program qq;
var M, D: integer;
begin
writeln('Введите номер

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

месяца:');
read ( M );
case M

of
2: begin D := 28; end;
4,6,9,11: begin D := 30; end;
1,3,5,7,8,10,12: D := 31;
else D := -1;
end;
if D > 0 then
writeln('В этом месяце ', D, ' дней.')
else
writeln('Неверный номер месяца');
end.

case M of
2: begin D := 28; end;
4,6,9,11: begin D := 30; end;
1,3,5,7,8,10,12: D := 31;
else D := -1;
end;

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


Слайд 83
Оператор выбора
Особенности:
после case может быть имя переменной или

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

арифметическое выражение целого типа (integer)
или символьного типа

(char)

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

var c: char;
...
case c of
'а': writeln('Антилопа');
'б': writeln('Барсук');
else writeln('Не знаю');
end;


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

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

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

значения

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

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


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

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

группировать
case i of
1:

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

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

диапазон

смесь


Слайд 86
Что неправильно?
case a of
2: begin a

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

:= b;
4: a := c;
end;
case a of

2: a := b
4: a := c
end;

;

case a of
2..5: a := b;
4: a := c;
end;

case a of
0..2: a := b;
6..3: a := c;
end;

3..6:

case a+c/2 of
2: a := b;
4: a := c;
end;

case a of
2: a := b; d := 0;
4: a := c;
end;

begin

end;



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

Задания (с защитой от неверного ввода)

месяца и вывести количество дней в нем, а также

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

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

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

2006-2007


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

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

x
y

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

Слайд 90
Управление цветом
Цвет и толщина линий, цвет точек:

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

Pen ( 1, 255, 0, 0 );
Цвет и

стиль заливки:
Brush ( 1, 0, 255, 0 );
Цвет текста:
TextColor ( 0, 0, 255 );

толщина линии

R(red)
0..255

G(green)
0..255

B(blue)
0..255

0 – выключить
1 - включить

R

G

B

R

G

B


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

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

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


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

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

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


Слайд 93
Текст
TextColor (0, 0, 255);
Brush (1, 255, 255, 0);
Font

ТекстTextColor (0, 0, 255);Brush (1, 255, 255, 0);Font (20, 30, 600);MoveTo

(20, 30, 600);
MoveTo (x, y);
writeln ('Привет!');
Привет!
(x, y)

размер
10 пикселей
угол
поворота
насыщенность:
400

– нормальный
600 – жирный


30о


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


(200, 50)
(100, 100)
(300, 200)



program qq;
begin
Pen(2, 255,

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

0, 255);
Brush(1, 0, 0, 255);
Rectangle(100,

100, 300, 200);
MoveTo(100, 100);
LineTo(200, 50);
LineTo(300, 100);
Brush(1, 255, 255, 0);
Fill(200, 75);
Pen(2, 255, 255, 255);
Brush(1, 0, 255, 0);
Ellipse(150, 100, 250, 200);
end.



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







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






Задания

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



N линий (N=5)
h



Rectangle (x1, y1, x2,

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

y2);
Line( x1+h, y1, x1+h, y2);
Line( x1+2*h, y1,

x1+2*h, y2);
Line( x1+3*h, y1, x1+3*h, y2);
...

h := (x2 – x1) / (N + 1);
Rectangle (x1, y1, x2, y2);
x := x1 + h;
for i:=1 to N do begin
Line( round(x), y1, round(x), y2);
x := x + h;
end;

var x, h: real;

x

округление до ближайшего целого

x


Слайд 97

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


Brush ( 1, c,

Как менять цвет?(x1, y1)(x2, y2)Brush ( 1, c, c, c );Fill

c, c );
Fill ( ???, ??? );
серый: R =

G = B

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

x

(x-1, y1+1)




var c, hc: integer;


hc := 255 div (N + 1);
c := 0;
for i:=1 to N+1 do begin
Line (round(x), y1, round(x), y2);
Brush (1, c, c, c);
Fill (round(x)-1, y1+1);
x := x + h; c := c + hc;
end;


Слайд 98
Штриховка
(x1, y1)

(x2, y2)
(x3, y2)



a
h
(x3+a, y1)



Line( x1+h, y1,

Штриховка(x1, y1)(x2, y2)(x3, y2)ah(x3+a, y1)Line( x1+h, y1, x1+h-a, y2);Line( x1+2*h, y1,

x1+h-a, y2);
Line( x1+2*h, y1, x1+2*h-a, y2);
Line( x1+3*h, y1,

x1+3*h-a, y2);
...

h := (x3 – x2) / (N + 1);
a := x1 – x2;
x := x1 + h;
for i:=1 to N do begin
Line( round(x), y1, round(x-a), y2);
x := x + h;
end;

x

x-a


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

(x1, y1)
(x2, y2)


hx
hy



y

x
y
Line( x1, y1+hy, x1+hx,

Штриховка(x1, y1)(x2, y2)hxhyyxyLine( x1, y1+hy, x1+hx, y1+hy) ;Line( x1, y1+2*hy, x1+2*hx,

y1+hy) ;
Line( x1, y1+2*hy, x1+2*hx, y1+2*hy);
Line( x1, y1+3*hy, x1+3*hx,

y1+3*hy);
...

hx := (x2 – x1) / (N + 1);
hy := (y2 – y1) / (N + 1);
x := x1 + hx; y := y1 + hy;
for i:=1 to N do begin
Line( x1, round(y), round(x), round(y));
x := x + hx; y := y + hy;
end;


Слайд 100
Задания
"4": Ввести с клавиатуры число линий штриховки и

Задания

построить фигуру, залив все области разным цветом.







"5":

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

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

Программирование на языке ПаскальТема 8. Графики функций© К.Ю. Поляков, 2006-2007

Поляков, 2006-2007


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

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

3 sin(x) на интервале от 0 до 2π.
Анализ:
максимальное

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

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

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

(xэ,yэ)



(0,0)
(0,0)
a
b
k –

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

масштаб (длина изображения единичного отрезка на экране)
xэ = a

+ kx
yэ = b - ky

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


h – шаг изменения x
w – длина оси

Программа2πh – шаг изменения xw – длина оси ОХ в пикселяхна

ОХ в пикселях
на экране
оси координат
цикл построения графика


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.

Слайд 105
Как соединить точки?
Алгоритм:
Если первая точка
перейти в точку

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

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


Слайд 106
Задания
"4": Построить график функции y = x2 на

Задания

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







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



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

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

2006-2007


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

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

угол поворота
отличия: координаты, цвет


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

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

выполнения некоторых действий.
Применение:
выполнение одинаковых действий в разных местах программы
разбивка

программы (или другой процедуры) на подзадачи для лучшего восприятия

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

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

в них общее (размеры, форма, угол поворота) и отличия

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

(x+100, y)

(x, y-60)




procedure Tr( x, y, r, g, b: integer);
begin
MoveTo(x, y);
LineTo(x, y-60);
LineTo(x+100, y);
LineTo(x, y);
Brush(1, r, g, b);
Fill(x+20, y-20);
end;

заголовок

MoveTo(x, y);
LineTo(x, y-60);
LineTo(x+100, y);
LineTo(x, y);
Brush(1, r, g, b);
Fill(x+20, y-20);

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

координаты

цвет

параметры


Слайд 111 Программа
program qq;




begin
Pen(1, 255, 0, 255);

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

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

255, 0);
Tr(200, 160, 255, 0, 0);
end.

(100,100)

100

60

процедура

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

вызовы процедуры

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

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


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

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

перечисляются формальные параметры, они обозначаются именами, поскольку могут меняться
при

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

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

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

x

y

r

g

b


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

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

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

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

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

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


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

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

процедуры не имеют к ним доступа

program qq;
procedure A(x,

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

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

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

var a, b: real;


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

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

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

программе

program qq;
var x, y: integer;





begin
x := 1; y := 2;
Exchange ( x, y );
writeln ( ’x = ’, x, ’ y = ’, y );
end;

procedure Exchange ( a, b: integer );
var c: integer;
begin
c := a; a := b; b := c;
end;


эта процедура работает с копиями параметров

x = 1 y = 2


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

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

несколько значений,
Запрещенные варианты вызова
Exchange ( 2, 3 );

{ числа }
Exchange ( x+z, y+2 ); { выражения }

procedure Exchange ( a, b: integer );
var c: integer;
begin
c := a; a := b; b := c;
end;

var

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






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







"5": Используя

Задания

процедуры, построить фигуру.
равносторонний треугольник


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

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

2006-2007


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

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

один или несколько таких же объектов.
У попа была

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

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

Примеры:

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

Факториал:


если

если

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


Слайд 120
Дерево Пифагора
Дерево Пифагора из N уровней – это

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

ствол и отходящие от него симметрично два дерева Пифагора

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


6 уровней:




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

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

уровней станет равно нулю!

(x1, y1)
(x0, y0)





α
α+45o

α-45o
L
x1 = x0 +

L·cos(α)
y1 = y0 – L·sin(α)

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

α + π/4
α – π/4


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

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

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

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


N: integer);
const k = 0.6; { изменение длины }
var x1, y1: real; { локальные переменные }
begin
if N > 0 then begin
x1 := x0 + L*cos(a);
y1 := y0 - L*sin(a);
Line (round(x0), round(y0),
round(x1), round(y1));
Pifagor (x1, y1, a+pi/4, L*k, N-1);
Pifagor (x1, y1, a-pi/4, L*k, N-1);
end;
end;

рекурсивные вызовы

закончить, если N=0

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


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

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

Программа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);


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







"5":

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

Задания


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

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

2006-2007


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

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

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

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

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


Слайд 127
Как "поймать" нажатие клавиши?
Событие – это изменение в


Слайд 128

Как выйти из цикла при нажатии Esc?

program qq;
var

Как выйти из цикла при нажатии Esc?program qq;var stop: boolean;

stop: boolean;
k,code,i: integer;
begin
stop :=

False;
repeat
if IsEvent then begin
Event(k, code, i);
if (k = 1) and (code = 27) then
stop := True;
end;
...
until stop;
end;

если что-то произошло...

что произошло?

если нажата клавиша с кодом 27 (Esc), то стоп

True, если надо остановиться

запуск цикла


Слайд 129

Процедура (рисование и стирание)
procedure Draw(x, y: integer; flag:

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

boolean);
begin
if flag then
Brush(1, 255, 255, 0)


else
Brush(1, 0, 0, 255);
Rectangle(x, y, x+20, y+20);
end;


(x, y)



(x+20, y+20)

Идеи
одна процедура рисует и стирает
стереть = нарисовать цветом фона
границу квадрата отключить (в основной программе)

рисовать (True) или нет (False)?

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

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

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


Слайд 130

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



program qq;
var x, y, k, code, i:

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

integer;
stop: boolean;
procedure Draw(x,y: integer; flag: Boolean);

begin
...
end;
begin
Brush(1, 0, 0, 255);
Rectangle(10, 10, 400, 400);
Pen(0, 0, 0, 255);
x := 10; y := 200; stop := false;
repeat
if IsEvent then begin
...
end;
Draw(x, y, True);
Delay(10);
Draw(x, y, False);
x := x + 1;
if x >= 400-20 then stop := true;
until stop;
end.

процедура

начальные условия

выход по клавише Esc

выход при касании границы

синий фон

ждем 10 мс

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



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






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

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

Задания














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

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

клавишами-стрелками. Коды клавиш:
влево – 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;

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


Слайд 133 Программа
program qq;
var x, y, k, code, i: integer;

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

stop: boolean;



begin
...
repeat
Draw(x, y, True);

Delay(20);
Draw(x, y, False);



until stop;
end.

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


if IsEvent then begin
...
end;

процедура

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

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


Слайд 134 Как убрать мигание?
Проблема: даже если не нажата никакая

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

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

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

while not IsEvent do;


Слайд 135 Программа
program qq;
var x, y, k, code, i: integer;

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

stop: boolean;




begin
...
repeat
Draw(x, y, True);

while not IsEvent do;



until stop;
end.

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


Draw(x, y, False);
Event(k, code, i);
...

while not IsEvent do;

процедура

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

ждем события

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


Слайд 136 "4": Квадрат двигается при нажатии стрелок, однако не

может выйти за границы синего квадрата:




"5": Квадрат

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

Задания
















Слайд 137
Вращение
Задача: изобразить модель вращения Земли вокруг Солнца.
Проблема: движение

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

по окружности, как изменять координаты?
Решение: использовать в качестве независимой

переменной (менять в цикле) угол поворота α



(x0, y0)



α

L

(x, y)

x = x0 + L·cos(α)
y = y0 – L·sin(α)



Слайд 138 Процедура
procedure Draw(x, y: integer; flag: boolean);
const r =

Процедураprocedure Draw(x, y: integer; flag: boolean);const r = 10;begin if flag

10;
begin
if flag then
Brush(1, 100, 100, 255)


else
Brush(1, 0, 0, 0);
Ellipse(x-r, y-r, x+r, y+r);
end;

рисовать (True) или нет (False)?

рисуем: цвет кисти – голубой

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

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

радиус Земли



(x-r, y-r)





(x,y)

(x+r, y+r)


Слайд 139 Константы и переменные
program qq;
const rSun = 60;

Константы и переменныеprogram qq;const rSun = 60; { радиус Солнца}

{ радиус Солнца}
L = 150;

{ радиус орбиты Земли }
x0 = 200; { координаты центра Солнца}
y0 = 200;
var x, y, { координаты Земли }
k, code, i: integer; { для Event }
a, ha: real; { угол поворота, шаг }
stop: boolean; { признак остановки программы }




begin
...
end.

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


Слайд 140 Основная программа
program qq;
...
begin
Brush(1, 0, 0, 0); Fill(1,1);

Основная программаprogram qq;...begin Brush(1, 0, 0, 0); Fill(1,1); Brush(1, 255, 255,

Brush(1, 255, 255, 0);
Ellipse(x0-rSun, y0-rSun, x0+rSun, y0+rSun);
a

:= 0; ha := 1*pi/180; { начальный угол, шаг 1o за 100 мс}
stop := false;
Pen(0,0,0,0); { отключаем контуры }
repeat
x := round(x0 + L*cos(a));
y := round(y0 - L*sin(a));
Draw(x, y, True);
Delay(100);
Draw(x, y, False);




a := a + ha;
until stop;
end.


залить фон черным

рисуем Солнце

новые координаты

поворот на ha

ждем 100 мс

if IsEvent then begin
Event(k, code, i);
if (k = 1) and (code = 27) then stop := true;
end;


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

вращаются в противоположные стороны:


"5": Изобразить модель системы

Солнце-Земля-Луна:

Задания










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

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

Поляков, 2006-2007


Слайд 143 Случайные числа
Случайные явления: везде…
бросание монеты ("орел" или "решка")
падение

Случайные числаСлучайные явления: везде…бросание монеты (

снега
броуновское движение
помехи при телефонной связи
шум радиоэфира
Случайные числа – это

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

Слайд 144 Псевдослучайные числа
Псевдослучайные числа – это такая последовательность чисел,

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

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

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

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

Литература:
Д. Кнут, Искусство программирования для ЭВМ, т.2.

дробная часть числа

a, c, m - целые числа

простое число

230-1

например, k = 5


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

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

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

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

последовательности, а не одного числа
равномерное распределение одно, компьютерные датчики

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


a

b

a

b

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

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


Слайд 147 Генератор случайных чисел в Паскале
Целые числа в интервале

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

[0,N]:
var x: integer;
...
x := random

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


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

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

равномерно точками случайного цвета
Как получить случайные координаты точки?
x :=

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

Слайд 149 Программа
program qq;
var x, y, k, code, i: integer;

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

stop: boolean;
begin
stop := False;
repeat

x := random(400);
y := random(300);
Pen(1, random(256), random(256), random(256));
Point(x, y );
if IsEvent then begin
Event(k, code, i);
if (k = 1) and (code = 27) then stop := True;
end;
until stop;
end.


случайные координаты

случайный цвет

выход по клавише Esc


Слайд 150 "4": Ввести с клавиатуры координаты углов прямоугольника и

заполнить его точками случайного цвета.




"5": Заполнить треугольник точками

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

Задания


(100,100)

(300,200)


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

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

2006-2007


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

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

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

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

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

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

значений, и привести пример ее использования
Функция:
формальные параметры




function Max (a,

b: integer): integer;
begin
if a > b then Max := a
else Max := b;
end.

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



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

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

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

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

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

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

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

функции; объявлять ее НЕ НАДО:

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




begin
writeln('Введите два

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

числа');
read(a, b);
max := Max ( a, b

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

function Max (a, b: integer): integer;
begin
...
end;

c

c

c

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

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


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

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

что заданное число – простое.
Особенности:
ответ – логическое значение (True

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

count := 0;
for i := 2 to N-1 do
if N mod i = 0 then
count := count + 1;
if count = 0 then
{ число N простое}
else { число N составное }

for i := 2 to N-1 do
if N mod i = 0 then
count := count + 1;


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










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

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

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;


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

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

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


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

Задания

от 1 до N и привести пример ее использования.

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

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

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

общий делитель двух натуральных и привести пример ее использования.

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

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

x в радианах!


  • Имя файла: programmirovanie-na-yazyke-paskal.pptx
  • Количество просмотров: 117
  • Количество скачиваний: 0