6+
Cайт учителя информатики:
Катаева Виктора Борисовича в формате HD

9 мая!
День победы!
Урок №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) //результат 1 sizeof(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 ); {дни отпуска}
ВАЖНО!!! Я думаю, что нет смысла пока набирать эти примеры, ведь все равно мы ничего не увидим на экране. Объявление данных - это работа с памятью компьютера и подготовка его к вводу, выводу и обработке данных.