Урок №2 "Типы данных в языке программирования"

Скажите, Вы любите порядок в своем компьютере? Чтобы музыка была систематизирована по альбомам и исполнителям, чтобы документы были в каталогах, а фотографии имели хронологический порядок? Порядок все любят! Но больше всего его любит сам компьютер. Для хранения и обработки данных в памяти компьютера используют ячейки памяти разных типов.
    Один мой знакомый в своей книге «Дизайн и эволюция языка С++» пришёл к выводу, что система типов в языке Pascal не просто бесполезна – это смирительная рубашка, которая создаёт больше проблем, нежели решает, заставляя жертвовать чистотой дизайна ради удовлетворения причуд компилятора.
Хотите узнать, почему он так решил?

Профессор Mascot 

Переменные - это данные, которые могут меняться в процессе выполнения программы. Обращаться к переменным нужно по имени, тогда программа понимает какую переменную нужно вызвать, чтобы взять из нее или положить в нее данные для оперативного хранения.​ 
Программы оперируют с различными данными, которые могут быть простыми и структурированными. 
Простые данные - это целые и вещественные числа, символы и указатели (адреса объектов в памяти). Целые числа не имеют, а вещественные имеют дробную часть. 
​Структурированные данные - это массивы и структуры; они будут рассмотрены ниже.
Переменные в программировании должны быть разные по типу, потому что для их обработки используются разные методы. Символьные, Целые, Вещественные(дробные) величины обрабатываются по разному. И мы должны научиться их правильно систематизировать и использовать.

В языке С++ можно выделить шесть базовых типов, которые задаются следующими ключевыми словами:

  • char - символьный;

  • int - целый;

  • float - вещественный с плавающей точкой;

  • double - вещественный двойной точности;

  • bool - логический;

  • void - не имеющий значения.

Например:
int a; // объявление переменной a целого типа. 
float b; // объявление переменной b типа данных с плавающей запятой. 
double c = 14.2; // инициализация переменной типа double. 
char d = 's'; // инициализация переменной типа char. 
bool k = true; // инициализация логической переменной k.
Объект некоторого базового типа может быть модифицирован.

С этой целью используются специальные ключевые слова, называемые модификаторами. В стандарте ANSI языка Си имеются следующие модификаторы типа:

  • short (короткий);

  • long (длинный);

  • signed (знаковый);

  • unsigned (беззнаковый).

​Модификаторы записываются перед спецификаторами типа, например: unsigned char. Если после модификатора опущен спецификатор, то компилятор предполагает, что этим спецификатором является int. Таким образом, следующие строки:
long а; long int а; являются идентичными и определяют объект а как длинный целый.
Таблица иллюстрирует возможные сочетания модификаторов (unsigned, signed, short, long) со спецификаторами (char, int, float и double)

ВАЖНО!!! В языке С++ согласно стандарту, определение типов может производиться практически в любом месте программы (т.е нет строго определенного блока для определения типов данных)

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

int a; /* Определение глобальной переменной */ 
int function (int b, char c); /* Объявление функции (т.е. описание ее заголовка)*/ 
void main (void) 
{ //Тело программы 
  int d, e//Определение локальных переменных
  float f; //Определение локальной переменной 
...
}
int function (int b, char c)
 /* Определение функции и формальных параметров (по существу - локальных переменных) b и c */ 
{    //Тело функции 
   char g; //Определение локальной переменной 
...
}

В языке C++ также существуют перечислимый тип – enum, который является подмножеством целого типа, и пустой тип – void, который имеет специальное назначение. Он используется для объявления функций, которые не возвращают никакого значения, а также для объявления указателей на значение типа void. Такие указатели могут быть преобразованы к указателям на любой другой тип.
В языке С++ можно объявлять структуры и так называемые объединения.
​В языке C++ нет специальных типов для массивов и строк.

Есть некоторые негласные правила, т.е исполнения который является хорошим тоном, но делать это не обязательно: 

  • каждое объявление переменных нового типа начинается с новой строки; 

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

  • поэтому появляется правило: название переменной не должно быть слишком длинным; 

  • после объявления переменной очень желательно в комментариях пометить зачем она; 

  • необходимо разделять имена переменных пробелами. 

ВАЖНО!!! В языке Паскаль для объявления постоянных величин потребуется служебное слово CONST, а для переменных VAR​​ для пользовательских типов type, которые должны располагаться в блоке объявления данных, т.е между словами Program и BEGIN
Обычно программа на языке паскаль состоит из 4 частей:

  • Объявление данных

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

  • Обработка данных

  • Вывод результатов 

Например:​

Const g=9.8; pi=3.14;

Var a: byte; b:word; c:char; d,e:real;

ВАЖНО!!! Отличительной чертой языка Паскаль от Си является ограниченное количество типов данных у первого. Нельзя сказать, что все так плохо. Для составления программ достаточно существующих типов данных. Ведь в Паскале есть еще Int64 и QWord, однако они не являются порядковыми!

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

"Это что же получается? В языке C++ можно объявлять переменные в любом месте программы? Так и потеряться не долго!"

Профессор Mascot 

Пользовательские типы TYPE

  • Интервальный тип (диапазон) ​ 1..12 (номер месяца может принимать значения от 1 до 12) или ‘а’..’я’ (буквы русского алфавита – от а до я)

  • Перечисляемый тип color=(red, blue, green, black). 

Структурированные типы данных:
Строки (string) – это последовательность символов кодовой таблицы персонального компьютера. Количество символов в строке может изменяться от 0 до 255.

Массивы (array). В структурных типах выделяют регулярный тип (array). Название регулярный тип (или ряды) массивы получили за то, что в них объединены однотипные элементы, упорядоченные (урегулированные) по индексам, определяющим положение каждого элемента в массиве.
Множества (set) – это структурированный тип данных, представляющий собой набор взаимосвязанных по какому-либо признаку или группе признаков объектов, которые можно рассматривать как единое целое. Каждый объект в множестве называется элементом множества. Все элементы множества должны принадлежать одному из скалярных типов, кроме вещественного.
Записи (record). Для записи комбинации объектов разных типов в Паскале применяется комбинированный тип данных – запись (record). Например, товар на складе описывается следующими величинами: наименование, количество, цена, наличие сертификата качества и т.д. В этом примере наименование – величина типа string, количество – integer, цена – real, наличие сертификата – boolean.

​Файлы. В Паскале для этих целей предусмотрены специальные объекты – файлы (file). Файлом называется совокупность данных, записанная во внешней памяти под определенным именем.

ПРИМЕРЫ

Оператор объявления переменных имеет следующий синтаксис: тип имя1[,имя2[,...]];
​Примеры: 
int a, b, c; 
double x, y; 
char ch; 
Переменные в языке С++ могут быть инициализированы при их определении: int a = 25, h = 6; char g = 'Q', k = 'm'; float r = 1.89; long double n = r*123; 
Оператор объявления переменных с инициализацией имеет следующий синтаксис: тип имя1[=значение1][, имя2[=значение2][,...]];
Пример: 
int a=26, b=032, c=0x1A;
 double x=2.5e2,y=0x1.ffe-3;
 char ch=’Z’;

Константы в С++
В языке С++присутствует три вида констант:
  1. целочисленные, 
  2. вещественные, 
  3. символьные. 

В языке СИ можно также создавать переменные, имеющие константное значение (их значение нельзя изменить). Объявление таких «переменных» имеет следующий синтаксис:
const тип имя1=значение1[,имя2=значение2[,...]]; 
Пример:
  const unsigned int x=80, y=25; 
  const double pi=3.1415; 

Оператор создания типов данных в С++. Оператор typedef используется для создания пользовательских типов данных, синтаксис его использования:typedef имя_старого_типа имя_нового_типа; 

 

"Радует, что типов данных огромное количество!"

Профессор Mascot 

​Пример:

typedef unsigned int word; 

Функция для определения размера типа, или переменной какого-либо типа: sizeof, она возвращает количество занимаемых байт в памяти. Пример:   

sizeof(int) //вернет 4

sizeof(char) //результат 1sizeof(double) // вернет 8
 

Для языка программирования Паскаль в имени переменной или константы можно использовать буквы латинского алфавита и цифры (первым символом должна быть буква);
Инструкция объявления констант выглядит так: 
ИмяКонстанты = значение константы;
Пример:
const
min=1; {минимальное значение}
var
Инструкция объявления переменных выглядит так: 
ИмяПеременной: тип;
k1: integer; {количество тетрадей}
k2: byte; {количество карандашей}
c1: real; {цена одной тетради}
st: string; {Предложение}
fam: string[30]; {Фамилия}
da1: boolean; {Согласие}
sim: char; {Символ}
fa: text; {Текстовый файл}
Инструкция объявления переменных интервального типа помещается в двух разделах type, var и выглядит так:
type
<имя типа>=(<константа1> ..<константа2>);
var

<идентификатор, …>: <имя типа>;
Пример:
type
days=1..31; {дни месяца}
var
rabotday: days; {рабочие дни}
vihodday: days; {выходные дни}
Инструкция объявления переменных перечисляемого типа помещается в двух разделах type, var и выглядит так:
type
<имя типа>=(<значении 1, значение 2, значение n>);
var

<идентификатор, …>: <имя типа>;
Пример:
type
days=(monday, muesday, wednesday, thursday, friday, saturday, sunday) ;
{дни }
var
day: days;
{дни недели}
season: (may, april, juin ); {дни отпуска}

ВАЖНО!!! Я думаю, что нет смысла пока набирать эти примеры, ведь все равно мы ничего не увидим на экране. Объявление данных - это работа с памятью компьютера и подготовка его к вводу, выводу и обработке данных.

© 2014-2019 «ИНФОРМАТИКА».

665413, Россия, Иркутская область,

г. Черемхово, ул. Лермонтова, д.16, тел. (39546) 5-08-18
Муниципальная общеобразовательная организация ​" ​Лицей г. Черемхово "

  • Белая иконка facebook
  • Иконка Twitter с прозрачным фоном
  • белая иконка googleplus