Языковое программирование

Автор работы: Пользователь скрыл имя, 01 Мая 2014 в 10:17, лекция

Краткое описание

Основные типы переменных, используемые в Паскале:
Integer – целый тип. Переменные этого типа могут хранить целые числа в диапазоне от −2147483648 до 2147483647 (это −231 и 231−1).
Real – вещественный тип. Так называемые числа с плавающей точкой. Может быть обычной десятичной дробью (например, 1234.543), но может также содержать порядок – символ «е» и какое-либо число за ним, например, 1.2345е3. Такая запись означает, что число 1.2345 нужно умножить на 103. Максимальное количество цифр в числе 15, порядок может быть в диапазоне от −308 до 308.
Char – символьный тип. Значением этой переменной может быть одиночный символ – буква латинского алфавита (большие и малые буквы здесь различаются), цифра или какой-либо из специальных символов.
String – строка. Значения — наборы символов.
Boolean – логический тип. Переменная может принимать два значения: true (истина) и false (ложь). Такие значения могут быть, например, у логических выражений наподобие «x>2». Если Истинно, что x>2, то выражение принимает значение true иначе значение false.

Прикрепленные файлы: 1 файл

Языковое программирование.docx

— 212.81 Кб (Скачать документ)

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

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

Допустите другую ошибку, записав неправильно имя процедуры вывода (например, writln вместо writeln), снова прочитайте текст сообщения об ошибке.

Попытайтесь воспользоваться переменной, предварительно ее не описав.

Опишите переменную типа integer, попытайтесь присвоить ей нецелое значение.

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

Арифметические операторы

4. Имеется девятиэтажный  дом, на каждую лестничную площадку  выходит 4 квартиры. Создайте программу, которая по номеру квартиры  определяет номер подъезда и  этаж.

5. Если дано трехзначное  число, например 123 его можно представить  в виде 3+2*10+1*10*10. Воспользовавшись  этой информацией, создайте программу, которая, получая от пользователя  трехзначное число, будет определять  из каких цифр оно состоит, и выводить их через пробел (например, 1_2_3).

6. Напишите программу, запрашивающую  у пользователя два момента  времени (количество часов, минут  и секунд) и сообщающую число  секунд, прошедшее между этими  двумя моментами.

7. Напишите программу, запрашивающую  у пользователя время и сообщающую  угол поворота минутной и часовой  стрелки в градусах и радианах (помните, что тригонометрические  функции в Паскале работают  с радианами).

Отличие среды Borland Pascal

Если в качестве среды разработки вы используете Borland Pascal, то следует иметь в виду следующие особенности:

  • После запуска среды необходимо создать новый файл (меню File/New).
  • Сохранение и загрузка файла производится с помощью клавиш F2 и F3.
  • Копирование и вставка производятся сочетаниями клавиш Ctrl — Ins и Shift — Ins (вместо привычных Ctrl — C, Ctrl — V).
  • После того как программа чего-то напечатает, она завершится, и вы не увидите никакого результата, пока не нажмете Alt — F5. Чтобы не делать это каждый раз, рекомендуется помещать в конец программы вызов процедуры readln:

...  

readln;

end.


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

2.1. Переменая логического  типа

Переменные логического (или булевского) типа могут принимать два значения – true (истина) или false(ложь). Описываются они следующим образом:

var    

b1, b2: boolean;


 

Допустимы присваивания вида:

b1:=true;  

b2:=false;  

b1:=b2;


 

2.2. Операторы сравнения

Имеется 6 операторов сравнения: >, <, =, <=, >=, <>. С их помощью записываются простые логические выражения, принимающие значения true или false. Эти значения можно присваивать логическим переменным.

Пусть, например, описаны переменные:

var    

b: boolean;    

x: real;


 

Допустимы следующие присваивания:

b:=2>5;  

b:=x>2;  

b:=(sqr(x)-1)/2 > sqrt(x);

и т.п.


 

Первый из приведенных операторов запишет в переменную b значение false. Результат работы остальных зависит от значения переменной x.

Операторы сравнения применимы и к самим логическим переменным и выражениям. При этом считается, чтоtrue больше чем false. Так, например, возможны выражения:

b:= (2>5)<(6>2);   {в переменную b будет записано значение true}  

b:= b>false;   {значение переменной b не изменится}  

b:= b=true;   {снова переменная b останется такой, какая была}


 

Иногда, когда требуется проверить равенство сразу трех величин, студенты ошибочно пишут условие вида

x = y = z


 

Паскаль интерпретирует это выражение следующим образом. Первое равенство x = y даст значение true илиfalse и уже это значение будет сравниваться со значением переменной z. Если z не является переменной логического типа, то среда выдаст сообщение об ошибке. Действительно, нет смысла проверять равенство логического значения и, например, числового. Чтобы проверить равенство сразу трех чисел необходимо использовать логические операторы

2.3. Логические  операторы

Из логических переменных и выражений можно строить более сложные (составные) логические выражения с помощью логических операторов: not (отрицание, логическое НЕ), or (логическое ИЛИ) и and (логическое И).

Выражение not A (где A – логическая переменная или выражение) истинно тогда, когда выражение A ложно, и ложно, когда A истинно.

Выражение A and B истинно, когда одновременно истинны выражения A и B. Если хотя бы одно из этих выражения (A или B) ложно, то A and B ложно.

Выражение A or B истинно, когда любое из выражений A или B истинно и ложно, когда оба исходных выражения ложны.

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

A

not A

true

false

false

true


A

B

A and B

true

true

true

true

false

false

false

true

false

flase

false

false


A

B

A or B

true

true

true

true

false

true

false

true

true

flase

false

false


 

Составное логическое выражение может содержать сколько угодно логических операторов. При этом в первую очередь выполняются все операторы сравнения (<, >, =, <=, >=, <>), затем логические отрицания (not), затем логическое И (and) и в последнюю очередь логическое ИЛИ (or). Выражения могут содержать скобки, которые влияют на приоритетность выполнения операций.

Пример:

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

(x=y) and (y=z)


 

2.4. Задачи на  составление логических выражений

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

1) Переменная x попадает в диапазон от –2 до 1 ( ). Ниже данный диапазон показан на числовой оси:

 
Рис. 1.

2) Переменная x лежит за пределами заданного диапазона, как показано на числовой оси:

 
Рис. 2.

3) Переменная x лежит в одной из показанных на числовой оси областей:

 
Рис. 3.

4) Запишите условия, истинные, когда точка с координатами (x, y) лежит точно на прямой, показанной на рисунке 4а, выше этой прямой (рис. 4б) и ниже этой прямой (рис. 4в):

 
Рис. 4.

Указание: Чтобы записать уравнение прямой в виде  , проходящей через точки   и  , необходимо решить систему уравнений:

В результате приходим к уравнению прямой:  .

5) Запишите условие, истинное, когда точка с координатами (x, y) лежит в заштрихованных областях (рис. 5).

6) Укажите на плоскости XY область, где истинными являются  следующие логические выражения:

(abs(x — y) < 1) and (abs(x) + abs(y) > 1)

(abs(x) < 1) or (abs(y) < 1)

x2 + y2 > (x + y)2

7) Пусть A и B логические выражения, принимающие значения true или false. Какие из приведенных пар составных логических выражений эквивалентны, то есть при любых значениях A и B значения выражений слева и справа совпадают?

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

а) 
б) 
в) 
г) 
д) 
е) 
ж) 
з) 
и) 
к) 
л)

not (A and B) 
not (A and B) 
not (A or B) 
not (A or B) 
(A and B) or ((not A) and (not B)) 
A <> B 
A = B = true 
A = B = true 
A = false 
(not (A or B)) and A 
(A or B) and (not B)

и 
и 
и 
и 
и 
и 
и 
и 
и 
и 
и

A or B 
(not A) or (not B) 
A and B 
(not A) and (not B) 
A = B 
((not A) and B) or (A and (not B)) 
A and B 
A = B 
false 
(A or B) and (not B) and (not A) 
A


 

8) Зарплата выдается 5-го  числа каждого месяца. Составьте  логическое выражение, которое истинно, если на k-е число m-го месяца зарплата уже была выдана 10 раз с начала года.

2.5. Условный оператор

Условный оператор позволяет проверить некоторое условие и в зависимости от результатов проверки выполнить то или иное действие.

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

Условный оператор имеет следующую структуру:

?

if <условие – любое  логическое выражение> then  

begin    

<Операторы 1>  

end else  

begin    

<Операторы 2>  

end;


 

if, then, else – зарезервированные слова (если, то, иначе).

Если условие имеет значение true, то выполняется 1-я группа операторов, иначе вторая группа. Если при выполнении (или не выполнении) условия требуется выполнить всего один оператор, то слова begin и end можно опустить.

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

1

2

3

4

5

6

7

8

9

var  

x, y: integer;

begin  

readln(x, y);  

if x<y then    

writeln(x)  

else    

writeln(y);

end.


 

В примере видим как раз случай, когда слов begin и end нет. Иногда начинающим рекомендуют не думать о количестве операторов, а ставить begin и end всегда. Это позволит избежать частых ошибок из-за их отсутствия.

Обратите внимание на следующую особенность: перед словом else не ставится точка с запятой. Так в примере нет точки с запятой после оператора writeln(x).

Есть известный программистский анекдот: программист ставит на ночь перед кроватью два стакана: один с водой (если проснется и захочет пить) и один пустой (если проснется, но пить не захочет). Чтобы избежать подобного абсурда существует укороченная форма условного оператора:

if <условие> then  

begin    

<операторы>  

end;


 

При выполнении условия <условие> выполнятся операторы <операторы>. Если же условие не выполняется, данный оператор не сделает ничего.

2.6. Оформление  текста программ

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

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

Простейшее, но при этом очень важное стилистическое правило описывает то, как надо располагать текст программы. Существует несколько вариантов соглашений о правильном расположении текста. В данном пособии мы будем следовать Object Pascal Style Guide — стандарту, выработанному разработчиками языка Delphi. Итак, следует действовать следующим образом:

1) Слово var пишется на отдельной строчке. Следующие за ним описания переменных начинаются с новой строки. При этом у всех описаний делается отступ слева в два пробела. Переменные разных типов описываются на разных строках.

Информация о работе Языковое программирование