|
Writeln('болезнь'); 10: writeln('дети')else writeln('неудача') end; writeln('Нажми Enter'); readln; END.
Здесь функция Random(x) генерирует случайное число, с равномерной плотностью распределения на заданном интервале. Для инициализации распределения в начале программы необходимо вызвать процедуру Randomize.
Практическое задание N 1. 4
1. Назначить дежурного в классе из списка 10 учеников с вероятностью 1/15, в остальных случаях дежурит учитель. 2. Выбрать место отдыха в отпуске из списка 10 мест, предлагаемых туристическим агентством с вероятностью 1/30, в остальных случаях вы отдыхаете дома. 3. Вывести на экран сообщение в зависимости от введенного значения оценки (по десятибалльной системе), например: 1.. 2: плохо, 3.. 5: удовлетворительно, и т. д., иначе - неправильный ввод данных. 4. Вывести на экран сообщение в зависимости от введенного значения температуры воздуха (от -50 до +50 0 С), например: -50.. -20: очень холодно, -19.. -10: холодно, и т. д., иначе - неправильный ввод данных.
Условный оператор
Условный оператор включает в себя операторы, которые выполняются или не выполняются в зависимости от записанного в операторе условия. Оператор имеет вид:
IF "условие" Then "оператор1" Else "оператор2";
где "условие" - выражение логического типа; "оператор1" выполняется, если условие верно (True), "оператор2" выполняется, если условие не верно (False).
Например, вычисление квадратного корня из числа "a" проводится при условии a>=0, операторами: IF a >= 0 Then b:= Sqrt(a) Else begin WriteLn ('a<0'); Readln; Halt end;
Оператор Halt прекращает выполнение программы.
Схема выполнения условного оператора имеет вид: IF В условном операторе может отсутствовать (True) блок Else оператор2; т. е. условный оператор может иметь вид: (False) IF "условие" Then "оператор1";
например: IF a<0 Then a:= abs(a); Else Then Оператор2 оператор1
Пример программы: Автобус движется по заданному маршруту с объявлением названий остановок. Зная остановку, на которой надо выходить, вы принимаете определенное решение: Выхожу, либо - Еду дальше, которое выводится на экран.
PROGRAM octanovka; CONST A1= 'Бульвар Славы'; A2= 'Горсовет'; { A1, A2, A3, A4 - названия } A3= 'Спортивная'; A4= 'УАИ'; { остановок } Y= 'Выхожу'; N= 'Еду дальше'; var A, A0: String; { A0 - текущая остановка }
BEGIN writeln('Ввести нужную остановку из списка:'); writeln(A1:15, A2:15, A3:15, A4:15); Writeln; readln(A); Writeln; { A - нужная остановка }
IF (A<>A1) and (A<>A2) and (A<>A3) and (A<>A4) then begin Writeln('Нет такой остановки'); readln; Halt end; A0:= A1; { объявление остановки } IF A = A0 then begin writeln(Y, A:15); readln; Halt end else writeln(A0:-15, N:12); A0:= A2; { объявление остановки } IF A = A0 then begin writeln(Y, A:15); readln; Halt end else writeln(A0:-15, N:12); A0:= A3; { объявление остановки } IF A = A0 then begin writeln(Y, A:15); readln; Halt end else writeln(A0:-15, N:12); A0:= A4; { объявление остановки } writeln(Y, A:15); readln; END.
Первый условный оператор осуществляет контроль входных данных. Напомним, что в случае нескольких условий, соединенных логическим "И" результирующее условие имеет значение True, если каждое условие верно, иначе - False. В случае нескольких условий, соединенных логическим "ИЛИ" результирующее условие имеет значение True, если хотя бы одно условие верно, иначе - False. Поскольку операции сравнения имеют низший приоритет, то при проверке нескольких условий эти условия заключаются в скобки.
Практическое задание N 1. 5
1. Синоптики объявляют погоду на ближайшие дни: 1-солнце, 2-дождь, 3-туман, 4-ветер. Зная нужную вам погоду, вы принимаете определенное решение: жду нужную погоду, либо - беру отгул, которое выводится на экран. Программа запрашивает ввод нужной погоды и выводит на экран ваше решение на каждый день до дня отгула. 2. Старуха послала старика с просьбой: поймать в море нужную ей рыбку. Рыба клюет в определенной последовательности: окунь, камбала, линь, треска. Поймав рыбку, старик принимает решение: ловлю еще, либо - еду домой, которое выводится на экран. Программа запрашивает ввод нужной рыбки и выводит на экран решение старика на каждый улов до нужного.
В случае зависимых событий, исключающих одновременное их выполнение, могут применяться вложенные условные операторы. Во вложенных условных операторах служебное слово "else" относится к ближайшей конструкции If "условие" Then "оператор1" за которым оно следует, т. к. "оператор2" выполняется в случае, если "условие" - ложно. Приведем пример программы определения весовой категории в зависимости от веса спортсмена.
PROGRAM VES; { определение весовой категории спортсмена } Условная схема программы CONST A1='легкая категория'; A2='средняя категория'; Then A3='тяжелая категория'; IF Writeln(A1) A4='сверхтяжелая категория'; Else var V: integer; Then IF Writeln(A2) BEGIN Else write('введите вес спортсмена V='); Then readln(v); IF Writeln(A3) Else IF V < 62 then writeln(A1) else Writeln(A4) IF V < 75 then writeln(A2) { вложенный условный оператор } Else IF V < 88 then writeln(A3) { вложенный условный оператор } else writeln(A4); writeln('Нажмите Enter'); readln; END.
Практическое задание N 1. 6
1. Определить ваши действия в зависимости от дня недели. Например, суббота - еду в баню, воскресенье - еду в гости и т. д. Программа запрашивает ввод дня недели и выводит на экран ваши действия в зависимости от составленного расписания.
2. Определить вид функции в зависимости от значения аргумента: y=7 при х<-7, у=-х при -7=<х<0, у=х при 0<х<=5, у= 5 при х>5. Программа запрашивает ввод значения "х" и выводит на экран вид функции "у".
3. Рассчитать значение функции Y= хN в зависимости от значения "х" с выбором вида формулы: для случая аргумента х>0 функция Y= exp(N*ln(x)), при х<0 преобразовать "х" в положительное число x= abs(x), при х= 0 функция Y= 1.
4. Рассчитать значение функции Y= 1/ Ö х в зависимости от значения "х" с выбором вида формулы: для случая аргумента х>0 функция Y= 1/sqrt(x), при х<0 преобразовать "х" в положительное число x= abs(x), при х= 0 вывести надпись: " Деление на ноль".
Для разложения целого числа на цифры удобно применять операции: MOD и DIV. Например, если дано трехзначное число "N" ("N" соответствует "X1X2X3"), то цифры: X1X2X3, составляющие это число определяются блоком операторов:
X3:= N mod 10; N:= N div 10; X2:= N mod 10; N:= N div 10; X1:= N;
Если требуется определить, делится ли вещественное число "A" нацело на число "B", то можно применять функции Frac(x); и Int(x); например:
x:= A/B; If Frac(x) = 0 then writeln('Число "A" делится нацело на число "B"'); If Int(x) = x then writeln('Число "A" делится нацело на число "B"'); Практическое задание N 1. 7
1. Определить, является ли шестизначный номер билета счастливым: счастливым считается билет, у которого сумма первых трех цифр равна сумме последних трех цифр. 2. Проверить, является ли пятизначное число "A" симметричным, т. е. изменится ли значение числа при записи его цифр в обратном порядке. 3. Проверить, делится ли трехзначное число "A" нацело на сумму цифр, составляющих это число в случаях целого и вещественного типа числа "A". 4. Проверить, делится ли четырехзначное число "A" нацело на произведение цифр, составляющих это число в случаях целого и вещественного типа числа "A".
Примечание: программы запрашивают ввод значения числа с клавиатуры и выводят на экран результирующее сообщение. Программы должны содержать оператор контроля правильного ввода данных. Для больших чисел используйте тип LongInt.
Условный оператор может применяться для идентификации (распознавания) объекта по определенным признакам составляющих его элементов. Например, если объектом является треугольник, то элементами объекта могут быть: 1) три его угла (a, b, c); 2) три его стороны (a1, b1, c1); и т. д. Признаками являются значения элементов по которым производится идентификация, например, для углов: 1) один угол > 90 - (один признак); 2) три угла < 90 - (три признака); и т. д. В результате идентификации объект получает имя. Например, треугольник - остроугольный, либо тупоугольный и т. д. Если идентификация проводится по одному признаку для нескольких элементов, то несколько условий связываются служебным словом "or", например:
If (a >90) or (b >90) or (c >90) then writeln ('Треугольник - тупоугольный');
Если идентификация проводится по нескольким признакам, число которых равно числу элементов, то несколько условий связываются служебным словом "and", например:
If (a<90) and (b <90) and (c <90) then writeln('Треугольник - остроугольный'); Если имя объекта составное, то добавляются признаки для идентификации второй части имени и применяются вложенные условные операторы, например, для равнобедренного треугольника:
If (a<90) and (b<90) and (c<90) then If (a=b) or (b=c) or (a=c) then writeln('Треугольник - остроугольный и равнобедренный') else writeln('Треугольник - остроугольный');
Напомним, что условный оператор можно применять для контроля правильности вводимых данных, например:
If (a+b+c)<>180 then begin writeln('Сумма углов<>180'); Halt end;
Если для идентификации объекта достаточно меньшего числа признаков, чем число элементов, то условия, связанные "and" группируются, а группы соединяются служебным словом "or". Например, четырехугольник имеет элементами четыре стороны (a, b, c, d), а его имя устанавливается по двум признакам (равенство двух пар сторон), тогда можно использовать операторы:
If ((a=b) and (c=d)) or ((a=c) and (b=d)) or ((a=d) and (b=c)) then writeln('Параллелограмм');
Таким образом, если при идентификации объекта число признаков меньше, чем число элементов, то условия группируются. Например, пусть для идентификации зайца достаточно трех признаков для четырех элементов: YXO - длинное ('D'), XBOCT - короткий ('K'), LAPA - передние меньше задних ('PmZ'), HOC - короткий ('K'), тогда можно использовать операторы:
If ((YXO='D') and (XBOCT='D') and (LAPA='PmZ')) or ((YXO='D') and (XBOCT='D') and (HOC='K')) or ((YXO='D') and (HOC='K') and (LAPA='PmZ')) then writeln('Это ЗАЯЦ');
Практическое задание N 1. 8
1. Идентифицировать треугольник: остроугольный, тупоугольный, прямоугольный, равнобедренный, равносторонний по трем элементам - углам (сторонам). Причем, имя равнобедренного треугольника может быть составным. Контролировать допустимые значения элементов при вводе данных.
2. Идентифицировать четырехугольника: ромб, квадрат по пяти элементам - сторонам и углу.
3. Идентифицировать зверьков: заяц, кенгуру, белка по трем признакам для четырех элементов.
4. Идентифицировать летающий объект: самолет, вертолет, ракета, тарелка по трем признакам для четырех элементов. Например: для элементов: крылья, хвост, двигатель, длинный корпус признаками могут быть значения "Y" или "N".
Примечание к п. 2, 3, 4: для неопознанного объекта должно выдаваться соответствующее сообщение на экран.
Оператор цикла с параметром
Оператор цикла применяется при выполнении расчетов или других действий, повторяющихся определенное количество раз. Оператор имеет вид: For i:= N1 To N2 Do "оператор"; либо For i:= N1 DownTo N2 Do "оператор";
Здесь i - параметр цикла (переменная порядкового типа), N1, N2 - начальное и конечное значения параметра цикла i. N1, N2 могут быть константами, переменными или выражениями порядкового типа.
Напомним, что "оператор" может иметь вид: Begin "операторы" end; Схема выполнения оператора цикла с параметром имеет вид:
В случае связки To цикл выполняется FOR i при условии N1 <= N2 и происходит с единичным возрастанием параметра цикла i от N1 до N2. от N1 до N2 В случае связки DownTo цикл выполняется при условии N1 >= N2 и происходит с единичным уменьшением параметра цикла i DO от N1 до N2. "оператор" В операторе цикла не разрешается присваивать параметру цикла какое-либо значение.
После окончания цикла значение параметра цикла “i” неопределенно.
Оператор цикла часто применяется для суммирования значений некоторой последовательности чисел или значений функции при известном числе операций суммирования. Напомним некоторые определения, связанные с расчетом суммы последовательности. Сумма членов последовательности величин a1, a2, a3,..., aN называется конечной суммой SN= a1 + a2 + a3+... + aN. Для некоторых последовательностей известны формулы расчета конечных сумм, например:
при aN= aN-1 + d; SN= (a1 + aN)*N/2; - арифметическая прогрессия, при aN= aN-1 * q; SN= (a1 - aN*q)/(1-q); - геометрическая прогрессия, где d и q - постоянные числа.
Здесь N-ый член последовательности выражается через (N-1)-ый член. Такие зависимости называются реккурентными. Конечная сумма последовательности может быть неизвестна, тогда для ее расчета применяется алгоритм суммирования членов последовательности в цикле от 1 до N. Приведем пример расчета конечной суммы последовательности:
12 + 32 + 52 +... + (2*N-1)2; SN = N*(4*N2-1)/3;
PROGRAM SUM_K; { расчет конечной суммы } var a, S, Sn, i, N: word; Begin write('Введите число членов суммы N='); readln(N); S:= 0; For i:= 1 to N do begin { цикл суммирования } a:= Sqr(2*i-1); S:= S+a end; Sn:= N*(4*N*N-1) div 3; Writeln('Конечная сумма S=', S:-10:2); Writeln('Расчет конечной суммы по формуле Sn=', Sn:-10:2); Что способствует осуществлению желаний? Стопроцентная, непоколебимая уверенность в своем... ЧТО И КАК ПИСАЛИ О МОДЕ В ЖУРНАЛАХ НАЧАЛА XX ВЕКА Первый номер журнала «Аполлон» за 1909 г. начинался, по сути, с программного заявления редакции журнала... Система охраняемых территорий в США Изучение особо охраняемых природных территорий(ООПТ) США представляет особый интерес по многим причинам... Конфликты в семейной жизни. Как это изменить? Редкий брак и взаимоотношения существуют без конфликтов и напряженности. Через это проходят все... Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:
|