Структура программы, описание ресурсов программы; Операторы ввода/вывода

Вид материалаДокументы

Содержание


Структура программы на Паскале
Program ; uses
Const ; var
Begin end.
Тип данных – это множество допустимых значений объекта программы и совокупность операций, допустимых над этими значениями.
Таблица 1. Стандартные типы данных
Диапазон значений
Короткое целое
Операторы вводы/вывода
Write (); WriteLn
ReadLn, WriteLn
Арифметические выражения
Логическое выражение
Обозначение логической операции
Подобный материал:



Лабораторное занятие №2


Простейшие конструкции языка программирования Pascal:

Типы данных. Арифметические и логические выражения.

Операторы ввода/вывода.

Цели:
  • Знакомство со стандартными типами данных;
  • Составление арифметических и логических выражений;
  • Структура программы, описание ресурсов программы;
  • Операторы ввода/вывода.


Среда запускается с помощью файла turbo.exe из каталога BIN, расположенного внутри каталога, в котором установлена среда Turbo Pascal 7.0. Управление оболочкой осуществляется с помощью меню. Войти в меню можно с помощью мыши или клавиши F10.

Среда программирования содержит три типа окон:

Наименование окон

Вызов

Переключение между окнами

EDIT – окно редактирования.

Enter

F6

WATCH – окно просмотра переменных.

Debug/Watch

OUTPUT – окно просмотра результатов выполнения программы.

Debug/Output (Alt+F5)


Команда File/New открывает новое окно для ввода текста программы.

Для сохранения программы на диске проще всего пользоваться клавишей F2. Если программа сохраняется впервые, надо выбрать каталог и задать имя файла. Среда присвоит ему расширение .pas.


Перед каждым запуском программы сохраняйте ее на диске – ведь если она «повиснет», все ваши усилия по набору текста окажутся напрасными.

Компиляция и запуск программы выполняются нажатием клавиш Ctrl+F9, просмотр результата работы программы - нажатием клавиш Alt+F5, выход из режима просмотра – нажатием клавиши Enter, выход из среды – нажатием клавиш Alt+X.

Структура программы на Паскале


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

PROGRAM <имя программы>;

USES <Список используемых библиотек (модулей)>;

TYPE <Описание типов данных>;

LABEL <Список меток в основном блоке программы>;

CONST <Описание констант программы>;

VAR <Описание переменных>;

<Описание процедур и функций>;

BEGIN

<Последовательность операторов алгоритма>

END.

Первая часть программы – разделы описания ресурсов (Uses, Type, Const, Var, Label, procedure, function) может отсутствовать, если в программе не используются никакие объекты. Разделы описания, кроме раздела подключения модулей, который следует сразу за заголовком программы, могут встречаться в программе произвольное число раз и следовать в произвольном порядке.

Раздел операторов всегда начинается со служебного слова BEGIN и заканчивается служебным словом END.

В конце каждого раздела программы, а также оператора стоит точка с запятой «;». В конце программы всегда ставится точка.

Пример 1

Пример программы, написанной на языке Pascal.

program Pr_1;

Var a,b:integer; s:real;

begin

write('Введите два числа:');

readln(a,b);

s:=sin(a+b);

writeln('sin(a+b)= ',s:5:2));

readln

end.


Типы данных. Константы и переменные

Любая программа работает с входными, выходными и промежуточными данными. Данные характеризуются типом.

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

Основными объектами программы являются константы и переменные, которые характеризуются типом.

Все типы данных можно разделить на два класса: стандартные типы (см. Таблица 1. Стандартные типы данных) и пользовательские. Пользовательские типы (в основном, структурные) описываются разработчиком в разделе описания типов Type.

Тип данных указывается при описании объектов в разделах Const и Var, что обуславливается тем, что при компиляции* программы под ресурсы программы выделяется область оперативной памяти.

Пример 2

Const min= –5;

Ch=’a’;

Var a,b:real; flag:Boolean;

C:array[1..10]of integer;

Type Month=1..12;

Var m:month;

Таблица 1. Стандартные типы данных

Название

Обозначение

Диапазон значений

Длина

внутр. Предст.

Целое

Integer

-32 768 .. 32 767

2

Короткое целое

ShortInt

-128..127

1

Длинное целое

LongInt

-2 147 483 648 ..2 147 483 647

4

Байт

Byte

0..255

1

Слово

Word

0..65 535

2

Вещественное

Real

5*10-324 .. 1.7*10308

6

Символ

Char

a..z A..Z

1

Строка

String




1..256

Логический

Boolean

True, False

1



Операторы вводы/вывода

В программе (см. Пример 1) используются операторы (команды) ввода:

Read (<список ввода>);

ReadLn (<список ввода>);

Список ввода может содержать только переменные. В данном примере список ввода содержит две переменные a, b, перечисленные через запятую.

Операторы вывода:

Write (<список вывода>);

WriteLn (<список вывода>);

Список вывода может содержать как переменные, так и строковые константы (они заключаются в апострофы). Например, в выше приведенном примере первый оператор вывода содержит пояснительный текст на ввод данных, последний оператор вывода содержит строковую константу ‘sin(a+b)=’и переменную s.

При выводе данных можно задать формат вывода, который задает количество позиций, отданных под запись значения. При этом для вещественного числа желательно указать количество символов после запятой. В нашем примере формат вывода – s:5:2.

Операторы ReadLn, WriteLn кроме ввода/вывода переводят курсор на новую строку и следующая команда ввода/вывода выполняется с новой строки.

Ввод данных в переменную осуществляется также с помощью оператора присоединения «:=». В переменную s заносится результат вычислений программы по формуле sin(a+b).


Арифметические выражения конструируются с помощью:
  • четырех арифметических операций: +, –, *, / ;
  • операций целочисленного деления: DIV и MOD, которые возвращают неполное частное и остаток от деления соответственно;
  • а также стандартных функций (см. Таблица 2), которые имеют наивысший приоритет.

Пример 3

14 div 3=4, {Операции DIV и MOD применимы к операндам только

14 mod 3=2. целочисленного типа, и возвращают результат целого типа}

Таблица 2

Функция

Возвращаемый результат

Abs()

Модуль аргумента

Arctan()

Арктангенс (угол в радианах)

Sin()

Синус (угол в радианах)

Cos()

Косинус (угол в радианах)

Exp()

Экспонента - ex

Ln()

Натуральный логарифм числа

Sqr()

Квадрат числа

Sqrt()

Корень квадратный числа

Pi

Значение π с точностью до 20 знака

Round()

Округление до ближайшего целого числа

Trunc()

Выдает значение целого типа, отбрасывая дробную часть числа

Frac ()

Дробная часть числа

Int ()

Целая часть числа

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

Пример 4

Выражение на языке Pascal будет выражено следующим образом: z := Sqrt (Sin (Sqr (x)+1)) + Sin(x/2) / Cos(x/2).


Логические выражения применяются в различных управляющих операторах (условный оператор, операторы циклов). Они конструируются с помощью:
  • операций отношения (сравнения): =, <>, <, >, <=, >=
  • и логических операций (см. Таблица 3).
  • Результатом логического выражения является одно из значений логического типа (Boolean): true или false.

Пример 5

Логическое выражение

Результат

2<7

true

2*5 mod 3 =2

false

(17 mod 10>5) and (a<=abs(a))

true

(15 mod 3 =1) or true

true

Not (abs(sin(x))<=1)

false


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

Таблица 3

Обозначение логической операции

Наименование операции

Результат

операции

AND

И

TRUE, если одновременно все операнды выражения имеют значение TRUE.

OR

ИЛИ

TRUE, если хотя бы один операнд имеет значение TRUE.

NOT

НЕТ

Отрицание TRUE есть FALSE, и наоборот.


Пример 6

Пример программы, которая определяет, существует ли треугольник с заданными сторонами a, b, c.

Треугольник с заданными сторонами существует, если каждая из сторон не превышает суммы двух других. Сначала определим, является ли сумма какой-нибудь из трех пар сторон больше третьей стороны. Если имеется хотя бы одна такая пара (результат сравнения будет истинным - true), то такого треугольника не существует. Поэтому выводить будем отрицание переменной Rez – Not(Rez).


Program treug;

Var a,b,c: real;

Rez:Boolean;

Begin

Write (‘Введите три числа:’);

Readln(a,b,c);

Rez:= (a+b<=c) or (a+c<=b) or (b+c<=a);

Writeln(‘Треугольник существует? ’,Not(rez));

Readln;

End.


Ценные советы начинающему программисту
  1. Приступая к написанию программы, четко определите, что является ее исходными данными и что требуется получить в результате.
  2. Выбирайте тип переменных с учетом диапазона и требуемой точности представления данных.
  3. Давайте переменным имена, отражающие их назначение.
  4. Ввод с клавиатуры предваряйте приглашением, а выводимые результаты – пояснением.
  5. До запуска программы подготовьте тестовые примеры, содержащие исходные данные и ожидаемые результаты. Проверьте реакцию программы на некорректные исходные данные.
  6. При записи выражений обращайте внимание на приоритет операций.



Упражнения

Задание 1

Записать алгебраические выражения на языке программирования.





Задание 2

В переменной какого стандартного типа можно хранить число:
  1. -300
  2. 129
  3. ½
  4. 1000000
  5. -36120?

Задание 3

Определить значение арифметического выражения при e=4, a=3.
  1. e+sqrt(e)*10/2*a;
  2. (e+sqrt(e))*10/2*a;
  3. (e+sqrt(e)*10)/2*a;
  4. e+sqrt(e)*10/(2*a);

Задание 4

Определить значение логического выражения при a=true, b=c=false.
  1. a and not b or c
  2. a and (not b or c)
  3. a and not (b or c)

Задание 5

Написать программу, которая выполняет операции целочисленного деления над двумя числами A и B: A div B, A mod B. Протестировать программу на ввод следующих исходных данных:
  1. 57 div 10
  2. 57 mod 10
  3. 20 mod 21
  4. 20 div 21
  5. -3 mod 2
  6. 3 div -2
  7. 2.5 mod 5
  8. 2.5 div 5

Сделать вывод.

Задание 6

Написать программу вычисления значения функции y=sinπ/b, где b=x3. Предусмотреть запрос значения x и b, вывести результат в формате, заданном пользователем.

Задание 7

Дано трехзначное число. Определить:
  1. Сумму и произведение цифр числа;
  2. Число, образованное перестановкой цифр исходного числа в обратном порядке;
  3. Четырехзначное число, полученное переписыванием цифры единиц в качестве цифры тысяч (например, из числа 137 необходимо получить 7137).

Задание 8

Написать программу, которая выполняет перестановку значений двух переменных a и b. Формат вывода:

а=…, b=…

После перестановки:

а=…, b=…

Решить эту же задачу, не используя дополнительную переменную.

Задание 9

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

Задание 10

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

Задание 11

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

Задание 12

Составить программу, которая запрашивала бы ввод числа n, отвергала ненатуральные числа, вычисляла бы n2, n3, n4 и печатала эти значения в одной строке.


Контрольные вопросы:
  1. Из каких разделов состоит программа на Pascal?
  2. Что такое тип данных? Какие типы данных предусмотрены в Pascal?
  3. В каких случаях и где располагается в программе раздел Uses?
  4. Что представляет собой арифметическое выражение? Правила составления выражения.
  5. Что представляет собой логическое выражение? Правила составления выражения.
  6. Какое различие между операциями частного (/) и div?
  7. Какой тип результата имеют операции отношения?
  8. Какой тип результата имеет функция Sqrt?
  9. Какого типа имеет результат логического выражения?
  10. При каких значениях входных данных логическое выражение (a<15)or(3<=sqrt(9)) принимает значение true?

* Компиляция - перевод кода программы на машинный язык.