Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
inf2.doc
Скачиваний:
18
Добавлен:
15.04.2015
Размер:
603.14 Кб
Скачать

Типы данных

Величины, представленные в программе, могут не изменять своего значения и выступать в качестве констант. Изменяющие в процессе выполнения программы свое значение величины - это переменные. В Turbo Pascal любая константа и переменная характеризуется своим типом. Под типом понимают множество значений, которые может принимать величина, совокупность допустимых с ними операций, а также формат представления значений в памяти компьютера. Паскаль является типизированным или статическим языком. Это означает, что тип переменой определяется в программе при ее описании и не может быть изменен в дальнейшем. Такой подход делает программы на Паскале поддающимися автоматической проверке на корректность при компиляции, а это позволяет создавать надежные программы.

Turbo Pascal имеет развитую систему типов, основу которой составляют стандартные для языка простые типы данных:

  • целые типы;

  • вещественные типы;

  • логический тип;

  • символьный тип.

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

Целые типы

Эта группа типов объединяет множества целых чисел в различных диапазонах и представлена в табл.1.

Таблица 1

Тип

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

Размер памяти, байт

byte

0 … 255

1

word

0 … 65535

2

shortint

-128 … 127

1

integer

-32768 … 32767

2

longint

-2147483648 … 2147483647

4

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

Работая с целыми, следует помнить о типе получаемого результата. Только операция обычного деления / дает результат вещественного типа, а остальные - целого. К целым числам применимы также специфические операции, результатом выполнения которых становятся целые числа. Это операции целочисленного деления div и вычисления остатка от такого деления mod. Например, 5 div 2 = 2, 5 mod 2 = 1, 4 div 5 = 0 .

Максимальные значения в диапазонах integer и longint представлены в языке константами MaxInt и MaxLongInt соответственно. А вообще максимальное или минимальное значения, доступные для переменной целого типа, можно установить с помощью функций High и Low, использующих в качестве аргумента имя переменной. А функции Lo и Hi возвращают младший и старший байт целого числа, которые можно поменять местами функцией Swap.

Вещественные типы

Эта группа типов объединяет множество вещественных чисел в различных диапазонах. Вещественные типы представлены в табл.2.

Таблица 2

Тип

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

Значащих цифр

Размер памяти, байт

real

11 - 12

6

single

7 - 8

4

double

15 - 16

8

extended

19 - 20

10

comp

19 - 20

8

Лишь один тип real доступен всегда, прочие типы требуют использования арифметического сопроцессора. Для подключения последнего в работу следует в начале программы указать директиву {$N+}. Особняком стоит тип comp, т.к. его значениями являются только целые числа.

Математические функции

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

Таблица 3

Функция

Математическое действие

Примечание

Abs(x)

Абсолютная величина x

Тип результата совпадает с типом x

Sqr(x)

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

- “ -

Sqrt(x)

Квадратный корень из x

Результат вещественный

Sin(x)

Синус числа x

x - угол в радианах

Cos(x)

Косинус числа x

Exp(x)

Экспонента

е = 2,71828…

Ln(x)

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

x не должен быть отрицательным

Arctan(x)

Арктангенс числа x

в радианах

Random(n)

Возвращает случайное целое

из диапазона от 0 до n-1

Random

Возвращает случайное число

вещественное 0  x <1

Pi

Число 

 = 3,14159…

Для возведения в степень некоторого основания используют известное математическое соотношение .

Для преобразования вещественных чисел в целые используют функции округления round(x) и усечения до целой части числа trunc(x). Например, round(4.7) = 5, а trunc(4.7) = 4.

Для задания значения переменной в языке существует оператор присваивание, который обозначается как := .

Математические процедуры

Для увеличения значения целой переменной k на n единиц используют процедуру inc(k,n). При n = 1 параметр n опускают - inc(k). Процедура dec(k,n) уменьшает значение целой величины k на n единиц (при n = 1 dec(k)). Например, если k = 3, то вызов процедуры inc(k, 2) сделает k = 5.

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

Структура программы на языке Turbo Pascal

Текст программы принято открывать заголовком, начинающимся служебным словом PROGRAM. Он характеризует назначение программы и может отсутствовать, т.к. компилятор воспринимает его как комментарий. Вслед за ним располагаются разделы программы, посвященные описанию (объявлению) объектов программы: меток, констант, типов, переменных, процедур и функций. Каждый из разделов начинается со служебного слова, соответственно: Label, Const, Type, Var, Procedure, Function. Количество разделов зависит от условий (потребностей) решаемой задачи, разделы могут повторяться и следовать в порядке, который вытекает из неписаного закона языка: «Сначала опиши, потом используй». Продолжает текст программы основная ее часть - выполняемая часть программы, тело программы, раздел операторов. Она открывается служебным словом BEGIN, а завершается словом END. с точкой. Все набранное после указанного слова компилятором игнорируется. На рисунке представлена описанная выше структура программы.

Заголовок программы

Разделы объявлений

Тело программы

Значение константы может быть выражено через ранее определенные константы, например: Const e = 2.71828; cv = 2*e; . С этой же целью можно использовать следующие функции: Abs, Chr, Hi, High, Length, Lo, Low, Odd, Ord, Pi, Pred, Ptr, Round, SizeOf, Succ, Swap, Trunc.

Описание однотипных переменных производят обычно через запятую, например так: Var x,y,q : real; i,j,k : word; .

Ввод и вывод исходных данных

Ввод/вывод данных производят с помощью стандартных процедур. Вывод организуют процедурами Write и Writeln, которые в программе записываются следующим образом:

write(Список элементов вывода);

writeln(Список элементов вывода); .

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

writeln(‘Результаты вычислений: ’,x,’ ‘,sin(x)/x,’ ‘,k div 5);

Оператор writeln; (без параметров) переводит курсор в начало новой строки.

Ввод данных с клавиатуры производят с помощью процедур Read и Readln, которые записываются в следующем формате:

read (Список элементов ввода);

readln (Список элементов ввода); .

Процедуры отличаются способом ввода. Список должен содержать имена объектов простого типа (кроме перечисляемого и логического), которым будет производиться присваивание соответствующего значения с клавиатуры. Значения последовательно вводимых переменных разделяют одним пробелом или более. Оператор процедуры Readln требует обязательного нажатия клавиши ввода (Enter) после ввода значений всех указанных в списке переменных. Лишние значения, набранные с клавиатуры, игнорируются. Это позволяет безошибочно вводить значения символьным переменным, для которых пробел является одним из допустимых значений. Оператор без параметра Readln; требует обязательного нажатия Enter. Этим обстоятельством можно воспользоваться для организации необходимых пауз в работе с программой. При этом не следует забывать о подсказке, которой надо предварять каждый оператор ввода, например:

writeln(‘Для продолжения работы нажмите ENTER’);

readln;

writeln(‘Введите через пробел два целых и два вещественных числа’);

readln(i,k,x,s); .

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

После ознакомления с этими минимальными сведениями о языке мы готовы решать простейшие вычислительные задачи. Рассмотрим конкретный пример.

Задание. Проанализировать поведение функции s(t) на отрезке [0, 1].

при k=0,4.

Для упрощения выражения введем обозначения , q =2t и составим программу вычисления значения функции для конкретного значения аргумента t, вводимого с клавиатуры.

program formula;

const k = 0.4; p = 2*pi;

var s,t,d,q: real;

begin

writeln(‘Введите значение аргумента t’);

readln(t);

d:=sqrt((1-k*k)/2/k);

q:=p*t;

s:=0.5*(q-d*sin(q/d))*exp(-q/sqrt(1+k));

writeln(‘При t = ’,t:3:1,’ функция имеет значение ‘,s:7:5);

writeln(‘Для возвращения в программу нажмите ENTER’);

readln

end.

Результаты расчета: t = 0.1 s(t) = 0.01136

t = 0.3 s(t) = 0.09118

t = 0.5 s(t) = 0.10769

t = 0.7 s(t) = 0.06481

t = 0.9 s(t) = 0.02674

Вывод: функция имеет максимум в окрестности t = 0,4.

Контрольные вопросы.

1. Какие из приведенных наборов символов не являются идентификаторами языка: _alf, 1q, @d2, gamma, appa, k_21, r2$q, вd5, b41?

2. Чем характеризуется тип данных?

3. Чем отличается объявление констант от объявления переменных?

4. Запишите выражение для .

5. Что больше maxint или 10000?

6. Что дает типизация переменных?

7. Сколько и каких разделов может быть в программе?

8. Назовите операторы ввода/вывода и поясните действия с ними.

9. Как можно образовывать константы?

10. Что можно предпринять для работы с большими целыми числами?

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