Символьные типы данных — для студента

Язык Си / Типы данных в языке Си

 

  • Тип данных определяет множество значений, набор операций, которые можно применять к таким значениям и способ реализации хранения значений и выполнения операций.
  • Процесс проверки и накладывания ограничений на типы используемых данных называется контролем типов или типизацией программных данных. Различают следующие виды типизации:
  • Статическая типизация — контроль типов осуществляется при компиляции.
  • Динамическая типизация — контроль типов осуществляется во время выполнения.

Язык Си поддерживает статическую типизацию, и типы всех используемых в программе данных должны быть указаны перед ее компиляцией. Различают простые, составные и прочие типы данных.

alt

Узнай стоимость своей работы

Бесплатная оценка заказа!

Оценим за полчаса!

Простые данные

Простые данные можно разделить на

  • целочисленные,
  • вещественные,
  • символьные
  • логические.

Составные (сложные) данные

  • Массив — индексированный набор элементов одного типа.
  • Строковый тип — массив, хранящий строку символов.
  • Структура — набор различных элементов (полей записи), хранимый как единое целое и предусматривающий доступ к отдельным полям структуры.

Другие типы данных

  • Указатель — хранит адрес в памяти компьютера, указывающий на какую-либо информацию, как правило — указатель на переменную.

 
Программа, написанная на языке Си, оперирует с данными различных типов. Все данные имеют имя и тип. Обращение к данным в программе осуществляется по их именам (идентификаторам).

Идентификатор — это последовательность, содержащая не более 32 символов, среди которых могут быть любые буквы латинского алфавита a — z, A — Z, цифры 0 — 9 и знак подчеркивания (_). Первый символ идентификатора не должен быть цифрой.

Несмотря на то, что допускается имя, имеющее до 32 символов, определяющее значение имеют только первые 8 символов. Помимо имени, все данные имеют тип. Указание типа необходимо для того, чтобы было известно, сколько места в оперативной памяти будет занимать данный объект.

Компилятор языка Си придерживается строгого соответствия прописных и строчных букв в именах идентификаторов и лексем.

Верно Неверно
int a = 2, b;
b = a+3;

Int a=2;  // правильно int
INT a=2;

alt

Узнай стоимость своей работы

Бесплатная оценка заказа!
Читайте также:  Восстание богдана хмельницкого - для студента

Оценим за полчаса!

int a = 2, b;
b = A + 3; // идентификатор А не объявлен

int a = 2;
b = a + 3; // идентификатор b не объявлен

Целочисленные данные

Целочисленные данные могут быть представлены в знаковой и беззнаковой форме.

Беззнаковые целые числа представляются в виде последовательности битов в диапазоне от 0 до 2n-1, где n-количество занимаемых битов.

Знаковые целые числа представляются в диапазоне -2n-1…+2n-1-1. При этом старший бит данного отводится под знак числа (0 соответствует положительному числу, 1 – отрицательному).

Основные типы и размеры целочисленных данных:

Количество бит Беззнаковый тип Знаковый тип
8 unsigned char
0…255
char
-128…127
16 unsigned short
0…65535
short
-32768…32767
32 unsigned int int
64 unsigned long int long int

Вещественные данные

Вещественный тип предназначен для представления действительных чисел. Вещественные числа представляются в разрядной сетке машины в нормированной форме.

Нормированная форма числа предполагает наличие одной значащей цифры (не 0) до разделения целой и дробной части. Такое представление умножается на основание системы счисления в соответствующей степени. Например, число 12345,678 в нормированной форме можно представить как

  1. 12345,678 = 1,2345678·104
  2. Число 0,009876 в нормированной форме можно представить как
  3. 0,009876 = 9,876·10-3

В двоичной системе счисления значащий разряд, стоящий перед разделителем целой и дробной части, может быть равен  только 1. В случае если число нельзя представить в нормированной форме (например, число 0), значащий разряд перед разделителем целой и дробной части равен 0.

Значащие разряды числа, стоящие в нормированной форме после разделителя целой и дробной части, называются мантиссой числа.

В общем случае вещественное число в разрядной сетке вычислительной машины можно представить в виде 4 полей.Символьные типы данных - Для студента

  • знак — бит, определяющий знак вещественного числа (0 для положительных чисел, 1 — для отрицательных).
  • степень — определяет степень 2, на которую требуется умножить число в нормированной форме. Поскольку степень 2 для числа в нормированной форме может быть как положительной, так и отрицательной, нулевой степени 2 в представлении вещественного числа соответствует величина сдвига, которая определяется как
    2n-1,
    где n — количество разрядов, отводимых для представления степени числа.
  • целое — бит, который для нормированных чисел всегда равен 1, поэтому в некоторых представлениях типов этот бит опущен и принимается равным 1.
  • мантисса — значащие разряды представления числа, стоящие после разделителя целой и дробной части в нормированной форме.

 
Различают три основных типа представления вещественных чисел в языке Си:

Тип Обозна-
чение в Си
Кол-во бит Биты степени Мантисса Сдвиг
простое float 32 30…23 22…0 127
двойной точности double 64 62…52 51…0 1023
двойной расширен- ной точности long double 80 78…64 62…0 16383

Как видно из таблицы, бит целое у типов float и double отсутствует. При этом диапазон представления вещественного числа состоит из двух диапазонов, расположенных симметрично относительно нуля. Например, диапазон представления чисел типа float можно представить в виде:
Символьные типы данных - Для студента

  • Пример: представить число -178,125 в 32-разрядной сетке (тип float).
  • Для представления числа в двоичной системе счисления преобразуем отдельно целую и дробную части:
  • 17810 = 101100102.
  • 0,12510 = 0,0012.
  • Тогда
  • 178,12510 = 10110010,0012=1,0110010001·2111
  • Для преобразования в нормированную форму осуществляется сдвиг на 7 разрядов влево).
  • Для определения степени числа применяем сдвиг:
  • 0111111+00000111 = 10000110.
  • Таким образом, число -178,125 представится в разрядной сетке как

Символьные типы данных - Для студента

Символьный тип

Символьный тип хранит код символа и используется для отображения символов в различных кодировках. Символьные данные задаются в кодах и по сути представляют собой целочисленные значения. Для хранения кодов символов в языке Си используется тип char.
Подробнее о кодировке символов

Логический тип

Логический тип применяется в логических операциях, используется при алгоритмических проверках условий и в циклах и имеет два значения:

  • истина — true
  • ложь — — false

В программе должно быть дано объявление всех используемых данных с указанием их имени и типа. Описание данных должно предшествовать их использованию в программе. Пример объявления объектов

int n;    // Переменная n целого типаdouble a; // Переменная a вещественного типа двойной точности

Назад: Язык Си

Источник: https://prog-cpp.ru/c-data-types/

В помощь студенту и школьнику

Горбачев Л.И. Основы программирования в среде Turbo Pascal.

[НАЗАД]    [ДАЛЕЕ]

Символьные типы данных - Для студента

Типы данных

   Каждый элемент данных относится к одному из конечного множества типов, допустимых для конкретной версии языка программирования. Тип — это множество значений, которые могут принимать объекты программы, и совокупность операций, допустимых над этими значениями.

   Понятие тип связано с фиксированным набором данных. Переменная относится к определенному типу, если ей можно присвоить данные, принадлежащие к набору, определяющему этот тип. В языке Турбо-Паскаль необходимо явное определение типа каждой из переменных в программе.

   Например, значения переменной, равные 1 или 10 относятся к целочисленному типу, их можно складывать, умножать и выполнять другие арифметические операции. В языке Паскаль для описания типа в общем случае используется зарезервированное слово Type.Формат: type имя_типа = значение_типа;

   Все типы данных разделяются на две группы: скалярные (простые) и структурированные (составные). Скалярные типы в свою очередь подразделяются на стандартные и пользовательские. Стандартные типы данных предлагаются пользователям разработчиками системы Turbo Pascal.

   К стандартным скалярным типам относятся целочисленные, вещественные, символьные, булевские типы данных и указатели.

   Данные целочисленных типов могут быть представлены как в десятичной, так и в шестнадцатеричной системах. Если число представлено в шестнадцатеричной системе, перед ним без пробела записывается знак «$». Диапазон изменений шестнадцатеричных чисел от $0000 до $FFFF.

   В десятичной системе числа с фиксированной точкой записываются по обычным правилам арифметики. Целая часть от дробной отделяется десятичной точкой. Если десятичная точка отсутствует, число считается целым. Перед числом может находиться знак «+» или «-«. Если знак отсутствует, по умолчанию число считается положительным.

   Например, $1F — шестнадцатеричное число; 25 — целое десятичное число; -1.9 — отрицательное вещественное число; 13.1 — вещественное число;

   Вещественные десятичные числа в форме с плавающей точкой представлены в экспоненциальном виде: mE+p, где m — мантисса (целое или дробное число с десятичной точкой), «E» — означает «десять в степени», p — порядок (целое число).Пример: 5.18E+02 — 5.18 * 10^2 = 51810E-03 = 10 * 10^-3 = 0.01

   Пользовательские типы — перечисляемый и интервальный — разрабатываются самим программистом.

   Структурированные типы в своей основе имеют один или несколько скалярных типов данных. К структурированным типам относятся строки, массивы, множества, записи, файлы и данные процедурного типа и типа object.

   Набор основных типов переменных Турбо-Паскаля можно представить в виде следующей схемы:

5.1. Скалярные типы данных

   5.1.1. Целочисленный тип

   Целочисленные типы данных представляют собой значения, которые могут использоваться в арифметических выражениях и занимать память от 1 до 4 байт.

Тип Наименование Допустимые значения Занимаемая память
shortint короткое целое -128..127 1 байт
byte байт 0..255 1 байт
integer целое -32768..32767 2 байта
word слово 0..65535 2 байта
longint длинное целое -2*10^9..2*10^9 4 байта

Пример: var X1, X2 : byte;Y1 : word;K, L : integer;

   5.1.2. Вещественный тип

   Вещественные типы данных представляют собой вещественные значения, которые используются в арифметических выражениях. Допускается представление вещественных значений как в виде с плавающей, так и с фиксированной точкой.

Тип Наименование Допустимые значения Число значащих цифр Занимаемая память
real вещественный 10^-38-10^38 11-12 6 байт
single с одинарной точностью 10^-38-10^38 7-8 4 байта
double с двойной точностью 10^-308-10^308 15-16 8 байт
extended с повышенной точностью 10^-4931-10^4931 19-20 10 байт
comp сложный(длиное целое) -9*10^18-9*10^18 19-20 8 байт

   Эффективное использование типом single, double, extended, comp возможно только при наличии сопроцессора 8087 при включенной директиве компилятора {$N+}. По умолчанию она находится в выключенном состоянии — {$N-}.Пример: var Summa : single;

Root1, Root2 : double;

   5.1.3. Символьный тип

   Символьный тип данных char обозначает множество символов кода ASCII (американский стандартный код для обмена информацией). Один символ требует для своего представления 8 бит = 1 байту.

Символы пронумерованы от 0 до 127 в основной кодовой таблице и с 128 по 255 — в расширенной.

Тип Диапазон Требуемая память
Char Кодовая таблица ПЭВМ 1 байт

Пример: var Ch : char;

Let, Znak : char;

   В программе значения переменных и констант типа char должны быть заключены в апострофы. Например, 'A' означает букву A, ' ' — пробел, ';' — точку с запятой и т.д.

   Для типа данных char существуют следующие стандартные функции:

Функция Тип результата Результат выполнения функции
Ord(X) integer Номер ASCII — символа X
Chr(N) char ASCII — символ с номером

Источник: http://allpasc.narod.ru/pascalbook/glav4.htm

Тема 2.10 Тип данных запись — Учебный ресурс

        Например, анкетные данные о
студенте вуза могут быть представлены в виде информационной структуры:

Символьные типы данных - Для студента

        В Паскале эта информация
может храниться в одной переменной типа record (запись).

Задать
тип можно следующим образом:

  • type < имя _ типа >=record    : тип;     : тип;     ………………….     : тип 
  • end;

где record – служебное
слово, а и — правильные идентификаторы языка
Паскаль.

        Описание анкеты студента в
Паскале будет выглядеть так:Пример фрагмента
программы описания записи Паскаля

Type anketa=record    fio: string[45];     pol: char;     dat_r: string[8];     adres: string[50];     curs: 1..5;     grupp: string[3];
end;

        Поля записи Паскаля могут
иметь любой тип, в частности сами могут быть записями. Такая возможность
используется в том случае, когда требуется представить многоуровневое дерево.

Поля        После того, как
определен тип записи Паскаля, можно определять переменную этого типа.
Переменная определяется путем задания ее идентификатора и указания типа.

var  student: anketa; student1: anketa;

        Теперь нам нужно узнать,
как правильно получать доступ к элементам записи Паскаля.        Элементы записи называются полями, а обращение к ним производится
через использование их имен – идентификаторов полей.

Практически, поля записи
обрабатываются точно так же, как и любые другие переменные. Но в отличие от
обычной переменной имена полей должны предваряться ссылкой на идентификатор
записи Паскаля и отделяться от него точкой.

        Такая запись называется
уточняющий идентификатор:

Пример

        Чтобы обратиться к полю
curs переменной student, необходимо указать следующее составное имя:student.curs :=3;        Для того чтобы обратиться к
полю pol в записи student1,  , необходимо указать следующее составное имя:student.pol :='ж';

        Использование полей записи Паскаля в выражениях и
условиях идентично использованию обычных переменных.

Пример решения задачи с использованием записи

Пример 1
        Рассмотрим для
начала простейший пример заполнения записи Паскаля и вывода ее на экран.       Необходимо
заполнить сведения о студенте (Ф.И.О., дата рождения, адрес, курс и группа), а
затем вывести эти сведения на экран.

Читайте также:  Сергей Иосифович Гессен, русский философ-неокантианец - история и биография

не более 45 символов
   dat_r: string[8];  // дата рождения  — строка длиной не более 8 символов

   adres: string[50]; // адрес — строка 

не более 50 символов
   curs: 1..5;          // курс — тип диапазон (интервальный), принимает значения от 1 до 5

   grupp: string[3] // группа — строка 

не более 3 символов
end; 
var student: anketa; // переменная типа запись
begin 

   writeln (‘введите сведения о студенте’);     {обратите внимание, ввод каждого поля осуществляется
отдельно} 
   writeln (‘введите фамилию, имя и отчество’); 
   readln (student.fio); 
   writeln (‘введите дату рождения’); 
   readln (student.dat_r); 
   writeln (‘введите адрес’); 
   readln(student.adres); 
   writeln (‘введите курс’); 
   readln(student.curs); 
   writeln (‘введите группу’); 
   readln (student.grupp); 

   writeln (‘ввод закончен’); 

   writeln ;                                              {обратите внимание, что вывод записи осуществляется по
полям} 
   writeln (‘фамилия студента: ’, student . fio ); 
   writeln(‘ дата рождения : ’, student.dat_r); 
   writeln(‘ адрес : ’, student.adres); 
   writeln(‘ курс : ’, student.curs); 

   writeln(‘ группа : ’, student.grupp); 

end.

Пример 2

        Необходимо иметь
сведения о многих студентах одного факультета. Следовательно, необходимо
организовать массив записей Паскаля. А затем из общего списка вывести фамилии
студентов 2-го курса.

program primer 2 ; 
type anketa=record 
   fio: string[45]; 
   dat_r: string[8]; 
   adres: string[50]; 
   curs: 1..5; 
   grupp: string[3]
end; 

var student: array [1..100] of anketa; // переменная student — массив записей

   I: integer; 
begin 

  1.    {последовательно вводим каждую запись} 
  2.    {просматриваем массив записей и выбираем только студентов
    2-го курса } 
  3. end.

   for I:=1 to 100 do 
   begin 
      writeln (‘введите сведения о’, I , ‘-м
студенте’); 
      writeln (‘введите фамилию, имя и
отчество’); 
      readln (student[I].fio); 
      writeln (‘введите дату рождения’); 
      readln (student[I].dat_r); 
      writeln (‘введите адрес’); 
      readln(student[I].adres); 
      writeln (‘введите курс’); 
      readln(student[I].curs); 
      writeln (‘введите группу’); 
      readln (student[I].grupp); 
   end; 
   writeln (‘ввод закончен’); 
   writeln ; 
   for I:=1 to 100 do 
      if student[I].curs=2 then 
         writeln(‘ фамилия
студента : ’, student[I].fio); 

Оператор присоединения

        Чтобы сделать обращение к полям записи более коротким используется оператор присоединения with, который в общем виде выглядит так:

with  do ;
  •         Следует обратить внимание
    на то, что после служебного слова do может стоять только один оператор, но он
    может быть составным (любая последовательность операторов, заключенная в операторные
    скобки begin end ).
  •         Например, фрагмент из
    предыдущей программы с использованием оператора присоединения будет выглядеть
    так:
  • Пример фрагмента
    программы c записью и префиксом Паскаля
  • for i:=1 to 100 do 
       withstudent[i] do 
       begin 
          writeln (‘введите сведения о’, I , ‘-м студенте’); 
          writeln (‘введите фамилию, имя и отчество’); 
          readln (fio); 
          writeln (‘введите дату рождения’); 
          readln (dat_r); 
          writeln (‘введите адрес’); 
          readln(adres); 
          writeln (‘введите
    курс’); 
          readln(curs); 
          writeln (‘введите группу’); 
          readln (grupp); 
       end;
  • Пример 3

       Необходимо иметь сведения о многих студентах одного факультета. Следовательно, необходимо организовать массив записей Паскаля. А затем из общего списка вывести фамилии студентов 2-го курса. Использовать оператор присоединения.

program primer 2 ; type anketa=record    fio: string[45];    dat_r: string[8];    adres: string[50];    curs: 1..5;    grupp: string[3]end; 

var student: array [1..100] of anketa; // переменная student — массив записей

   I: integer; begin 

   {последовательно вводим каждую запись} 

for i:=1 to 100 do    withstudent[ido    begin       writeln (‘введите сведения о’, I , ‘-м студенте’);       writeln (‘введите фамилию, имя и отчество’);       readln (fio);       writeln (‘введите дату рождения’);       readln (dat_r);       writeln (‘введите адрес’);       readln(adres);       writeln (‘введите курс’);       readln(curs);       writeln (‘введите группу’);       readln (grupp);    end;   writeln (‘ввод закончен’);    

   {просматриваем массив записей и выбираем только студентов 2-го курса } 

   for I:=1 to 100 do      withstudent[ido        begin           if curs=2 then          writeln(‘ фамилия студента : ’, fio); end.

Задания        Необходимо заполнить сведения о студенте (Ф.И.О., дата рождения, адрес, курс и группа).        Вывести на экран: 

  1. студентов с одного курса 
  2. студентов одного года рождения 
  3. студентов женского пола из одной группы

Перевести студентов 3 курса на 4.

Источник: https://www.sites.google.com/site/elektronnyjucebnikmitrofanova/tema-2-azyk-programmirovania-paskal/dopolnitelnoe-izucenie/tema-2-10-tip-dannyh-zapis

Урок 16. Простые типы данных. Символьный тип

Урок из серии: «Язык программирования Паскаль»

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

Из урока 6 мы уже знаем, что  все типы данных  языка  Паскаль можно разделить на простые типы и структурированные (составные). Величины, которые относятся к простым типам данных, не содержат составных частей.

Из простых типов данных мы уже изучили целые типы и логический тип. Это еще не весь список. Давайте продолжим изучение.

На этом уроке мы определим понятие порядкового типа и остановимся на символьном типе данных,  рассмотрим несколько примеров обработки данных символьного типа.

К простым типам данных кроме целых типов и логического типа относятся:

  • символьный;
  • ограниченный;
  • перечисляемый;
  • вещественные типы.

Все простые типы данных, кроме вещественных, называются порядковыми.

В математике порядковым числом называется номер элемента при перечислении. Под порядковым типом понимают тип данных, областью значений которых является упорядоченное счетное множество. Каждому элементу такого множества соответствует некоторое порядковое число, являющееся как раз его номером при перечислении.

В любом порядковом типе для каждого значения, кроме первого, существует  предшествующее значение.

В языке Паскаль существуют стандартные функции, которые позволяют их определять:

Имя и параметры функции Действие
Ord(x) Возвращает порядковый номер значения перечисляемого типа. Для целых x возвращает само значение n, для символов char возвращает их код, а для элементов перечислимого типа — их номер (нумерация начинается с нуля).
Pred(x) Возвращает предыдущее значение перечисляемого типа
Succ(x) Возвращает следующее значение перечисляемого типа

Понятие порядкового типа уже встречалось при изучении цикла с параметром for … next и оператора выбора case.

Только значения этих типов могут  фигурировать в качестве выражения-переключателя в операторе case. Переменная-параметр цикла for также должна иметь перечислимый тип.

Мы уже изучили целые типы и логический тип. Сегодня остановимся на символьном типе данных.

Символьный тип данных

Идентификатор типа Допустимые значения Размер выделяемой памяти
Char Множество символов кодовой таблицы ASCII. Каждому символу приписывается целое число в диапазоне от 0 до 255. 1 байт

Пример описания величины символьного типа:

var
letter, symbol, ch: char;
  • В программе значения для переменных типа Char должны быть заключены в апострофы: ch := ‘*’; a := ‘3’; letter := ‘G’.
  • Кроме того, имеется возможность задавать значения указанием непосредственного числового значения ASCII-кода:
  • kd:= #65 {символ ‘A’};  s:= #10 {клавиша }.

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

Над данными символьного типа определены операции сравнения:   =, , , =, вырабатывающие результат логического типа.  Операция сравнения осуществляется следующим образом: из двух символов меньше тот, который встречается в таблице ASCII раньше.

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

Функции для данных символьного типа

Для данных символьного типа определены следующие стандартные функции:

Функция Назначение
chr(x) Преобразует выражение x  типа byte в символ и возвращает значение символа
ord(ch) Преобразует символ ch  в его код типа byte и возвращает значение кода.
pred(ch) Возвращает предыдущий символ.
succ(ch) Возвращает следующий символ.
  1. Примеры использования функций:
  2. ord(‘:’) = 58
  3. ord(‘A’) = 65
  4. chr(128) = Б
  5. pred(‘Б’) = A
  6. succ(‘Г’) = Д

Пример 1. Определение кода по символу и символа по коду.

Program primer_1;
var
c: char;
code: integer;
begin
writeln('Введите символ: ');
readln(c);
code := Ord(c);
writeln('Код символа ',c,' равен ',code);
writeln('Введите код символа: ');
readln(code);
c := Chr(code);
writeln('Символ с кодом ',code,' — это ',c);
end.

Пример 2. Напишите программу для вывода на экран всех символов таблица ASCII.

program primer_2;
var
ch: char;
i: byte;
begin
for i := 0 to 255 do begin
if (i mod 5) = 0 then writeln;
write (i:3,' — ', chr(i), '; ')
end;
end.
  • Пример 3. Вывести в одну строку: ABBCCC…ZZ…Z
  • Переменные: i — переменная цикла; определяет, какая буква будет выводиться;
  • k — количество повторений буквы;
  • j — переменная цикла, счетчик количества уже выведенных букв.
program primer_3;
var
i: char;
k, j: integer;
begin k:=1;
for i := 'A' to 'Z' do
begin
for j:=1 to k do write(i);
k:=k+1;
    end;   writeln; end.

Внешний цикл определяет, какую букву выводим на печать, внутренний —  сколько раз будет печататься буква. После вывода всех букв переходим в начало следующей строки.

На следующем уроке определим перечисляемый тип данных и тип-диапазон.

До встречи в следующем уроке!

Источник: https://gospodaretsva.com/urok-16-prostye-tipy-dannyx-simvolnyj-tip.html

Символьные типы данных — Visual Basic

  • 07/20/2015
  • Время чтения: 2 мин

Visual Basic предоставляет символьные типы данных для работы с печатными и отображаемыми символами.Visual Basic provides character data types to deal with printable and displayable characters. Несмотря на то, что они работают с символами Юникода, Char содержит один символ, а String содержит неопределенное число символов.While they both deal with Unicode characters, Char holds a single character whereas String contains an indefinite number of characters.

Для таблицы, отображающей параллельное сравнение типов данных Visual Basic, см. в разделе типы данных.For a table that displays a side-by-side comparison of the Visual Basic data types, see Data Types.

Тип charChar Type

Char тип данных — это один двухбайтовый (16-разрядный) символ Юникода.The Char data type is a single two-byte (16-bit) Unicode character. Если переменная всегда хранит ровно один символ, объявите ее как Char.If a variable always stores exactly one character, declare it as Char. Пример.For example:

' Initialize the prefix variable to the character 'a'.
Dim prefix As Char = «a»

Каждое возможное значение в Char или String переменной — кодовая точкаили код символа в кодировке Юникода.Each possible value in a Char or String variable is a code point, or character code, in the Unicode character set.

Символы Юникода включают в себя основную кодировку ASCII, различные буквы, цифры, символы валют, дроби, диакритические знаки, математические и технические символы.

Unicode characters include the basic ASCII character set, various other alphabet letters, accents, currency symbols, fractions, diacritics, and mathematical and technical symbols.

Примечание

Набор символов Юникода резервирует кодовые точки D800 до DFFF (от 55296 до 55551 десятичного) для пар символов-заместителей, для которых требуются 2 16-разрядные значения для представления одной кодовой точки.

The Unicode character set reserves the code points D800 through DFFF (55296 through 55551 decimal) for surrogate pairs, which require two 16-bit values to represent a single code point. Переменная Char не может содержать суррогатную пару, а String использует две позиции для хранения такой пары.

A Char variable cannot hold a surrogate pair, and a String uses two positions to hold such a pair.

Дополнительные сведения см. в разделе тип данных char.For more information, see Char Data Type.

Тип строкиString Type

String тип данных — это последовательность из нуля или более двухбайтовых (16-разрядных) символов Юникода.The String data type is a sequence of zero or more two-byte (16-bit) Unicode characters. Если переменная может содержать неопределенное число символов, объявите ее как String.If a variable can contain an indefinite number of characters, declare it as String. Пример.For example:

' Initialize the name variable to «Monday».
Dim name As String = «Monday»

Дополнительные сведения см. в разделе тип данных String.For more information, see String Data Type.

См. такжеSee also

Отправить отзыв о следующем:

Этот продукт

Вы также можете оставить отзыв непосредственно на GitHub .

Источник: https://docs.microsoft.com/ru-ru/dotnet/visual-basic/programming-guide/language-features/data-types/character-data-types

Типы данных

Информация, поступающая в компьютер, состоит из определенного множества данных, относящихся к какой-то проблеме, — это именно те данные, которые относятся к конкретной задаче и из которых требуется получить желаемый ответ.

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

В обработке данных на компьютере классификация играет даже боRльшую роль.

Любая константа, переменная, выражение или функция относятся к некоторому типу. Тип данных определяет диапазон допустимых значений и операций, которые могут быть применены к этим значениям.

Кроме того, тип данных задает формат представления объектов в памяти компьютера, ведь в конце концов любые данные будут представлены в виде последовательности двоичных цифр (нулей и единиц). Тип данных указывает, каким образом следует интерпретировать эту информацию.

Тип любой величины может быть установлен при ее описании, а в некоторых языках может выводиться компилятором по ее виду (Fortran, Basic).

Например, если переменная имеет целочисленный тип данных, то таким образом определен диапазон значений, которые могут быть сохранены в этой переменной (целые числа) и определены операции, которые могут быть применены к этой переменной (арифметические, логические, возможность ввода и вывода значений этой переменной). Каждый язык программирования поддерживает один или несколько типов данных. Наличие в языке программирования типизации означает жесткую связку операций и типов объектов, над которыми их можно выполнять. Не все языки обладают таким свойством. Например, в языке С практически любые операции можно выполнять над любыми данными (например, складывать два символа или число с логическим значением, но в большинстве случаев такие операции бессмысленны и соответствуют ошибке в программе, на которую компилятор указать не сможет).

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

Любые данные могут быть отнесены к одному из двух типов: простому (основному), форма представления которого определяется архитектурой ЭВМ, или сложному, конструируемому пользователем для решения конкретных задач. Данные простого типа — это символы, числа и т.п. элементы, дальнейшее дробление которых не имеет смысла. Из таких элементарных данных формируются структуры (сложные типы) данных.

  • Принято различать следующие типы данных:
  • · Простые.
  • • Числовые типы.
  • § Целочисленные.
  • § Вещественные.
  • • Символьный тип.
  • • Логический тип.
  • • Перечислимый тип.
  • ◊ Множество.
  • ◊ Указатель.
  • · Составные.
  • ◊ Массив.
  • • Строковый тип.
  • ◊ Запись.
  • ◊ Последовательность.
  • Рассмотрим перечисленные типы данных подробнее.
  • Числовые типы

.Значениями переменных таких типов являются числа. К ним могут применяться обычные арифметические операции, операции сравнения (в результате получается логическое значение). Принципиально различны в компьютерном представлении целые и вещественные типы.

Целочисленные типы данных делятся, в свою очередь, на знаковые и беззнаковые.

Целочисленные со знаком могут принимать как положительные, так и отрицательные значения, а беззнаковые — только неотрицательные значения.

Диапазон значений при этом определяется количеством разрядов, отводимых на представление конкретного типа в памяти компьютера (см. “Представление чисел”).

Вещественные типы бывают: с фиксированной точкой, то есть хранятся знак и цифры целой и дробной частей (в настоящее время в языках программирования реализуются редко), и с плавающей точкой, то есть число приводится к виду m х 2e, где m — мантисса, а e — порядок числа, причем 1/2 m 1, e — целое число. В данном случае хранятся знак, число e и двоичные цифры дробной части числа m, которые умещаются в отведенную для этого память. Говорят, что вещественные числа представимы с некоторой точностью.

Символьный тип. Элемент этого типа хранит один символ. При этом могут использоваться различные кодировки, которые определяют, какому коду (двоичному числу) какой символ (знак) соответствует. К значениям этого типа могут применяться операции сравнения (в результате получается логическое значение). Символы считаются упорядоченными согласно своим кодам (номерам в кодовой таблице).

Читайте также:  Принципат августа 30 г. до н.э.- 14 г. н. э. - для студента

Логический тип. Данные этого типа имеют два значения: истина (true) и ложь (false). К ним могут применяться логические операции. Используется в условных выражениях, операторах ветвления и циклах. В некоторых языках, например С, является подтипом числового типа, при этом ложь = 0, истина = 1 (или истинным считается любое значение, отличное от нуля).

Перечислимый тип. Отражает самый прямолинейный способ описания простого типа — перечисление всех значений, относящихся к этому типу. Каждая константа такого типа получает свой порядковый номер, что позволяет реализовать ряд простых операций над этим типом, таких, как получить следующее по порядку значение данного типа.

Множество как тип данных в основном совпадает с обычным математическим понятием множества. Допустимы стандартные операции с множествами и проверка на принадлежность элемента множеству.

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

Указатель (тип данных). Если описанные выше типы данных представляли какие-либо объекты реального мира, то указатели представляют объекты компьютерного мира, то есть являются исключительно компьютерными терминами. Переменная-указатель хранит адрес в памяти компьютера, указывающий на какую-либо информацию, как правило — на другую переменную.

Составные типы

Составные типы формируются на основе комбинаций простых типов.

Массив является индексированным набором элементов одного типа, простого или составного (см. “Операции с массивами”). Одномерный массив предназначен для компьютерной реализации такой структуры, как вектор, двухмерный массив — таблицы.

Строковый тип. Хранит строку символов. Вообще говоря, может рассматриваться как массив символов, но иногда рассматривается в качестве простого типа. Часто используется для хранения фамилий людей, названий предметов и т.п. К элементам этого типа может применяться операция конкатенации (сложения) строк.

Обычно реализованы также операции сравнения над строками, в том числе операции “”, которые интерпретируются как сравнение строк согласно алфавитному порядку (алфавитом здесь является набор символов соответствующей кодовой таблицы).

Во многих языках реализованы и специальные операции над строками: поиск заданного символа (подстроки), вставка символа, удаление символа, замена символа.

Запись. Наиболее общий метод получения составных типов из простых заключается в объединении элементов произвольных типов. Причем сами эти элементы могут быть, в свою очередь, составными.

Так, человек описывается с помощью нескольких различных характеристик, таких, как имя, фамилия, дата рождения, пол, и т.д. Записью (в языке С — структурой) называется набор различных элементов (полей записи), хранимый как единое целое. При этом возможен доступ к отдельным полям записи.

К полю записи применимы те же операции, что и к базовому типу, к которому это поле относится (тип каждого поля указывается при описании записи).

Последовательность. Данный тип можно рассматривать как массив бесконечного размера (память для него может выделяться в процессе выполнения программы по мере роста последовательности).

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

В языке Pascal подобному типу соответствуют файловые типы данных.

Преимущества от использования типов данных

Типы данных защищают программы по крайней мере от следующих ошибок:

1. Некорректное присваивание. Пусть переменная объявлена как имеющая числовой тип. Тогда попытка присвоить ей символьное или какое-либо другое значение приведет к ошибке еще на этапе компиляции. Такого рода ошибки трудно отследить обычными средствами.

2. Некорректная операция. Типизация позволяет избежать попыток применения выражений вида “Hello world” + 1. Поскольку, как уже говорилось, все переменные в памяти хранятся как наборы битов, то при отсутствии типов подобная операция была выполнима (и могла дать результат вроде “Hello worle”!). С использованием типов такие ошибки отсекаются опять же на этапе компиляции.

3. Некорректная передача параметров в процедуры и функции (см. “Подпрограммы”).

Если функция “синус” ожидает, что ей будет передан числовой аргумент, то передача ей в качестве параметра строки “Hello world” может иметь непредсказуемые последствия.

При помощи контроля типов такие ошибки также отсекаются на этапе компиляции или приводят к ошибкам выполнения программы, если значения параметра вводятся с клавиатуры или файла.

Кроме того, типы данных позволяют программисту абстрагироваться от машинного представления информации в виде наборов нулей и единиц и строить программы, основываясь на знакомых понятиях, таких, как числа, множества, последовательности, и т.п. В конечном итоге это приводит к получению более надежных программ.

Методические программы

  1. При изучении данной темы самое главное — разделить следующие понятия:
  2. данные — тип данных — абстрактная структура данных — структура данных
  3. Типом данных

переменной называют множество значений, которые может принимать эта переменная, и множество операций, которые применимы к этим значениям.

Абстрактная структура данных (см.

Структуры данных”) — это некоторая математическая модель данных (см. выше), включающая различные операции, определенные в рамках этой модели. Для реализации абстрактной структуры в том или ином языке программирования используются структуры, которые представляют собой набор переменных, возможно различных типов данных, объединенных определенным образом.

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

Примеры различных структур данных, реализующих абстрактную структуру граф, приведены в статье “Табличные модели” 2.

Изучение конкретных типов данных производится в процессе рассмотрения определенного языка программирования в курсе информатики.

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

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

Изучение особенностей представления целых чисел (а именно этот тип данных встречается в учебных задачах по программированию чаще всего) полезно проиллюстрировать следующим примером.

Пример. С помощью программы на языке Borland Pascal вычислим значение n! (факториал числа n). Версия языка в данном случае указана потому, что ею определяется количество разрядов, отводимых на переменные определенного типа. В данном случае на переменные типа integer отводится 16 бит, что определяет диапазон значений этого знакового типа от –32 768 до 32 767.

  • var
  • begin readln(n);
  • a := 1;
  • for i := 2 to n do a := a * i;
  • writeln(a)
  • end.

a,i,n: integer;

При запуске этой программы для n = 7, 8 и 10 мы получим 5040, –25 216 и 24 320 соответственно. Первое полученное значение является верным, второе (отрицательное) может натолкнуть программиста на мысль, что в результате арифметических действий произошел выход за границу диапазона значений типа, а вот третье число само по себе может показаться верным, хотя, конечно, это не так.

На этом примере можно показать, что правильный алгоритм решения задачи при неправильном выборе типов данных может привести к абсурдному результату. И при разработке программы одним из важных этапов является оценка возможных значений (в том числе промежуточных) используемых переменных и выбор подходящих типов данных.

Следует подчеркнуть, что для целого типа выход за диапазон значений не приводит к прерыванию работы процессора (компьютер выдает неверные результаты), а для вещественных чисел (переполнение порядка) — это аварийная ситуация (floating point error), которая не пройдет незамеченной.

Источник: https://xn—-7sbbfb7a7aej.xn--p1ai/informatika_kabinet/programm/programm_17.html

Типы данных

Содержание

Типом данных в программировании называют совокупность двух множеств: множество значений и множество операций, которые можно применять к ним. Например, к типу данных целых неотрицательных чисел, состоящего из конечного множества натуральных чисел, можно применить операции сложения (+), умножения (*), целочисленного деления (/), нахождения остатка (%) и вычитания (−).

Язык программирования, как правило, имеет набор примитивных типов данных — типы, предоставляемые языком программирования как базовая встроенная единица. В C++ такие типы создатель1 языка называет фундаментальными типами2. Фундаментальными типами в C++ считаются:

  • логический (bool);
  • символьный (напр., char);
  • целый (напр., int);
  • с плавающей точкой (напр., float);
  • перечисления (определяется программистом);
  • void.

Поверх перечисленных строятся следующие типы:

  • указательные (напр., int*);
  • массивы (напр., char[]);
  • ссылочные (напр., double&);
  • другие структуры.

Перейдём к понятию литерала (напр., 1, 2.4F, 25e-4, ‘a’ и др.): литерал — запись в исходном коде программы, представляющаясобой фиксированное значение. Другими словами, литерал — это просто отображение объекта (значение) какого-либо типа в коде программы. В C++ есть возможность записи целочисленных значений, значений с плавающей точкой, символьных, булевых, строковых.

Литерал целого типа можно записать в:

  • 10-й системе счисления. Например, 1205;
  • 8-й системе счисления в формате 0 + число. Например, 0142;
  • 16-й системе счисления в формате 0x + число. Например, 0x2F.

24, 030, 0x18 — это всё записи одного и того же числа в разных системах счисления.
Для записи чисел с плавающей точкой используют запись через точку: 0.1, .5, 4. — либо в

экспоненциальной записи — 25e-100. Пробелов в такой записи быть не должно.

Имя, с которым мы можем связать записанные литералами значения, называют переменной. Переменная — это поименованная либо адресуемая иным способом область памяти, адрес которой можно использовать для доступа к данным.

Эти данные записываются, переписываются и стираются в памяти определённым образом во время выполнения программы. Переменная позволяет в любой момент времени получить доступ к данным и при необходимости изменить их.

Данные, которые можно получить по имени переменной, называют значением переменной.
Для того, чтобы использовать в программе переменную, её обязательно нужно объявить, а при необходимости можно определить (= инициализировать).

Объявление переменной в тексте программы обязательно содержит 2 части: базовый тип и декларатор. Спецификатор и инициализатор являются необязательными частями:

const int example = 3;
// здесь const — спецификатор
// int — базовый тип
// example — имя переменной
// = 3 — инициализатор.

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

Имя переменной следует выбирать таким, чтобы всегда было легко догадаться о том, что она хранит, например, «monthPayment». В конспекте и на практиках мы будем использовать для правил записи переменных нотацию CamelCase.

Имя переменной не может совпадать с зарезервированными в языке словами, примеры таких слов: if, while, function, goto, switch и др.

Декларатор кроме имени переменной может содержать дополнительные символы:

  • * — указатель; перед именем;
  • *const — константный указатель; перед именем;
  • & — ссылка; перед именем;
  • [] — массив; после имени;
  • () — функция; после имени.

Инициализатор позволяет определить для переменной её значение сразу после объявления. Инициализатор начинается с литерала равенства (=) и далее происходит процесс задания значения переменной. Вообще говоря, знак равенства в C++ обозначает операцию присваивания; с её помощью можно задавать и изменять значение переменной. Для разных типов он может быть разным.

Спецификатор задаёт дополнительные атрибуты, отличные от типа. Приведённый в примере спецификатор const позволяет запретить последующее изменение значение переменной. Такие неизменяемые переменные называют константными или константой.

Объявить константу без инициализации не получится по логичным причинам:

const int EMPTY_CONST; // ошибка, не инициализована константная переменная
const int EXAMPLE = 2; // константа со значением 2
EXAMPLE = 3; // ошибка, попытка присвоить значение константной переменной

Для именования констант принято использовать только прописные буквы, разделяя слова символом нижнего подчёркивания.

Разбирая каждый тип, читатель не должен забывать об определении типа данных.

Из названия легко понять, что множество значений состоит из целых чисел. Также множество значений каждого из перечисленных типов может быть знаковым (signed) или беззнаковым (unsigned).

Количество элементов, содержащееся в множестве, зависит от размера памяти, которая используется для хранения значения этого типа.

Например, для переменной типа char отводится 1 байт памяти, поэтому всего элементов будет:

  • 28N = 28 * 1 = 256, где N — размер памяти в байтах для хранения значения

В таком случае диапазоны доступных целых чисел следующие:

  • [0..255] — для беззнакового char
  • [-128..127] — для знакового char

По умолчанию переменная целого типа считается знаковой. Чтобы указать в коде, что переменная должна быть беззнаковой, к базовому типу слева приписывают признак знаковости, т.е. unsigned:

unsigned long values; // задаёт целый (длинный) беззнаковый тип.

Перечисленные типы отличаются только размерами памяти, которая требуется для хранения. Поскольку язык C++ достаточно машинно-зависимый стандарт языка лишь гарантирует выполнение следующего условия:

  • 1 = размер char ≤ размер short ≤ размер int ≤ размер long.

Обычно размеры типов следующие: char — 1, short — 2, int — 4, long —8, long long — 8 байт.

Со значениями целого типа можно совершать арифметические операции: +, -, *, /, %; операции сравнения: ==, !=, =; битовые операции: &, |, xor, .

Большинство операций, таких как сложение, умножение, вычитание и операции сравнения, не вызывают проблем в понимании.

Иногда, после выполнения арифметических операций, результат может оказаться за пределами диапазона значений; в этом случае программа выдаст ошибку.

Целочисленное деление (/) находит целую часть от деления одного целого числа, на другое. Например:

  • 6 / 4 = 1;
  • 2 / 5 = 0;
  • 8 / 2 = 4.
  • Символ процента (%) обозначает операцию определение остатка от деления двух целых чисел:
  • Более сложные для понимания операции — битовые: & (И), | (ИЛИ), xor (исключающее ИЛИ), > (побитовый сдвиг вправо).
  • Битовые операции И, ИЛИ и XOR к каждому биту информации применяют соответствующую логическую операцию:
  • 110 = 012
  • 310 = 112
  • 110 & 310 = 012 & 112 = 012
  • 110 | 310 = 012 | 112 = 112
  • 110 xor 310 = 012 xor 112 = 102

В обработке изображения используют 3 канала для цвета: красный, синий и зелёный — плюс прозрачность, которые хранятся в переменной типа int, т.к. каждый канал имеет диапазон значений от 0 до 255.

В 16-иричной системе счисления некоторое значение записывается следующим образом: 0x180013FF; тогда значение 1816 соответствует красному каналу, 0016 — синему, 1316 — зелёному, FF — альфа-каналу (прозрачности). Чтобы выделить из такого целого числа определённый канал используют т.н.

маску, где на интересующих нас позициях стоят F16 или 12. Т.е., чтобы выделить значение синего канала необходимо использовать маску, т.е. побитовое И:

int blue_channel = 0x180013FF & 0x00FF0000;

После чего полученное значение сдвигается вправо на необходимое число бит.

Побитовый сдвиг смещает влево или вправо на столько двоичных разрядов числа, сколько указано в правой части операции. Например, число 39 для типа char в двоичном виде записывается в следующем виде: 00100111. Тогда:

char binaryExample = 39; // 00100111
char result = binaryExample

Источник: https://markoutte.me/students/data-types/

Ссылка на основную публикацию