Переменная - это ячейка памяти, которая может менять свое значение в ходе выполнения программы.
Объявление переменных происходит в специальном разделе программы после слова Var.
Каждая переменная в ЯП Паскаль имеет имя, значение и тип данных.
Например:
Varf:integer;a,v,s:realДля работы с данными различного вида, требуются переменные разных типов.
Концепция типов данных является одной из центральных в любом языке программирования. С типом величины связаны три её свойства: форма внутреннего представления, множество принимаемых значений и множество допустимых операций.
Тип данных называется порядковым, если он состоит из счётного количества значений, которые можно пронумеровать. Отсюда следует, что на этом множестве значений существуют понятия «следующий» и «предыдущий». К порядковому типу данных относятся: целочисленный тип, логический, символьный, перечислимый и ограниченный.

Целочисленные типы: integer, byte, word, longint
Вещественные типы: real, single, double, extended
Логический тип: boolean
Символьный тип: char
Типы пользователя. Одна из принципиальных возможностей Паскаля состоит в том, что пользователю разрешается определять свои типы данных. Типы пользователя всегда базируются на стандартных типах данных Паскаля. Для описания типов пользователя в Паскале существуетраздел типов, начинающийся со служебного слова Type. К простым типам пользователя относятся перечисляемый и интервальный типы данных.
Перечислимый тип задаётся непосредственно перечислением (списком) всех значений, которые может принимать переменная данного типа.
Определённое таким образом имя типа затем используется для описания переменных. Например:
Type Gaz = (C, O, N, F);
Metal = (Fe, Co, Na, Cu, Zn); Var G1, G2, G3: Gaz;
Metl, Met2: Metall;
Day: (Sun,Mon,Tue,Wed,Thu,Fri,Sat);
Здесь Gaz и Metal — имена перечислимых типов, которые ставятся в соответствие переменным Gl, G2, G3 и Metl, Met2. Переменной Day назначается перечислимый тип, которому не присвоено имени.
Type Gaz = (C, O, N, F);
Metal = (Fe, Co, Na, Cu, Zn); Var G1, G2, G3: Gaz;
Metl, Met2: Metall;
Day: (Sun,Mon,Tue,Wed,Thu,Fri,Sat);
Здесь Gaz и Metal — имена перечислимых типов, которые ставятся в соответствие переменным Gl, G2, G3 и Metl, Met2. Переменной Day назначается перечислимый тип, которому не присвоено имени.
Значения, входящие в перечислимый тип, являются константами. Действия над ними подчиняются правилам, применимым к константам. Каждое значение в перечислимом типе занимает в памяти 2 байта, поэтому число значений этого типа не должно превышать 65 535.
Перечислимый тип — упорядоченное множество. Его элементы пронумерованы, начиная от 0 в порядке следования в описании.
В программе, в которой присутствует данное выше описание переменной Day, возможен такой фрагмент:
if Day=Sun then write('ypa! Сегодня выходной!');
В программе, в которой присутствует данное выше описание переменной Day, возможен такой фрагмент:
if Day=Sun then write('ypa! Сегодня выходной!');
Ограниченный тип задаётся как упорядоченное ограниченное подмножество некоторого порядкового типа:
<константа 1> .. <константа 2>
Порядковый номер первой константы не должен превышать номера второй константы в соответствующем базовом типе.
При исполнении программы автоматически контролируется принадлежность значений переменной ограниченного типа установленному диапазону. При выходе из диапазона исполнение программы прерывается.
<константа 1> .. <константа 2>
Порядковый номер первой константы не должен превышать номера второй константы в соответствующем базовом типе.
При исполнении программы автоматически контролируется принадлежность значений переменной ограниченного типа установленному диапазону. При выходе из диапазона исполнение программы прерывается.
Пример
Type Numbers = 1..31;
Alf= 'A'..'Z'; Var Data: Numbers; Bukva: Alf;
Type Numbers = 1..31;
Alf= 'A'..'Z'; Var Data: Numbers; Bukva: Alf;
Структурные типы. Особенностью Паскаля является то, что в нем структуры данных рассматриваются как типы — структурные типы данных. Одна величина простого типа имеет одно значение: целое число, вещественное число, символ и пр. Одна величина структурного типа имеет множество значений; примеры — числовой массив, символьная строка и пр.
Автор Паскаля Вирт придавал большое значение разнообразию типов данных в языке программирования. В своей книге «Алгоритмы и структуры данных» он подчёркивает зависимость алгоритма решения задачи от способа организации данных в программе. Удачно выбранный способ организации данных упрощает алгоритм решения задачи.
Задача. Получить реверсную запись трехзначного числа
Формулировка. Сформировать число, представляющее собой реверсную (обратную в порядке следования разрядов) запись заданного трехзначного числа. Например, для числа 341 таким будет 143.
Решение. Определимся с выбором переменных и их количеством. Ясно, что одна переменная нужна для записи введенного числа с клавиатуры, мы обозначим ее как n. Так как нам нужно переставить разряды числа n в некотором порядке, следует для каждого из них также предусмотреть отдельные переменные. Обозначим их как a (для разряда единиц), b (для разряда десятков) и c (для разряда сотен).
Теперь можно начать запись самого алгоритма. Будем разбирать его поэтапно:
1) Вводим число n;
2) Работаем с разрядами числа n. Как известно, последний разряд любого числа в десятичной системе счисления – это остаток от деления этого числа на 10. В терминах языка Pascal это означает, что для получения разряда единиц нам необходимо присвоить переменной aостаток от деления числа n на 10. Этому шагу соответствует следующий оператор:
a := n mod 10;
Получив разряд единиц, мы должны отбросить его, чтобы иметь возможность продолжить работу с разрядом десятков. Для этого разделим число n на 10. В терминах Pascal, опять же, это означает: присвоить переменной n результат от деления без остатка числа nна 10. Это мы сделаем с помощью оператора
n := n div 10;
3) Очевидно, что после выполнения п. 2 в переменной n будет храниться двухзначное число, состоящее из разряда сотен и разряда десятков исходного. Теперь, выполнив те же самые действия еще раз, мы получим разряд десятков исходного числа, но его уже нужно присваивать переменной b.
4) В результате в переменной n будет храниться однозначное число – разряд сотен исходного числа. Мы можем без дополнительных действий присвоить его переменной c.
5) Все полученные в переменных числа – однозначные. Теперь переменная n нам больше не нужна, и в ней нужно сформировать число-результат, в котором a будет находиться в разряде сотен, b – десятков, c – единиц. Легко понять, что для этого нам следует умножить aна 100, прибавить к полученному числу b, умноженное на 10 и c без изменения, и весь этот результат присвоить переменной c. Это можно записать так:
n := 100 * a + 10 * b + c;
6) Далее остается только вывести полученное число на экран.
Код:
1. program ReverseNum;
2.
3. var
4. n, a, b, c: word;
5.
6. begin
7. readln(n);
8. a := n mod 10;
9. n := n div 10;
10. b := n mod 10;
11. n := n div 10;
12. c := n;
13. n := 100 * a + 10 * b + c;
14. writeln(n)
15. end.
|
Проверим работу программы на произвольном варианте введенных данных. Для этого выполним ее «ручную прокрутку», проделав с введенным числом те же действия, которые должен выполнить алгоритм.
Пусть пользователем введено число 514. Покажем в таблице, какие значения будут принимать переменные после выполнения соответствующих строк. При этом прочерк означает, что значение переменных на данном шаге не определено, а красным цветом выделены переменные, которые изменяются:
Комментариев нет:
Отправить комментарий