metod_15.03.04_atppp_oaip_up_2016 (1016600), страница 4
Текст из файла (страница 4)
X = 5, Y = 7. Вывести эти значения.WRITЕLN (X, Y); Получим: 57 (два значения без пробела между ними).WRITELN (‘X=‘,X, ‘Y=‘,Y); Получим: X=5Y=7 (тоже без пробела).Для того чтобы сделать результаты работы программы болеенаглядными, в качестве параметров процедур WRITE и WRITELNиспользуются строки, заключенные в апострофы. Последовательностьсимволов, заключенная в апострофы, просто копируется на экран.Существует еще одна возможность управлять выводом: послепеременной через двоеточие указана ширина поля, которое отводится дляпредставления числа.WRITELN(‘X=‘, X:4,’ Y=‘, Y:4);X= 5 Y= 7Под представление Х и Y в этом случае отводиться по четыре позиции.Если одно из значений не помещается в указанное поле, то ошибки невозникает.
Число все равно будет напечатано, причем под его представлениебудет отведено столько позиций, сколько необходимо, чтобы представить егополностью. Часто ширина поля не указывается. Тогда по умолчанию отводитсянекоторое число позиций, в которых и размещается выводимое число.WRITELN(X:7:3)Пример. Максимальное из трех чисел уменьшить на 0.3IF Y > MAX THEN MAX:=YELSE IF Z>MAX THEN MAX:=Z;MAX:=MAX-0.3Задача.Вычислить Y=X*X+1, если X<0Y=X-2.1, если X>/2SINX,если 0<=X=</2Задание.
Найти ошибки, если они есть:а) IF A<B THEN A:=б) IF X>0 THEN S:=в) IF K<>M THEN K:=M;г) IF 5 then S:=S+5;Пример. Какие значения будут иметь переменные А и В в результатевыполнения фрагмента программы?17IF A<B THEN A:= BДано: А=0.5, В = 1.7Ответ: А=0.5, В=0.5Задача. Какая задача решается?IF X<Y THEN MAX:=Y ELSE MAX:=X;Пример. Выполнить с помощью условного оператора: меньшее из двух чисел Хи Y заменить нулями, а в случае их равенства - заменить нулями оба.IF X=YTHENBEGINX:=0;Y:=0;ENDELSE IF X < Y THEN X:=0 ELSE Y:=0;2.7.5. Пример простой программыРешить квадратное уравнение АХ*Х + ВХ + С = 0Возможности:1) если А=0, В=0, С=0, то уравнение имеет бесконечное множество решений;2) если А=0, В=0, С<>0, то уравнение не имеет решений;3) если А=0, В<>0, С<>0, то уравнение имеет единственный корень Х=-С/В4) если А<>0, В<>0, С<>0, то решение уравнения зависит от дискриминантаD=B*B-4AC;4a) если D<0, то уравнение имеет комплексные корни;4б) если D=0, то уравнение имеет два одинаковых корня X=-B/2A;4в) если D>0, то уравнение имеет два корня X1 = (-B+D) / 2A;X2=(-B-D)/2APROGRAMM QUADRAVAR A,B,C,D,X1,X2: REAL;BEGINWRITE (‘ВВЕДИТЕ А, В, С’);READLN(A,B,C);IF (A=0) AND (B=0) AND (C=0)THEN WRITELN (‘Уравнение имеет беск.
множество решений’)ELSE IF (A=0) AND (B=0) AND (C<>0)THEN WRITELN (‘Уравнение не имеет решений’)ELSE IF (A=0) AND (B<>0) AND (C<>0)THEN WRITELN (‘Корень Х = ’ -C/B)ELSE IF D<0 THENWRITELN (‘Комплексные корни’)ELSEWRITELN (‘Два равных корня Х=’, -В/2А)ELSE BEGIN D:=SWRT(B*B-4*A*C);X1:=(-B+SQRT(D))/(2*A);X2:=(-B-SQRT(D))/(2*A);WRITELN(‘Корни уравнения: X1=‘,X1,’ X2=‘,X2)END;END.182.7.6. Оперетор безусловного переходаОбычно операторы программы на языке Паскаль выполняются в томпорядке, в каком они записаны. Это естественный порядок выполненияпрограммы.
Однако иногда возникают ситуации, когда необходимо прерватьестественный порядок и принудительно передать управление в заданную точкупрограммы. Для этих целей используется оператор перехода, который имеетвид:Goto метка;В качестве меток в языке Паскаль разрешается использовать целые числаиз диапазона 0…9999 или идентификаторами.
Метка может предшествоватьлюбому оператору и отделяться от него двоеточиемПример:………….Goto 99;……………99:writeln(‘выполнен оператор’);…………….Все метки, прежде чем они используются в программе, должны бытьописаны в разделе описания меток. Напомним еще раз одно из основныхправил языка программирования Паскаль: все объекты, используемые впрограмме, должны быть описаны. Метки в этом смысле не представляютсобой исключения. Раздел описания меток начинается со слова LABEL, закоторым через запятую перечисляются используемые в программе метки,например: LABEL 5, 99, 100, start, error;Вопрос об использовании (точнее говоря, о неиспользовании)оператораперехода многократно обсуждался. Ясно, что бессистемное использованиеоператора перехода вредно, поскольку программа становится малопонятной и,что еще важнее, статический текст программы не отражает динамики еевыполнения.
Общая рекомендация по использованию операторов переходазаключается в следующем: их следует использовать в каких-то необычныхситуациях, когда без них трудно обойтись. Чаще всего это возникает приразличных нетипичных завершениях циклов. Во всяком случае, их следуетстараться избегать.Пример. Пусть производится последовательное чтение и суммирование какогото ряда положительных чисел, причем их количество неизвестно. Концомпоследовательности служит первое же отрицательное число.Program summa;Label 99;Var number,sigma: real;BeginSigma:=0;While sigma>=0 doBeginRead(number);If number <0 them goto 99;Sigma:=sigma+number;19End;99: write(‘summa chisel=’,sigma);end.В данной программе с помощью заголовка цикла While sigma>=0 doмоделируется бесконечный цикл (сумма положительных чисел всегдаположительна), и выход из цикла осуществляется с помощью оператораперехода.2.8.
Организация цикловБольшинство задач, решаемых на ЭВМ, невозможно представить в видепоследовательности простых вычислений; часто приходится организовыватьповторяемость одних и тех же вычислений.2.8.1. Использование операторов условного и безусловногоперехода1) Искусственно вводим счетчик числа шагов цикла2) Проверяем условие окончания циклических расчетов3) Если надо продолжить, увеличиваем значение счетчикаЗадача.
Вычислить таблицу квадратов и корней целых чисел от 1 до 100.Здесь счетчиком чисел может служить само число. Дадим ему имя N.Использовать операторы условного перехода в программе крайне нежелательно!2.8.2. Цикл с параметромЕсли число повторений цикла известно, используется цикл FOR, длякоторого нет необходимости принудительно увеличивать значение параметрацикла. Такое увеличение производится автоматически.Общий вид оператора цикла с параметром:А) Если начальное значение параметра меньше конечного, то используетсяформа вида:FOR I: = M TO N DO оператор;Б) Если начальное значение параметра цикла больше конечного, тоиспользуется форма вида:FOR I: = N DOWNTO M DO оператор;M и N- выражения задающие начальное и конечное значенияпараметра I,А - простой или составной оператор.Если после слова DO необходимо записать несколько операторов, тоследует воспользоваться составным оператором BEGIN оператор1;оператор2;оператор3END;Параметр цикла не может быть вещественным(действительным), а толькоцелым или другим типом, который можно пронумеровать и сосчитать.
Шагвсегда равен 1 или –1. Задать другой шаг нельзя!Пример(тот же).For n :=1 to 100 doWriteln(‘n=’,n,’sqr(n)=’,sqr(n),’sqrt(n)=’,sqrt(n));20С помощью этого цикла процедура WRITELN будет последовательновыполняться для следующих значений переменной N: 1,2,…,100.Для циклов FOR нет необходимости следить за их завершаемостью.Поскольку множество значений, которое присваивается параметру цикла,конечно, то после конечного числа выполнений тела цикла весь циклобязательно завершится.Ограничения.1) Значения параметра цикла, начального и конечного значений параметра циклаизменять внутри цикла нельзя.2) Войти в цикл можно только через его начало, а выйти- либо при исчерпаниизначений параметра цикла, либо при выполнении оператора перехода GOTOпо метке, расположенной вне данного цикла.
При нормальном выходе изцикла значение его параметра равно конечному значению.Итак, оператор цикла спараметром позволяет осуществитьпоследовательный перебор значений параметра, но с приращением равным 1. Втом случае, если шаг просмотра отличен от единицы или заранее не известноколичество повторений тела цикла, необходимо применять один из двух другихвидов операторов цикла: с предусловием или с постусловием.2.8.3.
Цикл с предусловием - цикл WHILEПример. Составить таблицу квадратов и квадратных корней для чисел от 1 до100.N:=1 ;While n<=100 doBeginWriteln (‘n=’,n,’sqr(n)’,sqr(n),’sqrt(n)’,sqrt(n));N: =N+1End;В общем случае данный оператор цикла записывается так:While условие DO оператор;Правило его выполнения следующее: оператор выполняется до тех пор,пока остается истинным условие цикла. Как только значение условиястановится ложным, цикл прекращает выполняться. Если значение условияложно перед первым выполнением цикла, то он не выполняется ни разу.Обратите внимание на то, что после слова DО может стоять только одиноператор, поэтому чаще всего после слова DO стоит составной оператор.Приведенный в примере оператор WHILE работает так.