Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Тurbo Pascal 7+.doc
Скачиваний:
12
Добавлен:
24.12.2018
Размер:
10.09 Mб
Скачать

7.7. Поиск максимального из чисел

Задача программисту. Найти максимальное из вводимых в компьютер чисел.

Задача рыбаку. Принести домой самую большую из выловленных рыб.

Решение рыбака. Рыбак приготовил для самой большой рыбы пустое ведро. Первую пойманную рыбу рыбак не глядя бросает в это ведро. Каждую следующую рыбу он сравнивает с той, что в ведре. Если она больше, то он бросает ее в ведро, а ту, что была там раньше, выпускает в реку.

Решение программиста. Программист приготовил для самого большого числа ячейку и придумал ей название, скажем max. Первое число программист не глядя вводит в эту ячейку. Каждое следующее число (назовем его chislo) он сравнивает с max. Если оно больше, то он присваивает переменной max значение этого числа.

Напишем программу для определения максимального из 10 вводимых чисел:

VAR i, chislo, max :Integer;

BEGIN

ReadLn(max); {первую рыбу - в ведро}

for i:=2 to 10 do begin {ловим детальных рыб:}

ReadLn(chislo);{поймали очередную рыбу}

if chislo>max then max:=chislo {и если она больше той, что}

{в ведре, бросаем ее в ведро}

end {for};

WnteLn(max) {несем самую большую рыбу домой}

END.

Задание 57

Найти из N чисел минимальное. Каким по порядку было введено минимальное число?

Указание. Для номера минимального числа тоже нужно отвести специальную ячейку.

Задание 58

У вас есть данные о росте ваших одноклассников. Правда ли, что рост самого высокого отличается от роста самого низкого больше чем на 40 см?

Глава 8. Процедуры

Процедуры нужны для того чтобы программа была короче и чтобы ее было легче прочесть. Ни одна профессиональная программа не обходится без процедур или без их старших братьев - объектов, рассмотрение которых выходит за рамки начального курса. Объясним смысл процедур на конкретном музыкальном примере, а именно, посмотрим как заставить компьютер исполнять мелодии.

8.1. Компьютер звучит

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

USES CRT;

BEGIN

Sound(300)

END.

Пояснения. eсли мы хотим, чтобы наш компьютер настроился на работу со звуком, мы должны первой строкой программы написать Uses CRT. Подробно о том, что это значит, расскаем в разделе 9 1.

Единственный оператор программы Sound(300) приказывает компьютеру включить ровный, однообразный звук частотой 300 Гц. Слово Sound (читается - '"саунд") переводится как "звук". Для тех, кто не знает, поясню, что частота определяет высоту звука Sound(300) - это звук средней высоты Sound(6000) - это звук высокий, тонкий, как комариный писк Sound(40) - звук низкий.

Итак, все действие нашей программы состоит в том, что включается звук. А что дальше? Когда он выключается? А никогда! Программа, выполнившись мгновенно, прекращает свою работу - и мы остаемся один на один со звуком. Пытаясь его прекратить, мы выходим из среды Паскаля - не помогает. В общем, звук продолжается все то время, пока компьютер включен. В остальном он никак не мешает компьютеру правильно работать. Мы можем запустить другую программу - звук будет сопровождать нас. Самый простой способ избавиться от звука - перезапустить компьютер. Другой способ - выполнить программу, в которой есть оператор NoSound:

USES CRT;

BEGIN

NoSound

END.

Оператор NoSound (читается - "ноу 'саунд", переводится как "нет звука") выключает звук.

Совет. Работая с любой звуковой программой, откройте еще одно окно и введите туда эту программу с NoSound. He пожалеете!

Теперь рассмотрим такую программу:

USES CRT;

BEGIN

Sound (300); Delay (2000); NoSound

END.

Здесь мы видим новый для нас оператор Delay (2000). Читается - "ди'лэй"; переводится - "отсрочка" или "пауза", Его действие в том, что он приостанавливает работу программы на 2000 мс, или, что то же самое, на 2 с. Delay (1000) приостанавливает работу программы на 1 с, Delay (500) - на полсекунды и т. д. ( Продолжительность паузы сильно зависит от быстродействия компьютера).

Итак, оператор Sound (300) включает звук. Сразу после этого оператор Delay (2000) приостанавливает работу программы на 2с. Но звук этот оператор не может выключить, компьютер продолжает звучать. Через 2с программа снова оживает и выполняется оператор NoSound. Звук выключается. Таким образом, результатом выполнения этих трех операторов будет звук частотой 300 Гц продолжительностью 2с.

USES CRT;

BEGIN

Sound(900);Delay(1000);Sound(200);Delay(3000);NoSound

END.

Начинается она со звука частотой 900 Гц и продолжительностью 1 с, а затем оператор Sound(200) включает вместо звука с частотой 900 Гц звук частотой 200 Гц, который длится 3 с.

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

USES CRT;

VAR hz :Integer;

BEGIN

hz:=60,

while hz<800 do begin

Sound(hz);

Deiay(1000);

hz:=hz+40

end;

NoSound

END.

Если вас интересуют музыкальные ноты, то вот вам операторы Sound, задающие все ноты третьей октавы:

Нота до Sound(523)

Нота до-диез Sound(554)

Нота ре Sound(587)

Нота ре-дйез Sound(622)

Нота ми Sound(659)

Нота фа Sound(698)

Нота фa-диез Sound(740)

Нота соль Sound(784)

Нота соль-диез Sound(831)

Нота ля Sound(880)

Нота ля-диез Sound(932)

Нота си Sound(988)

Задания 59-63

59. Уменьшив числа в операторах Delay(1000) и hz=hz-5 можно добиться впечатления одного непрерывного постепенно повышающегося звука (сирена). Попробуйте сделать это.

60. Если вам это удалось, попробуйте смоделировать сирену милицейской машины: звук вверх - звук вниз - звук вверх - вниз - и так несколько раз.

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

62. Сделайте "датчик чувствительности уха к высоким частотам". Известно, что человеческое ухо не может слышать звуки, частота которых превышает 10000-20000 Гц. У разных людей порог чувствительности разный. Напишите программу, которая выдает звуки все более высокой частоты и печатает на экране значения этой частоты, так что человек успевает увидеть, при какой частоте он перестает слышать звук. Вы сможете определить, у кого порог чувствительности выше - у вас или у вашего друга. Удобно внутри цикла использовать команду ReadLn.

63. Если у вас есть некоторое музыкальное образование, вы можете попробовать заставить компьютер исполнить простенькую мелодию из нескольких нот.