ОСНОВНЫЕ ТИПЫ АЛГОРИТМИЧЕСКИХ СТРУКТУР Презентация создана учителем математики и информатики Ковалевой Анной Леонидовной ЦО №1679 г.Москва 2012-2013
ЛИНЕЙНЫЙ АЛГОРИТМ - это алгоритм, в котором команды выполняются последовательно одна за другой БЛОК-СХЕМА ЛИНЕЙНОГО АЛГОРИТМА ЛИНЕЙНЫЙ АЛГОРИТМ НА VISUAL BASIC НАЧАЛО ВВОД ДАННЫХ КОМАНДА ПРИСВАИВАНИЯ 1 . . . . . . . ВЫВОД ИСКОМЫХ КОНЕЦ Dim As Private Sub Form_Load() (НАПРИМЕР, InputBox) . . . . . . . . . . . . (НАПРИМЕР, MsgBox или Print) End Sub ЛИНЕЙНЫЙ АЛГОРИТМ НА QBASIC Dim As (НАПРИМЕР, Input) . . . . . . . . . . . . (НАПРИМЕР, Print) End Program ; Var : ; Begin (НАПРИМЕР, Readln) . . . . . . . . . . . . (НАПРИМЕР, Writeln) End . ЛИНЕЙНЫЙ АЛГОРИТМ НА PASCAL
Private Sub Command1_Click() a = Val(Текст1.Text) b = Val(Текст2.Text) c = Val(Текст3.Text) p = (a + b + c) / 2 Метка5.Caption = Int(Sqr(p * (p - a) * (p - b) * (p - c))) End Sub Private Sub Command2_Click() Текст1.Text = "": Текст2.Text = "" Текст3.Text = "": Метка5.Caption = "" End Sub Задание: Составить программу вычисления площади произвольного треугольника по трем известным сторонам a, b, c (по формуле Геррона)
ВЕТВЯЩИЙСЯ АЛГОРИТМ - это алгоритм, в котором выполняется одна или другая серия команд в зависимости от истинности или ложности условия ФРАГМЕНТ БЛОК-СХЕМЫ ВЕТВЯЩЕГОСЯ АЛГОРИТМА ФРАГМЕНТ ВЕТВЯЩЕГОСЯ АЛГОРИТМА НА QBASIC УСЛОВИЕ СЕРИЯ КОМАНД 1 СЕРИЯ КОМАНД 2 да нет If then Else End if ФРАГМЕНТ ВЕТВЯЩЕГОСЯ АЛГОРИТМА НА VBASIC ФРАГМЕНТ ВЕТВЯЩЕГОСЯ АЛГОРИТМА НА PASCAL If then Else End if If then begin end Else begin end;
Задание: Составить программу вычисления корней квадратного уравнения в зависимости от дискриминанта Private Sub Command1_Click() a = Val(Текст1.Text) b = Val(Текст2.Text) c = Val(Текст3.Text) d = b ^ 2 - 4 * a * c If d > 0 Then Метка6.Caption = (-b + Sqr(d)) / (2 * a) Метка7.Caption = (-b - Sqr(d)) / (2 * a) Else If d = 0 Then Метка6.Caption = -b / (2 * a) Else Метка6.Caption = "КОРНЕЙ НЕТ" End If End If End Sub
АЛГОРИТМИЧЕСКАЯ СТРУКТУРА «ВЫБОР» - это алгоритм, в котором выполняется одна из нескольких последовательностей команд при истинности соответствующего условия (удобно использовать вместо вложенного ветвления IF) УСЛОВИЕ 1 СЕРИЯ КОМАНД 1 да нет ФРАГМЕНТ БЛОК-СХЕМЫ АЛГОРИТМА ВЫБОР УСЛОВИЕ 2 да нет СЕРИЯ КОМАНД 2 СЕРИЯ КОМАНД 3 ФРАГМЕНТ АЛГОРИТМА «ВЫБОР »НА QBASIC Select case Case Case . . . . . . . . . . . Case Else End select Case Of : ; : ; . . . . . . . . . . . :; Else End; ФРАГМЕНТ АЛГОРИТМА «ВЫБОР »НА PASCAL Select Case Case Case . . . . . . . . . . . Case Else End select ФРАГМЕНТ АЛГОРИТМА «ВЫБОР »НА VBASIC
Задание: Составить программу-тест вычисления отметки по количеству ошибок Private Sub Command1_Click() fi = Текст1.Text k = Текст2.Text sh = Текст3.Text n = Текст4.Text Select Case n Case 0 Текст5.Text = fi + " " + k + " " + sh + " " + "ОТЛИЧНО" Case 1 Текст5.Text = fi + " " + k + " " + sh + " " + "ХОРОШО" Case 2 Текст5.Text = fi + " " + k + " " + sh + " " + "УДОВЛЕТВОРИТЕЛЬНО" Case Else Текст5.Text = fi + " " + k + " " + sh + " " + "НЕУДОВЛЕТВОРИТЕЛЬНО" End Select End Sub
АЛГОРИТМИЧЕСКАЯ СТРУКТУРА «ЦИКЛ» - это алгоритм, в котором серия команд (она называется телом цикла) выполняется многократно. Тело цикла определяет ЧТО повторять, а заголовок цикла (вид цикла) определяет СКОЛЬКО РАЗ повторять. Безусловный цикл Условный цикл
Используется, когда заранее известно, сколько раз необходимо выполнить цикл. НЦ ОТ ДО ШАГ h ПОВТОРЯТЬ КЦ For = to step Next ФРАГМЕНТ АЛГОРИТМА ЦИКЛА n РАЗ НА АЯ (алгоритмическом языке) ФРАГМЕНТ АЛГОРИТМА ЦИКЛА n РАЗ НА QBASIC ФРАГМЕНТ АЛГОРИТМА ЦИКЛА n РАЗ НА VBASIC ФРАГМЕНТ АЛГОРИТМА ЦИКЛА n РАЗ НА PASCAL For = to step Next For : = to (или downto) do begin End;
Задание: Составить программу вывода символов и их кодов (код ASCII) Dim n As Integer Private Sub Command1_Click() For n = 127 To 32 Step -1 List1.AddItem (n) List2.AddItem (Chr(n)) Next n End Sub
Используется, когда заранее неизвестно, сколько раз необходимо выполнить цикл. НЦ ПОКА ПОВТОРЯТЬ КЦ Do while Тело цикла выполняется пока условие истинно Loop ФРАГМЕНТ АЛГОРИТМА ЦИКЛА с предусловием (условие впереди) НА АЯ (алгоритмическом языке) ФРАГМЕНТ АЛГОРИТМА ЦИКЛА С ПРЕДУСЛОВИЕМ (2 ВИДА) НА QBASIC ЦИКЛ С ИСТИННЫМ ПРЕДУСЛОВИЕМ ЦИКЛ С ЛОЖНЫМ ПРЕДУСЛОВИЕМ Do Until Тело цикла выполняется пока условие Ложно Loop Данный вид цикла может не выполниться ни разу. Ответьте, почему? While Do Begin Тело цикла выполняется пока условие истинно End; Do Until Тело цикла выполняется пока условие Ложно Loop ФРАГМЕНТ АЛГОРИТМА ЦИКЛА С ПРЕДУСЛОВИЕМ (2 ВИДА) НА VBASIC ЦИКЛ С ИСТИННЫМ ПРЕДУСЛОВИЕМ ЦИКЛ С ЛОЖНЫМ ПРЕДУСЛОВИЕМ ФРАГМЕНТ АЛГОРИТМА ЦИКЛА С ПРЕДУСЛОВИЕМ НА PASCAL ЦИКЛ С ИСТИННЫМ ПРЕДУСЛОВИЕМ Do while Тело цикла выполняется пока условие истинно Loop
Задание: Составить программу вычисления количества отрицательных чисел среди шести чисел (каждое число вводить отдельной командой ввод в цикле) Dim a As Integer Private Sub Form_Load() Show i = 1: k = 0 Do While i < 7 a = InputBox("введите число") Print a If a < 0 Then k = k + 1 End If i = i + 1 Loop Print "Количество отрицательных чисел="; k End Sub Dim a As Integer Private Sub Form_Load() Show i = 1: k = 0 Do Until i >= 7 a = InputBox("введите число") Print a If a < 0 Then k = k + 1 End If i = i + 1 Loop Print "Количество отрицательных чисел="; k End Sub
Используется, когда заранее неизвестно, сколько раз необходимо выполнить цикл. НЦ ПОВТОРЯТЬ КЦ ПОКА Do Тело цикла выполняется пока условие истинно Loop while ФРАГМЕНТ АЛГОРИТМА ЦИКЛА с постусловием (условие после) НА АЯ (алгоритмическом языке) ФРАГМЕНТ АЛГОРИТМА ЦИКЛА С ПОСТУСЛОВИЕМ (2 ВИДА) НА QBASIC ЦИКЛ С ИСТИННЫМ ПОСТУСЛОВИЕМ ЦИКЛ С ЛОЖНЫМ ПОСТУСЛОВИЕМ Do Тело цикла выполняется пока условие Ложно Loop Until Данный вид цикла выполнится хотя бы один раз. Ответьте, почему? ФРАГМЕНТ АЛГОРИТМА ЦИКЛА С ПОСТУСЛОВИЕМ (2 ВИДА) НА VBASIC ЦИКЛ С ИСТИННЫМ ПОСТУСЛОВИЕМ ЦИКЛ С ЛОЖНЫМ ПОСТУСЛОВИЕМ ФРАГМЕНТ АЛГОРИТМА ЦИКЛА С ПОСТУСЛОВИЕМ НА PASCAL ЦИКЛ С ЛОЖНЫМ ПОСТУСЛОВИЕМ Do Тело цикла выполняется пока условие истинно Loop while Do Тело цикла выполняется пока условие Ложно Loop Until Repeat Тело цикла выполняется пока условие Ложно Until ;
Задание: Составить программу вычисления количества отрицательных чисел среди шести чисел (каждое число вводить отдельной командой ввод в цикле) Dim a As Integer Private Sub Form_Load() Show i = 1: k = 0 Do a = InputBox("введите число") Print a If a < 0 Then k = k + 1 End If i = i + 1 Loop While i < 7 Print "Количество отрицательных чисел="; k End Sub Dim a As Integer Private Sub Form_Load() Show i = 1: k = 0 Do a = InputBox("введите число") Print a If a < 0 Then k = k + 1 End If i = i + 1 Loop Until i >= 7 Print "Количество отрицательных чисел="; k End Sub