Разделы презентаций


Лекция 25 Тема №6

Содержание

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

Слайды и текст этой презентации

Слайд 1АлгоритмизациЯ и программированиЕ
Лекция 25 Тема №6

АлгоритмизациЯ и программированиЕ Лекция 25  Тема №6

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

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

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

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

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

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

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

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

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

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

read ( a, b );
if a > b then begin

end
else begin

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

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

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

если условие неверно}
end;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

равно

не равно

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

Слайд 15Сложные условия
Порядок выполнения (приоритет = старшинство)
выражения в скобках
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=, =, Особенность – каждое из простых условий обязательно

Слайд 16Обобщенный порядок выполнения операций:
1) вычисления в круглых скобках;
2) вычисления значений функций;
3) унарные операции;
4) операции

*, /, div, mod, and;
5) операции +, —, or, xor;
6) операции отношения

=, <>, <, >, <=, >=.
Обобщенный порядок выполнения операций:1) вычисления в круглых скобках;2) вычисления значений функций;3) унарные операции;4) операции *, /, div, mod, and;5) операции +, —,

Слайд 17Оператор выбора
Структура оператора имеет следующий вид:
case S of
c1: insruction1;
c2: insruction2;

cn:

insructionN;
else instruction
end;
где S – выражение порядкового типа, значение которого вычисляется;
с1,

с2…., сn – константы порядкового типа, с которыми сравнивается выражение S;
instruction1,…, instructionN – операторы, из которых выполняется тот, с константой которого совпадает значение выражения S;
instruction – оператор, который выполняется, если значение выражения S не совпадает ни с одной из констант c1, с2…. сn.
Данный оператор является обобщением условного оператора If для произвольного числа альтернатив. Существует сокращенная форма оператора, при которой ветвь else отсутствует.
Оператор выбораСтруктура оператора имеет следующий вид:case S ofc1: insruction1;c2: insruction2;…cn: insructionN;else instructionend;где S – выражение порядкового типа,

Слайд 18ПРИМЕР: Вводится целое число, если это цифра, то определить четная

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

оно в диапазон от 10 до 100, если нет, то выдать соответствующее сообщение.
program chislo;
var i:integer;
begin
write('Введите целое число: ');
readln(i);
case i of
0,2,4,6,8 : writeln('Четная цифра');
1,3,5,7,9 : writeln('Нечетная цифра');
10...100,200 : writeln('Число от 10 до 100 или 200');
else writeln('Число либо отрицательное, либо > 100, но не 200');
end;
readln
end.
ПРИМЕР: Вводится целое число, если это цифра, то определить четная она или нет, а если число, то

Слайд 19Оператор выбора
Оператор выбора позволяет выбирать одно из нескольких возможных действий

(операторов).
Формат:
case of
: ;
...

значений n>: <оператор n>;
[else <оператор>]
end;

Оператор выбораОператор выбора позволяет выбирать одно из нескольких возможных действий (операторов).Формат:case of : ; ... : ;[else

Слайд 20Правила оформления оператора выбора
выражение (переключатель) должно иметь порядковый тип
после

списка значений должен быть один оператор. Если в какой –

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

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

значений константных выражений; а также диапазоны значений;
константы и константные выражения

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

Слайд 22Определить порядок целого числа N от 0 до 999
Var

N: integer;

Randomize; N:=Random(1000);
case N of
0..9: writeln('однозначное');
10..99: writeln('двузначное');
100..999: writeln('трехзначное')
end;

Определить порядок целого числа  N от 0 до 999 Var N: integer;…Randomize; N:=Random(1000);case N of

Слайд 23Определить тип символа
Var symbol: Char;

case symbol of
’0’..’9’: writeln('это

цифра');
’a’..’z’: writeln('стр.буква');
’A’..’Z’: writeln('прописная буква')
else writeln(‘Это др. символ’)
end;

Определить тип символаVar symbol: Char;…case symbol of  ’0’..’9’: writeln('это цифра'); 	’a’..’z’: writeln('стр.буква'); ’A’..’Z’:	writeln('прописная буква')else writeln(‘Это др.

Слайд 24Var Year: Integer;

case Year of
-500..-400:writeln('Древнегреческий абак');
480.. 500: begin
writeln('Первые

записи в десятичной');
writeln('системе счисления, которые');
writeln('были сделаны в Индии')
end;
1642 : writeln('Сум.машина Б.Паскаля')
else writeln(‘И

прочее, прочее, прочее’)
end;

Var Year: Integer;…case Year of-500..-400:writeln('Древнегреческий абак'); 480.. 500: 	begin 	writeln('Первые записи в десятичной');	writeln('системе счисления, которые');	writeln('были сделаны в

Слайд 25Оператор перехода
Назначение: передача управления оператору в программе, перед которым указана

метка.
Оператор должен использоваться в том блоке, где была описана метка.

Причем управление должно передаваться оператору в том же блоке.
Формат: goto <метка>
При использовании оператора перехода в начале программы вводится Раздел описания меток.
Формат:
Label <имя меток через запятую>;
Пример:
Label met1, met2;
Этот оператор противоречит принципам структурного программирования.



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

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

числом шагов
цикл с неизвестным числом шагов (цикл с условием)
Задача. Вывести

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

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

1;
i2 := i * i;
i3 := i2 * i;
задать начальное

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

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

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

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

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

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

Слайд 28Алгоритм (с блоком «цикл»)
начало
i, i2, i3
конец
i2 := i * i;
i3

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

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

Слайд 29Программа
program qq;
var i, i2, i3: integer;
begin


for i:=1 to

8 do begin
i2 := i*i;
i3 :=

i2*i;
writeln(i, ’ ’, i2, ’ ’, i3);
end;
end.

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

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

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

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

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

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

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

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

downto

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

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

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

end;

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

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

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

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

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

переменной цикла всегда равен 1 (to) или -1 (downto)
если в

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

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

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

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

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

изменится:

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

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

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

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

значение переменной цикла, при котором нарушено условие:
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

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

then begin
i2 := i*i;

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

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

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

i mod 2 = 1

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

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

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

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

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

равно 1, с каждым шагом цикла i увеличивается на 2.
Решение:

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

i := i + 2;

i := 1;

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

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

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

рассчитать i.


Решение:

i = 2k-1

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

i := 2*k – 1;

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

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

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

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




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

Слайд 39Алгоритм
начало
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выполнять

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


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

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

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

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

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

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

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

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

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

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

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

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

:= 0;
while n 0 do begin
count

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

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

, n1: integer;

n1 := n;

n1,

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

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

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

begin
{тело цикла}
end;
i := 1;
while i

{тело цикла}
i := i + 1;
end;

for i:=a downto b do
begin
{тело цикла}
end;

i := a;
while i >= b do begin
{тело цикла}
i := i - 1;
end;

Замена while на for возможна только тогда, когда можно заранее рассчитать число шагов цикла.

Замена цикла for на while возможна всегда.

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

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

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

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

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

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

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

процесс»
ввод n
основной алгоритм

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

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

число');
read(n);
until n > 0;

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

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

until n > 0;

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

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

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

Слайд 47Структура программы Pascal
Program ;

Uses ;
label

меток>
const ;
type ;
var ;

подпрограмм>;

begin
<раздел операторов>
end.
Структура программы PascalProgram ;Uses ;label const ;type ;var ;		;begin	end.

Слайд 48 Раздел подключаемых модулей
Используется в том случае, когда в программе

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

стандартных модулях или модулях, созданных пользователями.
Формат:
Uses <имена модулей через запятую> ;
В этом предложении перечисляются модули, загружаемые программой
Например:
uses SysUtils;
Раздел подключаемых модулейИспользуется в том случае, когда в программе применяются константы, переменные, процедуру или функции, типы

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

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

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

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

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


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

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