Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Методичка Паскаль

.pdf
Скачиваний:
101
Добавлен:
30.04.2015
Размер:
592.26 Кб
Скачать

While k<=n do

 

Repeat

Writeln(k);

Begin

 

 

 

Writeln(k);

Readln

Writeln(k);

 

 

k:=k+1

End.

k:=k+1

 

 

Until k=n+1;

 

End;

 

 

Readln

 

Readln

 

 

End.

 

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;

21

{ печатаем число – член прогрессии } { вычисляем следующий член прогрессии и за-
писываем его в ту же переменную А }

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»,

22

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

вводимых чисел.

23

Алгоритм поиска экстремума (максимума или минимума) числовой по-

следовательности: сначала вводится первое число, оно полагается макси-

мальным (или минимальным). После этого вводятся все остальные числа (от

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 разноцветных звезд, расположенных на экране случайным образом.

24

Указание: Для решения данной задачи необходимо использовать спе-

циальную функцию – датчик случайных чисел. Она вызывается следующим образом: 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 (‘Сколько звезд будет на небе ? ’);

25

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.

Контрольные задания

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

сит 5.

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

вающей геометрической последовательности с первым членом B и знамена-

телем q= 0.3, большие числа 1.

3.3. Задана функция и ее разложение в ряд. Численно убедиться в справедливости равенства, для чего для заданного значения аргумента вы-

числить значение функции при помощи стандартной функции языка и раз-

ложение с заданной погрешностью. Вывести число итераций, необходимых для достижения заданной точности.

 

x 3

 

x 5

x 2n−1

sin x = x

 

+

 

− ... + (−1)n 1

 

+ ...

 

 

 

3!

5!

 

(2n − 1)!

26

3.4. Задана функция и ее разложение в ряд. Численно убедиться в справедливости равенства, для чего для заданного значения аргумента вы-

числить значение функции при помощи стандартной функции языка и раз-

ложение с заданной погрешностью. Вывести число итераций, необходимых для достижения заданной точности.

cos x = 1−

x2

+

x4

− ... + (−1)n

x2n

+ ...

 

 

 

 

2!

4!

 

(2n)!

 

3.5.Составить программу нахождения НОД (наибольшего общего де-

лителя) двух чисел. Используйте алгоритм Евклида: большее из двух чисел заменяется их разностью до тех пор, пока числа не станут равными – это и есть НОД.

3.6.«Тренажер». Составить программу, проверяющую знание табли-

цы умножения. Программа должна выводить примеры вида «a*b=», вводить ответ пользователя, проверять его и выводить одно из сообщений «Верно» или «Неверно». В конце работы пользователя должно выводиться количество правильно решенных примеров и количество сделанных пользователем оши-

бок, а также выставляться отметка.

3.7. Изменить программу «Тренажер» так, чтобы в случае неверного ответа программа предоставляла пользователю сделать еще несколько попы-

ток (например, три). Если же правильный ответ так и не был получен, про-

грамма должна сама вывести его на экран.

3.8. «Расписание звонков». В учебном заведении задается начало учебного дня, продолжительность «пары» или урока, продолжительность пе-

ремены, количество «пар» (уроков). Получить расписание звонков на весь учебный день.

3.9.«Расписание». Известно время начала и окончания работы неко-

торого пригородного автобусного маршрута с одним автобусом на линии, а

также протяженность маршрута в минутах (в один конец) и время отдыха на конечных остановках. Составить суточное расписание этого маршрута (т.е.

время отправления с конечных пунктов). 27

3.10. На склад поступают груза на машинах различной грузоподъемно-

сти. Одновременно на компьютер, обслуживающий склад, поступает инфор-

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

3.11. Составить программу, которая выведет на экран таблицу умно-

жения на заданное число.

3.12. «Бегущая строка». Составить программу, которая изобразит в нижней части экрана строку, «бегущую» справа налево. Строка должна ме-

нять свой цвет.

3.13. Составить программу, которая выведет на экран таблицу Пифа-

гора размера M x N.

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

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

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

данного интервала, кратные введенному числу.

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

3.18.Составить программу, которая определит, является ли введенное число простым (число называется простым, если оно не имеет других дели-

телей, кроме 1 и самого себя).

3.19. Составить программу, которая выведет на экран все простые чис-

ла из заданного интервала.

3.20. «Гуси и кролики». У гусей и кроликов вместе 2n лап. Сколько может быть гусей и кроликов (вывести все возможные сочетания).

28

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

3.22.Составить программу, которая формирует случайным образом числовую последовательность и определяет количество четных чисел в ней.

3.23.Составить игровую программу «Угадайка». Программа должна

«загадывать» число из заданного пользователем интервала. Пользователь угадывает это число, вводя свои варианты ответа, а программа выдает под-

сказки «Больше» или «Меньше» и ведет подсчет сделанных попыток. После того, как число отгадано, игру можно повторить.

29

Тема 4. Обработка данных строкового типа

Краткое изложение теоретического материала

Символьный тип Char. Значением является один символ. Все симво-

лы упорядочены. Порядковый номер символа – его код. К данным символь-

ного типа применимы операции отношения (сравниваются коды символов).

Отображаемыми (на экране) являются символы с кодами от 32 до 255. Сим-

волы с кодами от 0 до 31 – управляющие. Русские и латинские буквы упоря-

дочены по алфавиту.

Функции преобразования:

Chr(X) – возвращает символ с кодом Х;

Ord(C) – возвращает код (порядковый номер) символа С.

Прочие стандартные функции:

Pred(C) – возвращает символ, предшествующий символу С;

Succ(C) – возвращает символ, следующий за символом С.

Строковый тип String. Строка – произвольная последовательность символов. Длина строки – количество символов в ней. Пустая строка не со-

держит ни одного символа. Ее длина равна нулю.

Стандартный паскаль допускает использование строк длиной до 255

символов - это тип String.

В Delphi для работы со строками есть типы:

-ShotString, аналогичный типу String в стандартном паскале;

-String для обработки строк сколь угодно большой длины, ограничен-

ной лишь размерами памяти (такие строки размещаются в динамической па-

мяти).

Строковая константа заключается в апострофы: Мама мыла раму’.

Описание строковой переменной:

Var <имя переменной> : String [N];

30