Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование для начинающих 2011-09-02.pdf
Скачиваний:
45
Добавлен:
09.06.2015
Размер:
576.39 Кб
Скачать

program <Имя программы>; <Раздел описаний>

begin

<Раздел операторов> end.

Программа на Паскале начинается с ключевого слова program, после которого идет имя программы (любой правильный идентификатор) и ставится точка с запятой. Затем идет раздел описаний. Здесь, в частности, располагается раздел описания переменных. Все инструкции располагаются в разделе операторов. В частности операторы присваивания. Пример программы:

program MyFirstProgram; var

x: integer; begin

x := 2; end.

1.6. Ввод/вывод в текстовом режиме

Приведенная в предыдущем разделе программа запишет в некоторую область памяти число 2, однако внешне это никак не проявится. Нормальная программа должна уметь получать информацию от пользователя и сообщать ему результаты своей работы.

Впростейшем случае вывод информации осуществляется процедурами write

иwriteln. В обоих случаях выводится текст или значения переменных. Отличие этих двух процедур в том, что последовательные вызовы write будут печатать информацию в одной строке, а writeln после каждого вызова переводит курсор на

следующую строку. Примеры вызова процедур вывода: writeln('Hello');

Печатается слово 'Hello'. writeln(x);

Напечатается значение переменной x.

x := 2; writeln('x = ', x);

Водну строчку напечатается строка «x = » и значение переменной x, то есть

врезультате будет напечатано «x = 2». x := 2;

y := 3; writeln(x, y);

В одну строчку напечатаются значения переменных x и y, то есть «23».

10

writeln(x, ' ', y);

Между значениями x и y будет располагаться пробел.

writeln(x);

writeln(y);

Значения x и y будут напечатаны на разных строках. writeln(2*x+y);

Будет напечатано значение выражения 2*x+y. writeln;

Вызов writeln без параметров приводит к переходу на новую строку. Несколько таких вызовов подряд вставят в выводимый текст несколько пустых строк.

Общее правило таково: write и writeln могут печатать значения переменных и произвольные текстовые строки. При этом текстовые строки должны быть взяты в кавычки. Одной процедурой можно вывести несколько значений переменных и строк текста, перечислив выводимые элементы через запятую.

Ввод информации осуществляется с помощью процедуры readln(<список переменных>);

которая позволяет ввести с клавиатуры значения нескольких переменных. Например:

readln(x);

Выполнение программы приостановится, пока пользователь не введет значения переменной x и не нажмет Enter.

readln(x, y, z);

Программа ожидает ввода значений трех переменных. После каждого ввода следует жать Enter.

write('x = '); readln(x);

Курсор будет мигать не на пустой строке, а на строке содержащей приглашение вида «x = ».

readln;

В отсутствии параметров процедура просто приостанавливает выполнение программы до нажатия пользователем клвиши Enter.

Используем наши новые знания, написав программу, запрашивающую у пользователя два числа и печатающую их сумму.

program Summa; var

x, y: integer; begin

11

write('x = ');

{Вывод текста ‘x = ‘}

readln(x);

{Ввод значения переменной x пользователем программы}

write('y = ');

{Вывод текста ‘y = ‘}

readln(y);

{Ввод значения переменной y пользователем программы}

writeln('Summa = ', x+y); {Печать результата} end.

1.7. Задачи на составление арифметических выражений

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

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

В данном случае мы имеем дело с простейшей ситуацией – по сути, требуется придумать программу, состоящую из одной строки. Набор операций дан, требуется их скомбинировать так, чтобы получился требуемый результат. Решение данных задач позволит выработать правильный подход и настрой для работы в ситуации когда «неизвестно что делать».

Задания:

Используя арифметические операторы (+, -, *, /, div, mod), а также функции round(), trunc() и abs(), составьте арифметические выражения для вычисления следующих величин:

1.n-е четное число (первым считается 2, вторым 4 и т.д.)

2.n-е нечетное число (первое – 1, второе – 3 и т.д.)

3.В очереди стоят n людей, сколько человек находится между i-м и k-м в

очереди.

4.Сколько нечетных чисел на отрезке (a, b), если a и b – четные? Если a и b – нечетные? a – четное, b – нечетное?

5.Сколько полных минут и часов содержится в x секундах?

6.В доме 9 этажей, на каждом этаже одного подъезда по 4 квартиры. В каком подъезде, и на каком этаже находится n-я квартира.

7.Старинными русскими денежными единицами являются: 1 рубль – 100 копеек, 1 гривна – 10 копеек, 1 алтын – 3 копейки, 1 полушка – 0,25 копейки. Имеется А копеек. Запишите выражения для представления имеющейся суммы в рублях, гривнах, алтынах и полушках.

8.Стрелка прибора вращается с постоянной скоростью, совершая w оборотов в секунду (не обязательно стрелка прибора, может быть это волчок в

12

игре «Что? Где? Когда?» и т.п.) Угол поворота стрелки в нулевой момент времени примем за 0. Каков будет угол поворота через t секунд?

9. Вы стоите на краю дороги и от вас до ближайшего фонарного столба x метров. Расстояние между столбами y метров. На каком расстоянии от вас находится n-й столб?

10. Та же ситуация, что и в предыдущей задаче. Длина вашего шага z метров. Мимо скольких столбов вы пройдете, сделав n шагов.

11.x – вещественное число. Запишите выражение, позволяющее выделить его дробную часть.

12.x – вещественное число. Запишите выражение, которое округлит его до сотых долей (останется только два знака после запятой).

13.n – целое число. Запишите выражение, позволяющее узнать его последнюю цифру.

14.n – четырехзначное целое число. Запишите выражение, позволяющее узнать его первую цифру.

15.Оператор div в Паскале работает только для целых чисел. Составьте выражение, позволяющее получать целую часть от деления вещественных чисел.

16.Выразите операцию mod через другие арифметические операции.

17.x – вещественное число. Запишите выражение, которое даст +1, если x>0

и-1, если x<0 (при x=0 выражение будет не определено).

18.n и m – целые числа. Запишите выражение, которое давало бы 0, если n кратно m и 1, если не кратно.

19.От бревна длиной L отпиливают куски длиной x. Сколько кусков максимально удастся отпилить.

20.Бревно длиной L распилили в n местах. Какова средняя длина получившихся кусков?

21.Резиновое кольцо диаметром d разрезали в n местах. Какова средняя длина получившихся кусков?

22.На прямой через равные промежутки располагается n точек. Расстояние от первой до последней равно L. Чему равно расстояние от первой точки до i-й? А от k-й до последней? А от i-й до k-й?

23.Известно, что приближенные формулы для вычисления синуса и косинуса работают тем точнее, чем меньше значение аргумента. Поскольку синус

икосинус 2π-периодические функции (sin(x) = sin(x+2πn) , где n – любое целое число), то можно вычисление синуса от любого аргумента привести к вычислению синуса от аргумента, лежащего в диапазоне от 0 до 2π. Запишите формулы, позволяющие:

(а)привести положительный угол x в диапазон от 0 до 2π;

(б)аналогично для отрицательного угла.

24.Пусть дано трехзначное число x (например, 123). Составьте выражения, которые позволят вычислить первую, вторую и третью цифру этого числа (числа 1, 2 и 3 в примере). Для облегчения поиска решения имейте в виду, что для двузначного числа первая цифра дается выражением

d1 := x div 10;

13