
- •Тема : 6. Программирование
- •1.Стандартные функции
- •2.Алгоритмы линейной структуры (продолжение). Типы данных в языке Pascal. Выражения и совместимость типов. Константы.
- •3.Алгоритмы с разветвляющейся структурой. Оператор выбора if.
- •4.Алгоритмы с разветвляющейся структурой (продолжение).
- •5.Алгоритмы с циклической структурой. Оператор выбора For.
- •6.Алгоритмы с циклической структурой . Операторы циклов While и Repeat. Общие черты и различия циклических операторов.
2.Алгоритмы линейной структуры (продолжение). Типы данных в языке 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 |
1 |
Без знака |
0..255
|
word |
2 |
Без знака |
0..65535
|
shortint |
1 |
Со знаком |
-128..127
|
integer
|
4 |
Со знаком |
-32768..32767
|
longint
|
4 |
Со знаком |
-2147483648.. 2147483647 |
Int64
|
8 |
Со знаком |
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 |
6 |
11-12 |
2.9E-39..1.7E38 |
Single |
4 |
7-8 |
1.5E-45..3.4E38 |
Double |
8 |
15-16 |
5.0E-324..1.7E308 |
Extended |
10 |
19-20 |
1.9E-4951..1.1E4932 |
Comp |
8 |
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;
Begin
a:=m; //a=29
End.
Как видим, мы после слова const мы записываем имя константы, ставим знак равенства и пишем значение этой константы. Важно помнить, что под константу оперативная память не выделяется, а также любые инструкции программы, которые могут изменить значение константы, вызовут ошибку на стадии компиляции нашей программы