Тема 2. Разветвляющиеся программы 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Тема 2. Разветвляющиеся программы



Примеры решаемых задач

Пример 1. Составить программу, которая определит большее из двух введенных чисел.

Программа:

Program maximum;

Uses Crt;

Var A, B: Integer;

Begin

Clrscr;

Write (‘Введите два числа ’);

Readln (A, B);

If A>B

Then Writeln (‘Большее число ’, A)

Else If B>A

Then Writeln (‘Большее число ’, B)

Else Writeln (‘Числа равны’);

Readln

End.

Пример 2. Составить программу, которая вводит число, обозначающее количество лет, и выводит для этого числа наименование «год», «года» или «лет». Например, «14 лет», «183 года», «31 год».

Составим модель данной задачи. Исходным данным является целое число A. Результат: наименование. Наименование зависит от последней цифры введенного числа: 1 - «год»; 2,3,4 – «года», 0,5,6,7,8,9 – «лет». Исключением являются числа, две последних цифры которых составляют число от 11 до 14 – в этом случае требуемым наименованием будет «лет» («12 лет»).

Алгоритм решения:

ввод числа А;

вычисление числа В из двух последних цифр числа А;

если В лежит в интервале от 11 до 14,

то писать наименование «лет»

иначе

выделить последнюю цифру числа А (обозначим С);

если С=1, то вывести наименование «год»;

если С=2 или С=3 или С=4, то вывести наименование «года»;

если С=0 или С в интервале от 5 до 9, то вывести наименование «лет».

Программа:

Program Years;

Uses Crt;

Var A, B, C: Integer;

Begin

Clrscr;

Write (‘Введите число ’);

Readln (A);

B:= A mod 100;

If (B>=11) And (B<=14)

Then Writeln (A, ‘ лет’)

Else Begin

C:= A mod 10;

Case C Of

1: Writeln (A, ‘ год’);

2, 3, 4: Writeln (A, ‘ года’);

0, 5..9: Writeln (A, ‘ лет’)

End

End;

Readln

End.


Тема 3. Циклические программы

Примеры решаемых задач

Пример 1. Составить программу, которая выведет на экран числа от 1 до N.

Пояснение: составим три программы, т.е. решим данную задачу с использованием трех различных циклических конструкций.

Цикл с предусловием Цикл с постусловием Цикл со счетчиком
Program Numbers; Uses Crt; Var k, n: Integer; Begin Clrscr; Write(‘Введите N ’); Readln(n); k:=1; While k<=n do Begin Writeln(k); k:=k+1 End; Readln End. Program Numbers; Uses Crt; Var k, n: Integer; Begin Clrscr; Write(‘Введите N ’); Readln(n); k:=1; Repeat Writeln(k); k:=k+1 Until k=n+1; Readln End. Program Numbers; Uses Crt; Var k, n: Integer; Begin Clrscr; Write(‘Введите N ’); Readln(n); For k:=1 To n Do Writeln(k); Readln End.

Пример 2. Составить программу, которая будет запрашивать пароль до тех пор, пока не будет введен верный ответ.

Программа:

Program Password;

Uses Crt;

Const Pass=’паскаль’;   { верный ответ }

Var S: String;

Begin

Clrscr;

Repeat

Write (‘Пароль ’);

Readln (S);   { вводим пароль }

If S <> Pass Then Writeln(‘Неверно!’)

Until S=Pass;   { цикл закончен, если ввели верный пароль }

Writeln (‘Верно!’);

Readln

End.

Пример 3. Составить программу, которая выведет на экран все положительные члены арифметической прогрессии с разностью D= -1.5 и первым членом A.

Программа:

Program Progress;

Uses Crt;

Const D= -1.5; { Константа – разность прогрессии }

Var A: Real; { В А будут храниться по очереди все члены прогрессии }

Begin

Clrscr;

Write (‘Введите первый член прогрессии ’);

Readln (A);

While A > 0 Do {пока очередной член прогрессии положителен}

Begin

Writeln(A); { печатаем число – член прогрессии }

A:= A + D { вычисляем следующий член прогрессии и записываем его в ту же переменную А }

End;

Readln

End.

Пример 4. Составить программу, которая вычислит общее количество «5», «4», «3» и «2», полученных студентами группы за экзамен по программированию, а также средний балл за экзамен, если известны количество студентов в группе и отметки каждого из них. 

Программа:

Program Students;

Uses Crt;

Var N, K, K5, K4, K3, K2, S, M: Integer;

{ N – количество студентов в группе,

K – счетчик всех студентов,

K5 – счетчик «5»,

K4 – счетчик «4»,

K3 – счетчик «3»,

K2 – счетчик «2»,

S – сумма всех отметок,

M – отметка очередного студента }

Sb: Real; { Sb – средний балл за экзамен }

Begin

Clrscr;

Write (‘Сколько студентов в группе? ’);

Readln (N);

For K:= 1 To N Do { перебираем всех студентов }

Begin

Writeln (‘введите отметку ’, K, ‘студента ’);

Readln (M); {В переменную М вводим все отметки по очереди}

S:= S+M; { В переменной S накапливается сумма всех отметок}

Case M Of { Увеличиваем нужный счетчик }

5: K5:= K5 + 1;

4: K4:= K4 + 1;

3: K3:= K3 + 1;

2: K2:= K2 + 1

End

End;

Sb:= S / N;      { Вычисляем средний балл }

Writeln (‘Количество «5» ’, К5);

Writeln (‘Количество «4» ’, К4);

Writeln (‘Количество «3» ’, К3);

Writeln (‘Количество «2» ’, К2);

Writeln (‘Средний балл группы за экзамен ’, Sb:5:2);

Readln

End.

Пример 5. Составить программу, которая определит наибольшее из N вводимых чисел.

Алгоритм поиска экстремума (максимума или минимума) числовой последовательности: сначала вводится первое число, оно полагается максимальным (или минимальным). После этого вводятся все остальные числа (от 2-го до N-го), каждое из них сравнивается с максимумом (минимумом), и если оно больше (меньше), то максимуму (минимуму) присваивается введенное число.

Программа:

Program Maximum;

Uses Crt;

Var Max, X: Real;

K, N: Integer;

Begin

Clrscr;

Write (‘Сколько чисел? ’);

Readln (N);

Write (‘Введите первое число ’);

Readln (Max);

For K:= 2 To N Do      

Begin

Writeln (‘Введите ’, K, ‘ число ’);

Readln (X);   

If X > Max Then Max:= X

End;

Writeln (‘Наибольшее из введенных чисел ’, Max);

Readln

End.

Пример 6. Составить программу, которая рисует в алфавитно-цифровом режиме звездное небо из N разноцветных звезд, расположенных на экране случайным образом.

Указание: Для решения данной задачи необходимо использовать специальную функцию – датчик случайных чисел. Она вызывается следующим образом: Random (N). Датчик случайных чисел возвращает случайное целое число из интервала от 0 до N-1. Таким образом, после выполнения команды

A:= Random (10);

значением переменной А будет какое-то число (неизвестное заранее) из интервала от 0 до 9. Для того, чтобы при каждом запуске программы генерировалась новая последовательность случайных чисел, необходимо перед вызовом функции Random выполнить инициализацию датчика случайных чисел. Она выполняется командой Randomize (т.е. вызывается процедура с таким именем).

Кроме того, для решения данной задачи может потребоваться использование следующих процедур из модуля CRT:

1. ClrScr; - очистка экрана;

2. TextColor(c); - цвет выводимого текста, 0 £ с £ 15. Параметр С – это номер цвета (см. Приложение 1).

3. TextBackGround(c); - цвет фона, 0 £ с £ 7. Параметр С – это номер цвета (см. Приложение 1).

4. GotoXY(x,y); - позиционирование курсора в точку с координатами (x,y): 1 £ x £ 80, 1 £ y £ 25 (или 1 £ y £ 40 в зависимости от установленного максимального количества строк в алфавитно-цифровом режиме).

5. Delay(n); - приостановка (задержка) работы программы на n миллисекунд.

Программа:

Program Sky;

Uses Crt;

Var n, i, x, y, c: Integer;

Begin

ClrScr;

Write (‘Сколько звезд будет на небе? ’);

Readln (n);

ClrScr;

Randomize;

For i:= 1 To n Do

Begin

x:= random (80) + 1;

y:= random (24) + 1;

c:= random (15) + 1;

TextColor (c);

Gotoxy (x, y);

Write (‘ * ’)

end;

Readln

End.



Поделиться:


Последнее изменение этой страницы: 2021-04-05; просмотров: 50; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.224.214.215 (0.013 с.)