Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Алгоритмы линейной структуры (продолжение). Типы данных в языке Pascal. Выражения и совместимость типов. Константы

End.

Begin

Var

Uses

End.

Begin

Var

min: integer; { интервал в минутах ]

h: integer; { количество часов }

m: integer; { количество минут }

writeln ('Введите величину временного интервала (в минутах) ‘);

write ('->');

readln (min);

h:= min div 60;

m:= min mod 60;

writeln;

writeln (min,‘ мин. — этоr,h,' час. ‘,m, ‘ мин.’);

readln;

Задание математических выражений.

 

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

 

Например, нам нужно вычислить значения следующего выражения:

 

x*5-10

 

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

 

Это выражение на языке Pascal запишется точно так же, как и приведённое выше:

 

y:=x*5-10

 

Единственное, как видим, чтобы результат вычисления куда-то записался, мы должны завести для этого отдельную переменную y, но могли бы использовать и x:

 

х:=x*5-10

 

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

 

Теперь давайте запишем такое выражение:

 

x*

Оно на языке программирования Pascal должно быть записано так:

 

y:=x*sqrt(5)-10

 

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

Выражение запишется так:

 

y:=x*sqrt(5)-10*u+5/x

 

Ниже приведён полный исходный текст такой программы, вычисляющей значение данного выражения по вводимым пользователем значениям x и u. Результат выводится в конце программы. Здесь необходимо помнить, что x не может быть равен 0, так как произойдёт деление на 0:

 

program Virajenie;

{$APPTYPE CONSOLE}

SysUtils;

x, u, y: real;

Write('Vvedite znacheniya x i u cherez probel: ');

Readln(x,u);

y:=x*sqrt(5)-10*u+5/x;

Writeln('Rezultat raven ',y:0:2);

Readln;

 

Как видим, x и u мы можем ввести в одной строчке, используя инструкции write и readln применительно для считывания сразу двух переменных, разделив два значения пробелами, и программа поймёт, что мы хотели ввести. При этом пробел заменит enter и, доходя для пробела, программа понимает, что на этом закончился ввод первого числа и, считав следующее число за пробелом, программа занесёт его уже не в переменную x, а в переменную u.

 

Ниже в таблице приведены другие, более сложные, выражения, и их запись при написании программы:

 

Выражение Запись в программе  
y:=(x*sqrt(5)-10*u+5/x)/u  
y:=(sin(x)-5*u*cos(x))/(10+u)
y:=(sin(x)-5*u*cos(x))/(sin(x)/cos(x))-sqrt(6/u)
y:=5.8*sqrt(6- sqr(u))/(sqr(x)*sqr(x)+4*u)  

 

 

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

 

 

Каждое число в компьютере имеет чёткую структуру своего представления и построения. Это нужно для того, чтобы компьютер мог хранить в памяти и при необходимости пересылать и обрабатывать числа, которые представляются в компьютере в двоичной системе счисления. Например, число 7 занимает 3 элементарных логических элемента памяти, поскольку состоит из 3-х двоичных чисел – 111. Число 6 также занимает 3 элемента – 110. Эти элементы памяти могут хранить либо двоичное число 0, либо 1.

 

Получается, что компьютеру нужно знать, сколько памяти выделить для каждой переменной при запуске программы на выполнение, ведь в процессе выполнения программы эта переменная может принимать любые значения из определённого задачей и программистом диапазона. Поэтому программисту нужно задать этот диапазон значений – определить тип для каждой переменной из расчёта требований задачи. Например, если программист объявляет переменную, которая будет содержать номер дня в году, то любое значение переменной будет принадлежать диапазону от 1 до 365. Если нужно определить расход топлива на 100 км пути, то понятно, что этот расход никак не сможет превысить значение в 40 литров.

 

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

 

Здесь мы обсудили 2 основных вида числовых типов данных – вещественный (дробный) и целочисленный. Каждый из этих видов типов данных, в свою очередь, содержит несколько представителей своего вида – вещественные типы данных и целочисленные, которые определяются исходя из диапазона значений, который могут принимать эти типы данных. Помимо этих типов данных, в языке Pascal существует ещё несколько других типов данных, классификацию которых можно увидеть на рисунке ниже:

 

 

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

 

1. Символьный тип данных

 

Используется для задания какого-либо символа. В компьютере все символы имеют свой индивидуальный номер в соответствии с международным стандартом ASC2. Переменная символьного типа может содержать один из возможных 256 символов из таблицы символов данного стандарта. Примеры программ и операции над этим типом данных мы посмотрим несколько позже на последующих уроках.

 

2. Логический тип данных

 

Этот тип данных может содержать всего 2 логических значения – ИСТИНУ или ЛОЖЬ. Этот тип данных используется для построения логических выражений и обозначения результатов логических операций.

 

3. Тип данных строка

 

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

 

4. Тип данных массив

 

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

 

С остальными типами данных мы познакомимся позднее.

 

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

Целый тип данных.

 

 

Имя типа Объём выделяемой памяти (в байтах) Формат хранения в памяти компьютера   Диапазон значений
byte   Без знака 0..255  
word   Без знака 0..65535  
shortint   Со знаком -128..127  
integer     Со знаком -32768..32767  
longint     Со знаком -2147483648.. 2147483647
Int64     Со знаком 263..263-1  

 

 

Над целым типом данных допустимы следующие операции:

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

Целочисленное деление – операции div и mod

Процедура inc(i) // i:=i+1. Прибавляет к i единицу.

 

Примеры:

Inc(10)=11

Inc(i,3)=i+3

1. Процедура dec(i) //i:=I-1. Работает в противоположности процедуре dec.

Примеры:

Dec(10)=9

Dec(i,15)=i-15

 

2. Функция odd(x)

 

Эту функцию можно применять в том случае, если x– целое положительное число. Функция определяет чётность числа х. Возвращает истину, если число нечётное.

 

Примеры:

odd(3) //true

odd(4) //false

 

3. Функция для работы с порядковым типом – ord(x). Ord(x) возвращает порядковый номер х в типе.

 

Примеры:

 

ord(2) = 2

ord(‘a’)=1

 

4. Функция Pred(x возвращает предшествующий элемент в типе.

 

Пример:

 

Pred(5)=5

 

5. Функция succ(x), наоборот, возвращает следующее за х значение элемента в типе данных

 

Пример:

 

succ(6)=7

 

 

Вещественный тип данных.

 

Имя типа Объём выделяемой памяти (в байтах) Число значащих цифр Диапазон значений
Real   11-12 2.9E-39..1.7E38
Single   7-8 1.5E-45..3.4E38
Double   15-16 5.0E-324..1.7E308
Extended   19-20 1.9E-4951..1.1E4932
Comp   19-20 -2E+63+1..2E+63-1

 

Над вещественным (дробным) типом данных допустимы следующие операции:

Математические (arctg(x) – atan(x), sin(x), cos(x) и другие) и арифметические операции

Функции преобразования вещественного типа в целый тип:

Функция Trunc(x). Результатом функции будет целое число x, при этом дробная часть числа просто отсекается

 

Примеры:

Trunk(2.15)=2

Trunc(2.99)=2

Функция округления: round(x)

 

Примеры:

 

Round(2.15)=2

Round(2.98)=3

Round(2.5)=3

Round(-2.5)=-2

Функция frac(x) возвращает дробную часть числа х.

 

Frac(2.15)=0.15

 

Функция int(x) возвращает целую часть числа х.

 

Int(2.15)=2

 

Для того, чтобы посчитать какое-либо значение переменной в программе, необходимо произвести некоторые действия, вычисляющие это значение – задать правило вычисления нового значение. Эти действия составляют выражение, в которое входят операнды, соединённые знаками операции. Операнды – это наши переменные, числа, функции или другие объекты, в зависимости от которых вычисляется значение нашего выражения.

 

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

Операции выполняются согласно их приоритетности в направлении слева направо. Круглые скобки используются, если необходимо изменить порядок действий, который определён приоритетностью операций.

 

Примеры: a+b/3 и (a+b)/3 будут выполняться по-разному: в первом случае сначала будет произведено деление переменной b на число 3, а затем уже это значение суммируется с переменной a, а во втором случае сначала посчитается сумма в скобках, а затем эта сумма разделится на 3.

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

 

Например, если х целого типа данных, то оператор x:=x/10 работать не будет, так как после деления на 10 выражение, записанное справа после знака присваивания, окажется вещественного (дробного) типа данных, у которого своё представление чисел в памяти компьютере. Так, если х=20, то 20/10 будет не 2, а 2.0.

Также если в выражении хотя бы один из операндов вещественного типа, то всё выражение окажется вещественного типа.

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

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

Вещественному типу можно присвоить значение целого типа данных

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

 

Константы.

 

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

 

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

 

Константы задаются следующим образом (фрагменты программы, выделенный жирным цветом):

 

Program Имя программы;

 

Var a: byte;

Const m=29;

<== предыдущая лекция | следующая лекция ==>
Стандартные функции | Readln(b)
Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 928; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.058 сек.