SlideShare a Scribd company logo
1 of 21
Ветвления

Условный оператор

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

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

                              нет          да                    нет
     да     условие                                  условие




серия команд 1                      серия команд 1         серия команд 2
начало
                         блок "решение"
           ввод a,b

     да                нет                полная форма
            a > b?                          ветвления


max:= a;               max:= b;




           вывод max


             конец
program qq;
var a, b, max: integer;
begin
  writeln('Введите два целых числа');
  read ( a, b );
                             полная форма
  if a > b then begin          условного
      max:=a                   оператора
  end
  else begin
      max:=b
  end;
  writeln ('Наибольшее число ', max);
end.
if <условие> then begin
  {что делать, если условие верно}
end
else begin
  {что делать, если условие неверно}
end;


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

           ввод a,b

           max:= a;
                             неполная форма
    да                 нет      ветвления
            b > a?

max:= b;



           вывод max


             конец
program qq;
var a, b, max: integer;
begin
  writeln('Введите два целых числа');
  read ( a, b );
                     неполная форма
  max := a;             условного
                        оператора
  if b > a then
    max := b;
  writeln ('Наибольшее число ', max);
end.
Цикл – это многократное выполнение одинаковой
 последовательности действий.
  • цикл с известным числом шагов
  • цикл с неизвестным числом шагов (цикл с условием)
Задача. Вывести на экран квадраты и кубы целых чисел от 1 до
 8 (от a до b).
Особенность: одинаковые действия выполняются 8 раз.
Алгоритм
             начало                 задать начальное значение
                                        переменной цикла
            i := 1;
                                 проверить, все ли сделали

                           нет
            i <= 8?                    конец
                      да              вычисляем квадрат и куб
            i2 := i * i;
           i3 := i2 * i;
                                      вывод результата

            i, i2, i3
                                        перейти к
                                      следующему i
            i := i + 1;

                                                                12
Алгоритм (с блоком "цикл")

              начало         блок "цикл"


             i := 1,8          конец


             i2 := i * i;      тело цикла
            i3 := i2 * i;


             i, i2, i3




                                            13
Программа

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.
                                           14
Цикл for
            Цикл for существует в двух формах

for счетчик:=значение to конечное_значение do
   тело_цикла;



for счетчик:=значение downto конечное_значение do
   тело_цикла;
Счетчик               – это переменная любого из
перечисляемых типов
(целого, булевого, символьного, диапазонного, перечисления).
Начальные и конечные значения могут быть представлены не
только значениями, но и выражениями, возвращающими
совместимые с типом счетчика типы данных. Если между
начальным и конечным выражением указано служебное слово
to, то на каждом шаге цикла значение параметра будет
увеличиваться на единицу. Если же указано downto, то значение
параметра будет уменьшаться на единицу.
Количество итераций цикла for известно
именно до его выполнения, но не до
выполнения всей программы. Так в примере
ниже, количество выполнений цикла
определяется пользователем. Значение
присваивается переменной, а затем
используется в заголовке цикла. Но когда
оно используется, циклу уже точно
известно, сколько раз надо выполниться.

                                      var
                                        i, n: integer;

                                      begin
                                        write ('Количество знаков: ');
                                        readln (n);

                                           for i := 1 to n do
                                             write ('(*) ');

                                      readln
                                      end.
Цикл while
Цикл while является циклом с
предусловием. В заголовке цикла          var
находится логическое выражение. Если       i, n: integer;
оно возвращает true, то тело цикла
выполняется, если false – то нет.
                                         begin
 Когда тело цикла было выполнено, то       write ('Количество знаков: ');
ход программы снова возвращается в
заголовок цикла. Условие выполнения
                                           readln (n);
тела снова проверяется (находится
значение логического выражения). Тело      i := 1;
цикла выполнится столько раз, сколько
раз логическое выражение вернет true.
                                           while i <= n do begin
Поэтому очень важно в теле цикла              write ('(*) ');
предусмотреть изменение                       i := i + 1
переменной, фигурирующей в заголовке
цикла, таким образом, чтобы когда-
                                           end;
нибудь обязательно наступала ситуация
false. Иначе произойдет так называемое   readln
зацикливание, одна из самых неприятных
ошибок в программировании.
                                         end.
Цикл repeat
Цикл while может не выполниться ни
разу, если логическое выражение в           var
заголовке сразу вернуло false. Однако         i, n: integer;
такая ситуация не всегда может быть
приемлемой. Бывает, что тело цикла
                                            begin
должно выполниться хотя бы один раз, не
зависимо оттого, что вернет логическое        write ('Количество знаков: ');
выражение. В таком случае используется        readln (n);
цикл repeat – цикл с постусловием.
                                              i := 1;
 В цикле repeat логическое выражение          repeat
стоит после тела цикла. Причем, в отличие        write ('(*) ');
от цикла while, здесь всё наоборот: в            i := i + 1
случае true происходит выход из цикла, в      until i > n;
случае false – его повторение.
                                            readln
                                            end.
Замена for на while и наоборот
                               i := 1;
for i:=1 to 10 do begin
                               while i <= 10 do begin
  {тело цикла}
                                 {тело цикла}
end;
                                 i := i + 1;
                               end;

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

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

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

More Related Content

What's hot

теория рекурсивных функций
теория рекурсивных функцийтеория рекурсивных функций
теория рекурсивных функцийMariya_Lastochkina
 
021
021021
021JIuc
 
Автоматическая оптимизация алгоритмов с помощью быстрого возведения матриц в ...
Автоматическая оптимизация алгоритмов с помощью быстрого возведения матриц в ...Автоматическая оптимизация алгоритмов с помощью быстрого возведения матриц в ...
Автоматическая оптимизация алгоритмов с помощью быстрого возведения матриц в ...Alexander Borzunov
 
Урок 24. Фантомные ошибки
Урок 24. Фантомные ошибкиУрок 24. Фантомные ошибки
Урок 24. Фантомные ошибкиTatyanazaxarova
 
20090222 parallel programming_lecture01-07
20090222 parallel programming_lecture01-0720090222 parallel programming_lecture01-07
20090222 parallel programming_lecture01-07Computer Science Club
 
разбор заданий на исполнители
разбор заданий на исполнителиразбор заданий на исполнители
разбор заданий на исполнителиЕлена Ключева
 
операторы цикла в Visual basic
операторы цикла в Visual basicоператоры цикла в Visual basic
операторы цикла в Visual basicanastastish
 
1 встреча — Параллельное программирование (А. Свириденков)
1 встреча — Параллельное программирование (А. Свириденков)1 встреча — Параллельное программирование (А. Свириденков)
1 встреча — Параллельное программирование (А. Свириденков)Smolensk Computer Science Club
 
апкс 2011 04_verilog
апкс 2011 04_verilogапкс 2011 04_verilog
апкс 2011 04_verilogIrina Hahanova
 
Евгений Зуев, С++ в России: Стандарт языка и его реализация
Евгений Зуев, С++ в России: Стандарт языка и его реализацияЕвгений Зуев, С++ в России: Стандарт языка и его реализация
Евгений Зуев, С++ в России: Стандарт языка и его реализацияPlatonov Sergey
 

What's hot (20)

теория рекурсивных функций
теория рекурсивных функцийтеория рекурсивных функций
теория рекурсивных функций
 
021
021021
021
 
My pascal
My pascalMy pascal
My pascal
 
Автоматическая оптимизация алгоритмов с помощью быстрого возведения матриц в ...
Автоматическая оптимизация алгоритмов с помощью быстрого возведения матриц в ...Автоматическая оптимизация алгоритмов с помощью быстрого возведения матриц в ...
Автоматическая оптимизация алгоритмов с помощью быстрого возведения матриц в ...
 
Циклы
ЦиклыЦиклы
Циклы
 
Урок 24. Фантомные ошибки
Урок 24. Фантомные ошибкиУрок 24. Фантомные ошибки
Урок 24. Фантомные ошибки
 
20090222 parallel programming_lecture01-07
20090222 parallel programming_lecture01-0720090222 parallel programming_lecture01-07
20090222 parallel programming_lecture01-07
 
разбор заданий на исполнители
разбор заданий на исполнителиразбор заданий на исполнители
разбор заданий на исполнители
 
алгоритм
алгоритмалгоритм
алгоритм
 
106170
106170106170
106170
 
операторы цикла в Visual basic
операторы цикла в Visual basicоператоры цикла в Visual basic
операторы цикла в Visual basic
 
моап 2011 05
моап 2011 05моап 2011 05
моап 2011 05
 
1 встреча — Параллельное программирование (А. Свириденков)
1 встреча — Параллельное программирование (А. Свириденков)1 встреча — Параллельное программирование (А. Свириденков)
1 встреча — Параллельное программирование (А. Свириденков)
 
Step 2
Step 2Step 2
Step 2
 
forFor
forForforFor
forFor
 
апкс 2011 04_verilog
апкс 2011 04_verilogапкс 2011 04_verilog
апкс 2011 04_verilog
 
Java Memory Model
Java Memory ModelJava Memory Model
Java Memory Model
 
Евгений Зуев, С++ в России: Стандарт языка и его реализация
Евгений Зуев, С++ в России: Стандарт языка и его реализацияЕвгений Зуев, С++ в России: Стандарт языка и его реализация
Евгений Зуев, С++ в России: Стандарт языка и его реализация
 
Loop
LoopLoop
Loop
 
Loop
LoopLoop
Loop
 

Similar to ветвление.условный оператор.циклы

Similar to ветвление.условный оператор.циклы (20)

циклы 1 урок
циклы 1 урокциклы 1 урок
циклы 1 урок
 
циклы
циклыциклы
циклы
 
Циклы
ЦиклыЦиклы
Циклы
 
циклы. проект журнал
циклы. проект журналциклы. проект журнал
циклы. проект журнал
 
циклы
циклыциклы
циклы
 
8 3-5
8 3-58 3-5
8 3-5
 
Базовые операторы Java
Базовые операторы JavaБазовые операторы Java
Базовые операторы Java
 
Программирование циклических алгоритмов
Программирование циклических алгоритмовПрограммирование циклических алгоритмов
Программирование циклических алгоритмов
 
Программирование циклов
Программирование цикловПрограммирование циклов
Программирование циклов
 
22 pascal urok_6
22 pascal urok_622 pascal urok_6
22 pascal urok_6
 
циклы 1 урок
циклы 1 урокциклы 1 урок
циклы 1 урок
 
тест циклические алгоритмы 1 вариант
тест циклические алгоритмы 1 варианттест циклические алгоритмы 1 вариант
тест циклические алгоритмы 1 вариант
 
Pri3
Pri3Pri3
Pri3
 
паскаль
паскальпаскаль
паскаль
 
Presentation lab3-sem3-c++
Presentation lab3-sem3-c++Presentation lab3-sem3-c++
Presentation lab3-sem3-c++
 
задания части С олейник
задания части С олейникзадания части С олейник
задания части С олейник
 
задания с олейник
задания с олейникзадания с олейник
задания с олейник
 
паскаль. часть1
паскаль. часть1паскаль. часть1
паскаль. часть1
 
8 2-4-3
8 2-4-38 2-4-3
8 2-4-3
 
5
55
5
 

More from dasha2012

таблицы остинности.законы логики
таблицы остинности.законы логикитаблицы остинности.законы логики
таблицы остинности.законы логикиdasha2012
 
основные понятия
основные понятияосновные понятия
основные понятияdasha2012
 
основные логические операции
основные логические операцииосновные логические операции
основные логические операцииdasha2012
 
егэ часть а
егэ часть аегэ часть а
егэ часть аdasha2012
 
егэ часть в
егэ часть вегэ часть в
егэ часть вdasha2012
 
единицы измерения
единицы измеренияединицы измерения
единицы измеренияdasha2012
 
тема 2.операторы.линейный алгоритм
тема 2.операторы.линейный алгоритмтема 2.операторы.линейный алгоритм
тема 2.операторы.линейный алгоритмdasha2012
 
массивы.строки
массивы.строкимассивы.строки
массивы.строкиdasha2012
 
как измерить информацию
как измерить информациюкак измерить информацию
как измерить информациюdasha2012
 
тема 1.введение в pascal
тема 1.введение в pascalтема 1.введение в pascal
тема 1.введение в pascaldasha2012
 

More from dasha2012 (10)

таблицы остинности.законы логики
таблицы остинности.законы логикитаблицы остинности.законы логики
таблицы остинности.законы логики
 
основные понятия
основные понятияосновные понятия
основные понятия
 
основные логические операции
основные логические операцииосновные логические операции
основные логические операции
 
егэ часть а
егэ часть аегэ часть а
егэ часть а
 
егэ часть в
егэ часть вегэ часть в
егэ часть в
 
единицы измерения
единицы измеренияединицы измерения
единицы измерения
 
тема 2.операторы.линейный алгоритм
тема 2.операторы.линейный алгоритмтема 2.операторы.линейный алгоритм
тема 2.операторы.линейный алгоритм
 
массивы.строки
массивы.строкимассивы.строки
массивы.строки
 
как измерить информацию
как измерить информациюкак измерить информацию
как измерить информацию
 
тема 1.введение в pascal
тема 1.введение в pascalтема 1.введение в pascal
тема 1.введение в pascal
 

ветвление.условный оператор.циклы

  • 1. Ветвления Условный оператор Циклы Циклы с условием
  • 2. Задача. Ввести два целых числа и вывести на экран наибольшее из них. Идея решения: надо вывести на экран первое число, если оно больше второго, или второе, если оно больше первого. Особенность: действия исполнителя зависят от некоторых условий (если … иначе …). Алгоритмы, в которых последовательность шагов зависит от выполнения некоторых условий, называются разветвляющимися.
  • 3. если – то - иначе; Полная Неполная если - то; форма форма нет да нет да условие условие серия команд 1 серия команд 1 серия команд 2
  • 4. начало блок "решение" ввод a,b да нет полная форма a > b? ветвления max:= a; max:= b; вывод max конец
  • 5. program qq; var a, b, max: integer; begin writeln('Введите два целых числа'); read ( a, b ); полная форма if a > b then begin условного max:=a оператора end else begin max:=b end; writeln ('Наибольшее число ', max); end.
  • 6.
  • 7. if <условие> then begin {что делать, если условие верно} end else begin {что делать, если условие неверно} end; Особенности: • перед else НЕ ставится точка с запятой • вторая часть (else …) может отсутствовать (неполная форма) • если в блоке один оператор, можно убрать слова begin и end
  • 8. начало ввод a,b max:= a; неполная форма да нет ветвления b > a? max:= b; вывод max конец
  • 9. program qq; var a, b, max: integer; begin writeln('Введите два целых числа'); read ( a, b ); неполная форма max := a; условного оператора if b > a then max := b; writeln ('Наибольшее число ', max); end.
  • 10.
  • 11. Цикл – это многократное выполнение одинаковой последовательности действий. • цикл с известным числом шагов • цикл с неизвестным числом шагов (цикл с условием) Задача. Вывести на экран квадраты и кубы целых чисел от 1 до 8 (от a до b). Особенность: одинаковые действия выполняются 8 раз.
  • 12. Алгоритм начало задать начальное значение переменной цикла i := 1; проверить, все ли сделали нет i <= 8? конец да вычисляем квадрат и куб i2 := i * i; i3 := i2 * i; вывод результата i, i2, i3 перейти к следующему i i := i + 1; 12
  • 13. Алгоритм (с блоком "цикл") начало блок "цикл" i := 1,8 конец i2 := i * i; тело цикла i3 := i2 * i; i, i2, i3 13
  • 14. Программа 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. 14
  • 15.
  • 16. Цикл for Цикл for существует в двух формах for счетчик:=значение to конечное_значение do тело_цикла; for счетчик:=значение downto конечное_значение do тело_цикла;
  • 17. Счетчик – это переменная любого из перечисляемых типов (целого, булевого, символьного, диапазонного, перечисления). Начальные и конечные значения могут быть представлены не только значениями, но и выражениями, возвращающими совместимые с типом счетчика типы данных. Если между начальным и конечным выражением указано служебное слово to, то на каждом шаге цикла значение параметра будет увеличиваться на единицу. Если же указано downto, то значение параметра будет уменьшаться на единицу.
  • 18. Количество итераций цикла for известно именно до его выполнения, но не до выполнения всей программы. Так в примере ниже, количество выполнений цикла определяется пользователем. Значение присваивается переменной, а затем используется в заголовке цикла. Но когда оно используется, циклу уже точно известно, сколько раз надо выполниться. var i, n: integer; begin write ('Количество знаков: '); readln (n); for i := 1 to n do write ('(*) '); readln end.
  • 19. Цикл while Цикл while является циклом с предусловием. В заголовке цикла var находится логическое выражение. Если i, n: integer; оно возвращает true, то тело цикла выполняется, если false – то нет. begin Когда тело цикла было выполнено, то write ('Количество знаков: '); ход программы снова возвращается в заголовок цикла. Условие выполнения readln (n); тела снова проверяется (находится значение логического выражения). Тело i := 1; цикла выполнится столько раз, сколько раз логическое выражение вернет true. while i <= n do begin Поэтому очень важно в теле цикла write ('(*) '); предусмотреть изменение i := i + 1 переменной, фигурирующей в заголовке цикла, таким образом, чтобы когда- end; нибудь обязательно наступала ситуация false. Иначе произойдет так называемое readln зацикливание, одна из самых неприятных ошибок в программировании. end.
  • 20. Цикл repeat Цикл while может не выполниться ни разу, если логическое выражение в var заголовке сразу вернуло false. Однако i, n: integer; такая ситуация не всегда может быть приемлемой. Бывает, что тело цикла begin должно выполниться хотя бы один раз, не зависимо оттого, что вернет логическое write ('Количество знаков: '); выражение. В таком случае используется readln (n); цикл repeat – цикл с постусловием. i := 1; В цикле repeat логическое выражение repeat стоит после тела цикла. Причем, в отличие write ('(*) '); от цикла while, здесь всё наоборот: в i := i + 1 случае true происходит выход из цикла, в until i > n; случае false – его повторение. readln end.
  • 21. Замена for на while и наоборот i := 1; for i:=1 to 10 do begin while i <= 10 do begin {тело цикла} {тело цикла} end; i := i + 1; end; i := a; for i:=a downto b do while i >= b do begin begin {тело цикла} {тело цикла} i := i - 1; end; end; Замена цикла for на while возможна всегда. Замена while на for возможна только тогда, когда можно заранее рассчитать число шагов цикла. 21