Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Pascal.doc
Скачиваний:
32
Добавлен:
12.03.2016
Размер:
3.29 Mб
Скачать
      1. Процедура вывода WriteLn. Курсор

Оператор WriteLn - читается "райт 'лайн" , переводится - ПИШИ СТРОКУ. Правила его записи и выполнения те же, что и у Write, с одним исключением - после выполнения оператора Write следующий оператор Write или WriteLn печатает свою информацию в той же строке, а после выполнения оператора WriteLn - с начала следующей. Примеры:

ПРОГРАММА

ЧТО ВИДИМ НА ЭКРАНЕ

BEGIN Write ( 'Ама' ); Write ( 'зонка' ) END.

Амазонка

BEGIN Write ( 'Ама' ); WriteLn( 'зонка' ) END.

Амазонка

BEGIN WriteLn( 'Ама' ); Write ( 'зонка' ) END.

Ама

зонка

BEGIN WriteLn( 'Ама' ); WriteLn( 'зонка' ) END.

Ама

зонка

Все вышесказанное можно более точно описать с помощью понятия курсора. Если вы когда-нибудь вводили текст в компьютер с клавиатуры, то знаете, что вводимый вами текст для вашего удобства автоматически появляется на экране монитора. Вы также, вероятно, обратили внимание на короткую светлую черточку или прямоугольное пятнышко, которое "бежит" на экране перед вводимым текстом. Так, если вы вводите с клавиатуры слово BEGIN, то:

после нажатия на клавишу B на экране вы увидите B_

после нажатия на клавишу E на экране вы увидите BE_

после нажатия на клавишу G на экране вы увидите BEG_ и т.д.

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

Так вот. Разница между процедурами Write и WriteLn в том, что после выполнения Write курсор остается в той же строке, а после выполнения WriteLn курсор прыгает в начало следующей строки, а значит и все следующие символы волей-неволей будут выводиться в следующей строке.

Оператор WriteLn можно использовать просто для перевода курсора в начало следующей строки. Для этого достаточно написать одно слово WriteLn без скобок.

Задание 3:Определите без компьютера и изобразите на листке бумаги в клетку (один символ – одна клетка), что напечатает программа:

BEGIN Write (1992); WriteLn ( ' Mы начинаем!' ); WriteLn (6*8); WriteLn; WriteLn ('Шестью шесть ' , 6*6, '. Арифметика:' , (6+4)*3)END.

Пояснение: Значок * обозначает умножение. Выполнив задание на бумаге, выполните программу на компьютере и сверьте результаты. Совпадает ли число пробелов между символами? Если не совпадает, еще раз прочтите материал, чтобы понять, почему. Измените число пробелов в разных местах последнего WriteLn. Как изменилась картинка на экране? Почему? Добавте рядом с пустым WriteLn еще один. Что изменилось? Почему?

      1. Переменные величины. Оператор присваивания

Понятие переменной величины вам известно из школьной математики. Пусть несколько лет назад ваш рост равнялся 130 см. Обозначим этот факт так: r=130. Теперь он равен 140 см, то естьr=140. Получается, что величинаr изменилась.Поэтому она называется переменной величиной. Числа 130 и 140 называютсязначениямипеременной величины r.

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

Что же мы можем делать с переменными величинами, программируя на Паскале? Прежде всего, мы можем задавать компьютеру значение той или иной переменной величины. Это мы можем сделать при помощи нового оператора, который называется оператором присваивания. Так, если мы хотим сказать, чтоаимеет значение6, то должны записатьа := 6. Как видите, вместо значка = употребляется значок:=. Он называетсязнаком присваивания, а сама записьа:=6называется оператором присваивания. Говорят, что величинеаприсваивается значение6. С момента выполнения оператораа:=6компьютер будет помнить, чтоаравно шести.

Справа от значка :=в операторе присваивания можно писать не только числа, но и переменные величины, и выражения. Выражение пока будем понимать так, как его понимает школьная математика. Например, после выполнения следующего фрагмента программы: . . . .a:=2*3+4; b:=a; y:=a+b+1. . . . компьютер будет знать, чтоaравно 10,bравно 10,yравно 21. Еще несколько примеров:

ФРАГМЕНТ ПРОГРАММЫ

ЧТО ЗАПОМНИТ КОМПЬЮТЕР

v := -2+10; h := 10*v; s := v+h

v=8 h=80 s=88

t := 0; n := 2*t+40; z := -n

t=0 n=40 z= -40

Необходимо помнить, что компьютер выполняет оператор присваивания "в уме", то есть результат его выполнения не отображается на экране. Если мы хотим видеть результат выполнения оператора присваивания, используем WriteLn. Примеры:

ФРАГМЕНТ ПРОГРАММЫ

ЧТО ВИДИМ НА ЭКРАНЕ

v := -2+10; h := 10*v; s := v+h; WriteLn (s)

88

v := -2+10; h := 10*v; s := v+h; WriteLn ( 's' )

s

v := -2+10; h := 10*v; WriteLn (v+h)

88

v := -2+10; WriteLn (v+10*v)

88

v := -2+10; h := 10*v; s := v+h; WriteLn (v, ' ' ,h, ' ' ,s)

8 80 88

v := -2+10; h := 10*v; s := v+h; WriteLn (v+1000, ' ' ,10*h, ' ' ,s)

1008 800 88

Нужно иметь в виду, что слева от знака :=может стоять только переменная величина, но не число и не выражение. Можно писатьс:=34, но нельзя писать34:=с. Можно писатьz:=f-v+990, но нельзя писатьf-v+990:=z. Правило это принято потому, что оператор присваивания сначала смотрит или вычисляет, какое значение имеет правая часть, а затем присваивает это значение переменной, стоящей в левой части. Нет смысла присваивать значение числу или выражению.

Обратите внимание на один важный момент. Когда школьник видит выражение (например, d+2d), он не обязательно его вычисляет. Он может его преобразовать или, скажем, упростить (получив3d). Компьютер же, видя выражение, сначала его, может быть, и упростит, но затем обязательно вычислит. А для этого он должен знать численные значения входящих в него величин (в нашем случае это величинаd). Таким образом, вычисляя правую часть оператора присваивания (например,y:=a+b+1), компьютер должен обязательно заранее знать, чему равны переменные, из которых эта правая часть состоит (в нашем случае этоaиb). Ответственность за это знание лежит полностью на программисте. Пусть забывчивый программист записал такой фрагмент: . . .а:=10; y:=a+b+1. . . , нигде в программе не придав b никакого значения. Естественно, при вычислении выраженияa+b+1компьютер не будет знать, чему равноb. В такой ситуации разные языки программирования поступают по-разному. Некоторые просто отказываются вычислять выражения, некоторые подставляют вместоbнуль, Паскаль же иногда может поступить довольно вредно: вместоbон подставит, что бог на душу положит, и получит сногсшибательный результат, например, игрек становится равным -8904 .

Подведем предварительные итоги обсуждения очень важного оператора присваивания:

Оператор присваивания состоит из знака присваивания := , слева от которого пишется переменная, а справа - число, переменная или выражение. При выполнении оператора присваивания компьютер "в уме" (то есть ничего не показывая на мониторе) вычисляет правую часть и присваивает вычисленное значение переменной, стоящей в левой части.

Задание 4:Какое значение будет присвоено переменнойtпосле выполнения фрагмента: k:=1+2; s:=2*k; t:=6-s?

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]