Скачать презентацию ПРОГРАММИРОВАНИЕ на языке высокого уровня Лекция 7 Скачать презентацию ПРОГРАММИРОВАНИЕ на языке высокого уровня Лекция 7

Lektsii_Prog_84-100.ppt

  • Количество слайдов: 26

ПРОГРАММИРОВАНИЕ на языке высокого уровня ПРОГРАММИРОВАНИЕ на языке высокого уровня

Лекция 7. 2. 9 Оператор выбора case Оператор case позволяет сделать выбор между несколькими Лекция 7. 2. 9 Оператор выбора case Оператор case позволяет сделать выбор между несколькими вариантами: case <переключатель> of <список_констант> : <оператор1>; [<список_констант> : < оператор2 >; ] … [<список_констант> : < оператор n >; ] [else < оператор >; ] end; 2

Лекция 7. 2. 9 Оператор выбора case Оператор выбора выполняется следующим образом. Сначала вычисляется Лекция 7. 2. 9 Оператор выбора case Оператор выбора выполняется следующим образом. Сначала вычисляется селекторное выражение; затем выполняется оператор, метка варианта которого равна текущему значению селектора; после этого происходит выход из оператора CASE на следующий оператор. Если значение селектора не совпадает ни с одной из меток варианта, будет выполнен оператор после ELSE. Если ветвь ELSE отсутствует, то управление передается следующему за CASE оператору. 3

Лекция 7. 2. 9 Оператор выбора case Правила, относящиеся к структуре этого оператора: Переключатель Лекция 7. 2. 9 Оператор выбора case Правила, относящиеся к структуре этого оператора: Переключатель должен относиться только к порядковому типу данных, но не к типу longint. Переключатель может быть переменной или выражением. Список констант может задаваться как явным перечислением, так и интервалом или их объединением. Повторение констант не допускается. Тип переключателя и типы всех констант должны быть совместимыми 1. 4

Лекция 7. 2. 9 Оператор выбора case Пример оператора выбора: case k of 0: Лекция 7. 2. 9 Оператор выбора case Пример оператора выбора: case k of 0: Z : = LN(X); 1: Z : = EXP(X); 2: Z : = SIN(X) ; 3: Z : = COS(X); ELSE Z: =0 end; В этом примере результат вычисляется по одной из стандартных функций в зависимости от параметра К, который получает свое значение перед выполнением этого оператора. 5

Лекция 7. 2. 9 Оператор выбора case Пример оператора выбора: case symbol of // Лекция 7. 2. 9 Оператор выбора case Пример оператора выбора: case symbol of // : char 'a'. . 'z', 'A'. . 'Z' : writeln('Это латинская буква'); 'а'. . 'я', 'А'. . 'Я' : writeln('Это русская буква'); '0'. . '9' : writeln('Это цифра'); ' ', #10, #13, #26: writeln('Это пробельный символ'); else writeln('Это служебный символ'); end; 6

Лекция 7. 2. 9 Оператор выбора case Выполнение оператора case происходит след. образом: вычисляется Лекция 7. 2. 9 Оператор выбора case Выполнение оператора case происходит след. образом: вычисляется значение переключателя; полученный результат проверяется на принадлежность к тому или иному списку констант; если такой список найден, то дальнейшие проверки уже не производятся, а выполняется оператор, соответствующий выбранной ветви, после чего управление передается оператору, следующему за ключевым словом end, которое закрывает всю конструкцию case; если подходящего списка констант нет, то выполняется оператор, стоящий за ключевым словом else. Если else-ветви нет, то не выполняется ничего. 7

Лекция 7. 2. 9 Оператор выбора case В следующем примере переменная OTVET получает значение Лекция 7. 2. 9 Оператор выбора case В следующем примере переменная OTVET получает значение YES или NO в зависимости от введенного значения символьной переменной V. Здесь метки варианта задаются перечислением. . VAR V: CHAR; OTVET: STRING; . . . CASE V OF 'D', 'd‘, 'Д', 'д' : OTVET: = 'YES'; 'N', 'n', 'Н', 'н' : OTVET: = 'NO' ELSE OTVET: ='' END; . . . 8

Лекция 7. 2. 9 Оператор выбора case В следующем примере метки выбора заданы интервалом. Лекция 7. 2. 9 Оператор выбора case В следующем примере метки выбора заданы интервалом. . VAR V: CHAR; OTVET: STRING; . . . CASE V OF 'A'. . 'Z', 'a'. . 'z 1' : OTVET: = 'буква'; '0'. . '9': OTVET: = 'цифра' ELSE OTVET: = 'специальный символ' END; . . . 9

Лекция 8. 2. 10 Оператор цикла Операторы цикла используются для многократного повторения входящих в Лекция 8. 2. 10 Оператор цикла Операторы цикла используются для многократного повторения входящих в их состав операторов. В языке Pascal различают: операторы цикла типа арифметической прогрессии (оператор цикла со счетчиком - FOR) и операторы цикла итерационного типа (WHILE и REPEAT). 10

Лекция 8. 2. 10 Оператор цикла типа арифметической прогрессии используется, если заранее известно количество Лекция 8. 2. 10 Оператор цикла типа арифметической прогрессии используется, если заранее известно количество повторений цикла и шаг изменения параметра цикла +1 или -1. TO FOR <параметр цикла> : = <выраж. 1> DOWNTO <выраж. 2> { } DO <оператор>; < параметр цикла > - это переменная цикла любого порядкового типа (целого, символьного, перечисляемого, интервального); ТО - шаг изменения параметра цикла +1; DOWNTO - шаг изменения параметра цикла-1; < выраж. 1> - начальное значение параметра цикла, выражение того же типа, что и параметр цикла; < выраж. 2> - конечное значение параметра цикла, выражение того же типа, что и параметр цикла; 11

Лекция 8. 2. 10 Оператор цикла При выполнении оператора FOR выполняются следующие действия: вычисляется Лекция 8. 2. 10 Оператор цикла При выполнении оператора FOR выполняются следующие действия: вычисляется < выражение 1> , которое присваивается параметру цикла; проверяется условие окончания цикла: <параметр цикла> больше <выраж. 2> при использовании конструкции ТО и <параметр цикла> меньше <выраж. 2> при пользовании конструкции DOWNTO; выполняется тело цикла, если параметр цикла не вышел за границу цикла; наращивается (ТО) или уменьшается (DOWNTO) на единицу параметр цикла; все этапы, кроме первого, циклически повторяются. 12

Лекция 8. 2. 10 Оператор цикла При использовании оператора необходимо помнить: внутри цикла FOR Лекция 8. 2. 10 Оператор цикла При использовании оператора необходимо помнить: внутри цикла FOR нельзя изменять начальное, текущее или конечное значения параметра цикла; если в цикле с шагом +1 начальное значение больше конечного, то цикл не выполнится ни разу. Аналогично для шага -1, если начальное значение меньше конечного; после завершения цикла значение параметр цикла считается неопределенным, за исключением тех случаев, когда выход из цикла осуществляется оператором GOTO или с помощью процедуры BREAK; телом цикла может быть другой оператор цикла. 13

Лекция 8. 2. 10 Оператор цикла Пример - вычислить значение факториала a). . . Лекция 8. 2. 10 Оператор цикла Пример - вычислить значение факториала a). . . F: =1; FOR i: = 1 TO N DO F: = F*i; . . . b). . . F: =1; FOR i: = N DOWNTO 1 DO F: =F*i; . . . F=N! : 14

Лекция 8. 2. 10 Оператор цикла В следующем примере цикл выполняется 26 раз и Лекция 8. 2. 10 Оператор цикла В следующем примере цикл выполняется 26 раз и SIM принимает значения всех латинских букв от 'А' до 'Z'. . FOR SIM: = 'A' TO 'Z' DO WRITELN(SIM); . . . Если телом цикла является другой цикл, то циклы называются вложенными или сложными. Цикл, содержащий в себе другой цикл, называют внешним. Цикл, содержащийся внутри другого цикла, называется внутренним. 15

Лекция 8. 2. 10 Оператор цикла При построении вложенных циклов необходимо, чтобы все операторы Лекция 8. 2. 10 Оператор цикла При построении вложенных циклов необходимо, чтобы все операторы внутреннего цикла полностью находились в теле внешнего цикла. Вначале выполняется самый внутренний цикл при фиксированных значениях параметров циклов с меньшим уровнем вложенности, затем изменяется параметр цикла следующего (за внутренним) уровня и снова выполняется самый внутренний цикл и т. д. Пример. Вычислить значение Y, определяемое по формуле 16

Лекция 8. 2. 10 Оператор цикла Пример. Вычислить значение Y, определяемое по формуле PROGRAM Лекция 8. 2. 10 Оператор цикла Пример. Вычислить значение Y, определяемое по формуле PROGRAM SP; CONST N=10; M=15; VAR A: ARRAY [1. . N, 1. . M] OF REAL; i, j: INTEGER; P, V: REAL; BEGIN FOR i: =1 TO N DO FOR j: =1 TO M DO READLN(A[i, j]); Y: =0; FOR i: =1 TO N DO BEGIN P: =1; FOR J: =1 TO M DO P: = P*A[i, j]; Y: =Y+P END; WRITELN('Y=‘, Y) 17

Лекция 9. 2. 10 Оператор цикла итерационного типа Операторы цикла итерационного типа используются обычно Лекция 9. 2. 10 Оператор цикла итерационного типа Операторы цикла итерационного типа используются обычно в том случае, если число повторений цикла заранее неизвестно или шаг изменения параметра цикла отличен от +1 или -1. Оператор цикла с предусловием: WHILE <логическое выражение > DO <оператор>; Логическое выражение вычисляется перед каждым выполнением тела цикла. Если логическое выражение принимает значение TRUE, то тело цикла выполняется, если значение FALSE, происходит выход из цикла. Тело цикла может не выполниться ни разу, если логическое выражение сразу ложно. Телом цикла является простой или составной оператор. 18

Лекция 9. 2. 10 Оператор цикла Любой алгоритм, реализуемый с помощью оператора FOR, может Лекция 9. 2. 10 Оператор цикла Любой алгоритм, реализуемый с помощью оператора FOR, может быть записан с использованием конструкции WHILE. Например, вычисление значения факториала F =N! : . . . F: =1; i: =1; WHILE i<=N DO BEGIN F: =F*i; i: =i+1; END; . . . 19

Лекция 9. 2. 10 Оператор цикла В следующем примере требуется подсчитать значение y = Лекция 9. 2. 10 Оператор цикла В следующем примере требуется подсчитать значение y = Sin (x) с использованием разложения функции в ряд: В сумму включить только те члены ряда, для которых выполняется условие: |Ui| > т. е. очередной член ряда должен быть больше заданной точности вычислений . 20

Лекция 9. 2. 10 Оператор цикла PROGRAM SINX; VAR X, Y, E, U, Z: Лекция 9. 2. 10 Оператор цикла PROGRAM SINX; VAR X, Y, E, U, Z: REAL; K: INTEGER; BEGIN READLN(X, E); K: =0; Y: =0; U: =X; Z: =SQR(X); WHILE ABS(U)>E DO BEGIN Y: =Y+U; K: =K+2; U: =-U*Z/(K*(K+1)); END; WRITELN('SIN(X)=', SIN(X), ' Y=', Y); END. 21

Лекция 9. 2. 10 Оператор цикла До цикла переменные Y, U и К получают Лекция 9. 2. 10 Оператор цикла До цикла переменные Y, U и К получают начальные значения. Т. к. требуется подсчитать сумму начальное значение Y=0. В качестве начального значения U присваивается значение первого слагаемого из суммы - X. Z - вспомогательная переменная, содержащая квадрат X. ABS - стандартная функция подсчета модуля аргумента, т. к. вычисляемый ряд является знакопеременным, и U будет принимать как положительные, так и отрицательные значения. Особенностью алгоритма является то, что значение следующего слагаемого считается на базе предыдущего. Для проверки правильности работы программы в оператор вывода включена печать значения синуса, вычисленного при помощи стандартной функции. Если полученное значение отличается от рассчитанного при помощи стандартной функции не более, чем 22 на точность, можно считать, что программа работает правильно.

Лекция 9. 2. 10 Оператор цикла Пример вычисления значения квадратного корня из числа X Лекция 9. 2. 10 Оператор цикла Пример вычисления значения квадратного корня из числа X по итерационной формуле Yi+1=(Yi + X/Yi)/2 с точностью | Yi+1 -Yi |<= Начальное приближение Y 0=A вводится с клавиатуры. PROGRAM SQRTX; VAR X: REAL; EPS: REAL; YO: REAL; Y 1: REAL; A: REAL; {аргумент {точность вычисления {предыдущее приближение {очередное приближение {начальное приближение } } } 23

Лекция 9. 2. 10 Оператор цикла BEGIN READLN(A, EPS, X); IF X>0 THEN BEGIN Лекция 9. 2. 10 Оператор цикла BEGIN READLN(A, EPS, X); IF X>0 THEN BEGIN Y 0: =A; Y 1: =(Y 0+X/Y 0)*0. 5; WHILE ABS(Y 1 -Y 0)>EPS DO BEGIN Y 0: =Y 1; Y 1: =(Y 0+X/Y 0)*0. 5 END; WRITELN('Y 1=', Y 1, ' при X=', X) END ELSE WRITELN(‘Число ', X, ‘ меньше нуля'); END. 24

Лекция 9. 2. 10 Оператор цикла с постусловием: REPEAT < оператор 1 > [; Лекция 9. 2. 10 Оператор цикла с постусловием: REPEAT < оператор 1 > [; … < оператор n >] UNTIL <логическое выражение>; Данная конструкция оператора цикла используется, если число повторений цикла заранее неизвестно, но известно условие выхода из цикла. Управляющее циклом логическое выражение является условием выхода из цикла. Если оно принимает значение TRUE, то выполнение цикла прекращается. При использовании оператора REPEAT цикл выполняется хотя бы один раз. В отличие от других операторов цикла оператор данного вида не требует операторных скобок 25

Лекция 9. 2. 10 Оператор цикла Пример вычислениея F=N! с использованием конструкции REPEAT - Лекция 9. 2. 10 Оператор цикла Пример вычислениея F=N! с использованием конструкции REPEAT - UNTIL будет выглядеть следующим образом: . . . F: =1; i: =1; REPEAT F: =F*i; i: =i+1; UNTIL i>N; . . . 26