Операторы ввода — вывода данных
Данные в языке Free Pascal Для решения задачи в любой программе выполняется обработка каких-либо данных. Данные хранятся в памяти компьютера и могут быть самых различных типов: целые и вещественные числа, символы, строки, массивы. Типы данных определяют способ хранения чисел или символов в памяти компьютера. Они задают размер ячейки, в которую будет записано то или иное значение, определяя тем самым его максимальную величину или точность задания. Участок памяти (ячейка), в котором хранится значение определённого типа, называется переменной. У переменной есть имя (идентификатор), тип и значение. Имя служит для обращения к области памяти, в которой хранится значение. Во время выполнения программы значение переменной можно изменить. Перед использованием любая переменная должна быть описана. Описание переменной на языке Free Pascal осуществляется с помощью служебного слова var: var имя_переменной: тип_переменной; Если объявляется несколько переменных одного типа, то описание выглядит следующим образом: var переменная_1, переменная_2,..., переменная_N: тип_переменных; Например: var ha: integer; //Объявлена целочисленная переменная. hb, c: real; //Объявлены две вещественные переменные. Константа — это величина, которая не изменяет своего значения в процессе выполнения программы. Описание константы имеет вид: const имя_константы = значение; Например: const h=3; //Целочисленная константа. bk= −7.521; //Вещественная константа. c= ’ abcde ’; //Символьная константа.
Символьный тип данных Данные символьного типа в памяти компьютера всегда занимают один байт. Это связано с тем, что обычно под величину символьного типа отводят столько памяти, сколько необходимо для хранения любого из 256 символов клавиатуры. Описывают символьный тип с помощью служебного слова char. Например:
var c: char; В тексте программы значения переменных и константы символьного типа должны быть заключены в апострофы: ’а’, ’b’, ’+’. Целочисленный тип данных Целочисленные типы данных могут занимать в памяти компьютера один, два, четыре или восемь байтов. Диапазоны значений данных целочисленного типа представлены в табл. 2.1. Таблица 2.1. Целочисленные типы данных Описание целочисленных переменных в программе может быть таким: var b: byte; i, j: integer; W: word; L_1, L_2: longint;
Вещественный тип данных Действия над числами, представленными в экспоненциальной форме, называют арифметикой с плавающей точкой, так как положение десятичной точки меняется в зависимости от порядка числа. Число в обычном его представлении называют числом с фиксированной точкой. Вещественное число в Pascal может занимать от четырёх до десяти байтов. Диапазоны значений вещественного типа представлены в табл. 2.2. Таблица 2.2. Вещественные типы данных Примеры описания вещественных переменных: var r1,r2: real; D: double;
Логический тип данных Данные логического типа могут принимать только два значения: истина (true) или ложь (false). В стандартном языке Pascal был определён лишь один логический тип данных — boolean. Логические типы данных, определённые в языке Free Pascal, представлены в табл. 2.3. Таблица 2.3. Логические типы данных Пример объявления логической переменной: var FL: boolean;
Операции и выражения Выражение задаёт порядок выполнения действий над данными и состоит из операндов (констант, переменных, обращений к функциям), круглых скобок и знаков операций, например a+b*sin(cos(x)). В табл. 2.4 представлены основные операции языка программирования Free Pascal. Таблица 2.4. Основные операции языка Free Pascal В сложных выражениях порядок, в котором выполняются операции, соответствует приоритету операций. В языке Free Pascal приняты следующие приоритеты:
1) not. 2) *, /, div, mod, and, shl, shr. 3) +, –, or, xor. 4) =, <>, >, <, >=, <=. Использование скобок в выражениях позволяет менять порядок вычислений. Перейдём к подробному рассмотрению основных операций языка. Арифметические операции Операции +, –, *, / относят к арифметическим операциям. Их назначение понятно и не требует дополнительных пояснений. Операции целочисленной арифметики (применяются только к целочисленным операндам): • div — целочисленное деление (возвращает целую часть частного, дробная часть отбрасывается), например, 17 div 10 = 1; • mod — остаток от деления, например, 17 mod 10 = 7. К операциям битовой арифметики относятся следующие операции: and, or, xor, not, shl, shr. В операциях битовой арифметики действия происходят над двоичным представлением целых чисел. Арифметическое И (and) Оба операнда переводятся в двоичную систему, затем над ними происходит логическое поразрядное умножение операндов по следующим правилам: Конъюнкция. 1 and 1 = 1 1 and 0 = 0 0 and 1 = 0 0 and 0 = 0
Например, если A = 14 и B = 24, то их двоичное представление — A = 0000000000001110 и B = 0000000000011000. В результате логического умножения A and B получим 0000000000001000 или 8 в десятичной системе счисления (рис. 2.1). Таким образом, A&B = 14&24 = 8. Рис. 2.1. Пример логического умножения A and B Арифметическое ИЛИ (or) Здесь оба операнда также переводятся в двоичную систему, после чего над ними происходит логическое поразрядное сложениет операндов по следующим правилам: 1 or 1 = 1 1 or 0 = 1 0 or 1 = 1 0 or 0 = 0
Например, результат логического сложения чисел A = 14 и B = 24 будет равенAorB = 30 (рис. 2.2). Рис. 2.2. Пример логического сложения A or B Арифметическое исключающее ИЛИ (xor). Оба операнда переводятся в двоичную систему, после чего над ними происходит логическая поразрядная операция xor по следующим правилам: 1 xor 1 = 0 1 xor 0 = 1 0 xor 1 = 1 0 xor 0 = 0
Дизъюнкция. Арифметическое отрицание (not). Эта операция выполняется над одним операндом. Применение операции not вызывает побитную инверсию двоичного представления числа (рис. 2.3). Рис. 2.3. Пример арифметического отрицания not A Сдвиг влево (M shl L). Двоичное представление числа M сдвигается влево на L позиций. Рассмотрим операцию 15 shl 3. Число 15 в двоичной системе имеет вид 1111. При сдвиге его на 3 позиции влево получим 1111000. В десятичной системе это двоичное число равно 120. Итак, 15 shl 3 = 120 (рис. 2.4).
Заметим, что сдвиг на один разряд влево соответствует умножению на два, на два разряда — умножению на четыре, на три — умножению на восемь. Таким образом, операция M shl L эквивалентна умножению числа M на 2 в степени L. Сдвиг вправо (M shr L). В этом случае двоичное представление числа M сдви-гается вправо на L позиций, что эквивалентно целочисленному делению числа M на 2 в степени L. Например, 15 shr 1 = 7 (рис. 2.5), 15 shr 3 = 2. Рис. 2.4. Сдвиг влево 15 shl 3 Рис. 2.5. Сдвиг вправо 15 shr 1 Операции отношения Операции отношения применяются к двум операндам и возвращают в качестве результата логическое значение. Таких операций семь: >, >=, <, <=, =, <>, in. Результат операции отношения — логическое значение true (истина) или false (ложь). Назначение операций >, >=, <, <=, =, <> понятно. Результат операции 2 >3 — ложь, 5 > 4 — истина. Результат операции x 6 y зависит от конкретных значений x и y. Поясним, как работает операция in. Первым операндом этой операции должно быть любое выражение, вторым — множество, состоящее из элементов того же типа. Результат операции true (истина), если левый операнд принадлежит множеству, указанному справа. Логические операции В языке Free Pascal определены следующие логические операции or, and, xor, not. Логические операции выполняются над логическими значениями true (истина) и false (ложь). В табл. 2.5 приведены результаты логических операций. Таблица 2.5. Логические операции Стандартные функции В языке Free Pascal определены стандартные функции над арифметическими операндами (табл. 2.6).
Операторы ввода — вывода данных Рассмотрим пример. Пусть нужно решить задачу перевода градусной меры угла в радианную. Эта задача известна из школьного курса и формулируется так: чтобы найти радианную меру какого-нибудь угла по данной градусной мере, нужно умножить число градусов на π/180, число минут на π/(180 · 60) и найденные произведения сложить.
Текст программы для решения поставленной задачи в консольном приложении будет иметь вид: program Project1; uses Classes, SysUtils; var gradus, minuta: integer; radian: real; begin write (’ gradus= ’); readln (gradus); write (’ minuta= ’); readln (minuta); radian:= gradus ∗ p i /180+minuta ∗ p i / (1 8 0 ∗ 6 0); writeln(’radian=’,radian); end.
Результаты работы нашей программы будет иметь вид: gradus=165 minuta=30 radian=2.8885199120506E+000 Ввод информации с клавиатуры осуществляется с помощью оператора read. Он может иметь один из следующих форматов: read (x1, x2,..., xn); или readln (x1, x2,..., xn); где x1, x2,..., xn — список вводимых переменных. При вводе вещественных значений целую и дробную часть числа следует разделять точкой. Когда в программе встречается оператор read, её действие приостанавливается до тех пор, пока не будут введены исходные данные. При вводе числовых значений два числа считаются разделёнными, если между ними есть хотя бы один пробел, символ табуляции или конца строки (Enter). После ввода последнего значения следует нажать Enter. Оператор readln аналогичен оператору read, разница заключается в том, что после считывания последнего в списке значения для одного оператора readln данные для следующего оператора readln будут считываться с начала новой строки. Но следует помнить, что Enter переведёт курсор на новую строку независимо от того, как именно происходит считывание данных. Для вывода информации на экран служат операторы write и writeln. В общем случае эти операторы имеют вид: write (x1, x2,..., xn); или writeln (x1, x2,..., xn); где x1, x2,..., xn представляют собой список выводимых переменных, констант, выражений. Если элемент списка — текстовая информация, её необходимо взять в кавычки. Операторы write и writeln последовательно выводят все переменные. Если используется оператор writeln, то после вывода информации курсор перемещается в новую строку. Итак, в нашем примере оператор write (’gradus=’); выводит на экран символы gradus=, которые подсказывают пользователю, что он должен ввести значение переменной gradus, а оператор readln(gradus); предназначен для ввода значения переменной gradus. Оператор writeln(’radian=’, radian); выводит на экран два значения: строку radian= и значение переменной radian. Как правило, вещественные данные выводятся в формате с плавающей точкой: #.###########E±###, где # — любая десятичная цифра от 0 до 9. Для того чтобы перейти к формату с фиксированной точкой, нужно число, расположенное до символа E (мантиссу числа), умножить на 10, возведённое в степень, значение которой указано после числа E (порядок числа). Чтобы выводить числа в формате с фиксированной точкой, необходимо использовать форматированный вывод. Для этого оператор write или writeln нужно задать следующим образом:
write (идентификатор: ширина_поля_вывода: дробная_часть); где идентификатор — это имя переменной, которая будет выводится на экран; ширина_поля_вывода — количество позиций (целая часть, точка, дробная часть), которое будет занимать значение переменной при выводе; дробная_часть — количество позиций, необходимых для дробной части числа. Оператор присваивания Оператор присваивания в языке Free Pascal состоит из двух символов: двоеточия и знака равенства. Символы:= всегда пишут слитно. Пробелы допускаются перед символом двоеточия и после символа равенства. В общем случае оператор присваивания имеет вид: имя_переменной:= значение; где значение — это выражение, переменная, константа или функция. Выполняется оператор так. Сначала вычисляется значение выражения, указанного в правой части оператора, а затем его результат записывается в область памяти (переменную), имя которой указано слева. Например, запись a:=b означает, что переменной, а присваивается значение выражения b. Типы переменной a и выражения b должны совпадать или быть совместимыми для присваивания, то есть тип, к которому принадлежит b, должен находиться в границах типа переменной а. Оператор присваивания, как и любой другой оператор в языке Free Pascal, отделяется от других точкой с запятой.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|