Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка Паскаль.doc
Скачиваний:
127
Добавлен:
30.04.2015
Размер:
661.5 Кб
Скачать

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

Пример 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.