Сравниваем циклы, или…
Андрей Петрович Ершов … Программист должен обладать способностью первоклассного математика к абстракции и логическому мышлению в сочетании с эдисоновским талантом сооружать все что угодно, из нуля и единицы. Он должен сочетать аккуратность бухгалтера с проницательностью разведчика, фантазию автора детективных романов, с трезвой практичностью экономиста. А кроме того, программист должен иметь вкус к коллективной работе, понимать интересы пользователя и многое другое
Для исполнения одного из нескольких операторов в зависимости от условия позволяет оператор - Выполнить выражение, заданное в его правой части, и присвоить результат переменной, имя которой указано в его левой части предписывает оператор - ветвления присваивания.
Для того чтобы выполнить входящие в его состав операторы несколько раз служит оператор - цикла
Найди правильную запись цикла на языке Pascal Цикл повторения с параметром Цикл повторения с параметром Цикл с предусловием Цикл с предусловием Цикл с постусловием Цикл с постусловием While... do... ; While... do... ; For... to... do... ; For... to... do... ; Repeat... until...; Repeat... until...;
Напротив каждой схемы алгоритма напишите, какому из операторов цикла (while…do, repeat…until, for…to…do) она соответствует Условие Группа операторов Нет Да Условие Группа операторов Нет Да Пар :=нач.зн.,кон.з,шаг Группа операторов Да Нет
Какое значение примет переменная х в результате выполнения следующих фрагментов программ? 1) x:=1; while x
Какое значение примет переменная х в результате выполнения следующих фрагментов программ? 1) x:=1; repeat x:=x+1; until x>10; Ответ: 2) x:=1; repeat x:=x+3; x:=x+1; until x>10; Ответ: 11 13
Остановится ли когда-нибудь цикл, представленный в следующих фрагментах программы? 1) x:=1; while x>1 do x:=x+1; Ответ: 2) x:=10; while x>1 do x:=x+1; Ответ: 3) x:=1; y:=1; while x
Остановится ли когда-нибудь цикл, представленный в следующих фрагментах программы? 1) x:=1; y:=1; repeat y:=y+1; x:=x+1; until x=10; Ответ: 2) x:=10; y:=10; repeat y:=y+1; x:=x+1; until x=10; Ответ: НетДа
Этапы решения задач на ЭВМ 1) постановка задачи; 2) построение математической модели; 3) конструирование алгоритма; 4) перевод алгоритма в программу; 5) отладка и испытание программы; 6) получение и анализ результатов.
? Задача. Вычислить наибольший общий делитель двух целых чисел Дано: Найти: целые числа a, b. НОД(a, b) Решение
Сравниваем циклы, или Алгоритм Евклида
Алгоритм Евклида с вычитанием 1. Ввод целых чисел a и b 2. Выбираем большее из двух чисел 3. Вычитаем из этого числа второе (меньшее) 4. Полученной разностью заменяем большее число 5. Повторяем пункты 2,3,4 до тех пор, пока одно из чисел не станет равным 0, - в этом случае второе число и будет искомым наибольшим делителем.
Рассмотрим процесс вычисления НОД(a, b), где a=114, b=48 Шаг поиска НОД abРазность Ответ: НОД(114, 48)=
Блок-схема алгоритма Евклида начало Ввод a,b abab конец a b:=b-a a>b a:=a-b нет да нет
Программа PROGRAM NOD_EUCLID; USES CRT; VAR A,B:INTEGER; BEGIN CLRSCR; WRITELN(ВВЕДИТЕ A И B);READLN(A,B); WHILE AB DO IF A>B THEN A:=A-B ELSE B:=B-A; WRITE(НОД=,A); READKEY; END.
Программа PROGRAM NOD_EUCLID; USES CRT; VAR A,B:INTEGER; BEGIN CLRSCR; WRITELN(ВВЕДИТЕ A И B);READLN(A,B); A:=ABS(A);B:=ABS(B); WHILE AB DO IF A>B THEN A:=A-B ELSE B:=B-A; WRITE(НОД=,A); READKEY; END.
Программа PROGRAM NOD_EUCLID; USES CRT; VAR A,B:INTEGER; BEGIN CLRSCR; WRITELN(ВВЕДИТЕ A И B);READLN(A,B); IF A*B=0 THEN WRITE (Некорректные данные) ELSE BEGIN A:=ABS(A);B:=ABS(B); WHILE AB DO IF A>B THEN A:=A-B ELSE B:=B-A; WRITE(НОД=,A); END; READKEY; END.
Блок-схема алгоритма Евклида (дополненная) abab конец a b:=b-a a>b a:=a-b нет да нет начало Ввод a,b a*b=0 Некорректные данные a:=abs(a) b:=abs(b) да нет
Домашнее задание «Электронный практикум» Упражнение к уроку 16