Пятница, 21.07.2017, 21:49
ОТКРЫТАЯ ИНФОРМАТИКА
Приветствую Вас Гость | RSS
Главная Типы данных Регистрация Вход
Меню сайта

Форма входа

Поиск

Календарь
«  Июль 2017  »
ПнВтСрЧтПтСбВс
     12
3456789
10111213141516
17181920212223
24252627282930
31

Концепция типов данных в Паскале

Удачно выбранный способ организации данных упрощает алгоритм решения задачи.


  • Для чего нужны переменные?
  • Как можно различать друг от друга переменные?
  • Какие действия можно совершать с переменными?

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

Объявление переменных происходит в специальном разделе программы после слова Var.

Каждая переменная в ЯП Паскаль имеет имя, значение и тип данных.

Например:

Var

f: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 назначается перечислимый тип, которому не присвоено имени.

Значения, входящие в перечислимый тип, являются константами. Действия над ними подчиняются правилам, применимым к константам. Каждое значение в перечислимом типе занимает в памяти 2 байта, поэтому число значений этого типа не должно превышать 65 535.

Перечислимый тип — упорядоченное множество. Его элементы пронумерованы, начиная от 0 в порядке следования в описании.
В программе, в которой присутствует данное выше описание переменной Day, возможен такой фрагмент:
if Day=Sun then write('ypa! Сегодня выходной!');

Ограниченный тип задаётся как упорядоченное ограниченное подмножество некоторого порядкового типа:
<константа 1> .. <константа 2>
Порядковый номер первой константы не должен превышать номера второй константы в соответствующем базовом типе.
При исполнении программы автоматически контролируется принадлежность значений переменной ограниченного типа установленному диапазону. При выходе из диапазона исполнение программы прерывается.

Пример
Type Numbers = 1..31;
Alf= 'A'..'Z'; Var Data: Numbers; Bukva: Alf;


Структурные типы. Особенностью Паскаля является то, что в нем структуры данных рассматриваются как типы — структурные типы данных. Одна величина простого типа имеет одно значение: целое число, вещественное число, символ и пр. Одна величина структурного типа имеет множество значений; примеры — числовой массив, символьная строка и пр.
Автор Паскаля Вирт придавал большое значение разнообразию типов данных в языке программирования. В своей книге «Алгоритмы и структуры данных» он подчёркивает зависимость алгоритма решения задачи от способа организации данных в программе. Удачно выбранный способ организации данных упрощает алгоритм решения задачи.


ЭТО ИНТЕРЕСНО

  • В каком году был обнаружен первый в истории хакер?

    Хакеры существовали задолго до появления первых компьютеров. Первым их представителем можно считать англичанина Невила Маскелина, который был профессиональным фокусником, а также отлично разбирался в технике. После успешных опытов Маркони по передаче за океан сообщений посредством беспроводного телеграфа в 1901 году, одна из проводных телеграфных компаний наняла Маскелина и поставила задачу дискредитировать новую технологию. Фокусник соорудил 50-метровую радиомачту для прослушивания сигналов, которыми обмениваются суда с берегом, и обнаружил, что в системе Маркони не было никакой защиты, если не считать таковой настройку передатчика на определённую частоту. Свою находку Маскелин предъявил на публичной демонстрации беспроводного телеграфа в Королевском институте Лондона — ещё до начала показа аппарат неожиданно заработал и передал текст о том, что Маркони вешает людям лапшу на уши.

Задача. Получить реверсную запись трехзначного числа

Формулировка. Сформировать число, представляющее собой реверсную (обратную в порядке следования разрядов) запись заданного трехзначного числа. Например, для числа 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. Покажем в таблице, какие значения будут принимать переменные после выполнения соответствующих строк. При этом прочерк означает, что значение переменных на данном шаге не определено, а красным цветом выделены переменные, которые изменяются:



Компьютерный практикум:

rar Практикум  "Языки программирования" (Семакин И. Информатика и ИКТ. 11 класс. Профильный уровень)

Вопросы и задания


1. В какой парадигме программирования реализован язык Паскаль?
2. Входят ли в алфавит Паскаля русские буквы? Для чего их можно использовать?
3. Что такое идентификатор? Каковы правила задания идентификаторов?
4. Чем различаются разные типы данных из группы целочисленных типов?
5. Чем различаются разные типы данных из группы вещественных типов?
6. В чем разница между простыми и структурными типами?
7. Что такое перечислимый и ограниченный типы данных?

Наш опрос
Сколько времени вы обычно проводите за комьпютером?
Всего ответов: 950

Друзья сайта
  • Министерство образования РБ
  • Официальный портал подготовки к ГИА и ЕГЭ
  • Всероссийская олимпиада школьников
  • Федеральный портал Российского образования
  • Институт развития образования РБ

  • Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0

    Copyright MyCorp © 2017 Бесплатный конструктор сайтов - uCoz