
- •7. Вычитание в двоичной системе
- •При представлении с фиксированной запятой
- •20. Форматы данных
- •21. Представление числа в форме с плавающей запятой.
- •23. Форматы данных
- •Расширенная форма Бэкуса-Наура
- •25. Технология структурного программирования при разработке серьезных программных комплексов, основана на следующих принципах:
- •Типы интерпретаторов
- •Структура компилятора
- •Синтаксис:
- •38. Типы данных
- •Арифметические операции
- •Логические операции
- •43. С#Операции отношения:
- •Pascal Операции отношения
- •44. C# Операция присваивания
- •45. Стандартные процедуры и функции
- •46. 1) Класс Math:
- •Заголовок программы
- •Раздел меток (label)
- •Раздел констант (const)
- •Раздел типов (type)
- •Раздел переменных (var)
- •Раздел процедур и функций
- •Раздел действий (операторов)
- •Операторы ввода данных
- •Операторы вывода данных
- •54. Оператор case (оператор выбора)
- •55. Оператор if
- •Оператор switch
- •59. Оператор goto
- •Оператор return
- •Оператор throw
- •Исключительные ситуации
- •61. Класс
- •62. Состав классов
- •Модификаторы параметров методов
- •67. Статические конструкторы
- •68. Статические классы
- •Двумерные массивы
- •Создание массивов
- •Копирование массивов
- •Сортировка и поиск
38. Типы данных
Простые типы данных Паскаля: числа с плавающей запятой (real), целые (integer), символьный (char), логический (boolean) и перечисления (конструктор нового типа, введённый в Паскале).
Целочисленные типы:
Тип |
Диапазон |
Формат |
Размер в байтах |
Byte |
0..255 |
Беззнаковый |
1 |
ShortInt |
−128..127 |
Знаковый |
1 |
SmallInt |
−32768..32767 |
Знаковый |
2 |
Word |
0..65535 |
Беззнаковый |
2 |
Integer |
-32768..32767 |
Знаковый |
2 |
Cardinal |
=LongWord |
Беззнаковый |
4 |
LongWord |
0..4294967295 |
Беззнаковый |
4 |
LongInt |
−2147483648..2147483647 |
Знаковый |
4 |
Int64 |
−9223372036854775808..9223372036854775807 |
Знаковый |
8 |
QWord |
0..18446744073709551615 |
Беззнаковый |
8 |
Числа с плавающей запятой:
Тип |
Диапазон |
количество значащих цифр |
Размер в байтах |
Real/Double |
зависит от платформы |
??? |
8 |
Real48 |
??? |
11-12 |
6 |
Single |
1.5E-45..3.4E38 |
7-8 |
4 |
Extended |
1.9E-4932..1.1E4932 |
19-20 |
10 |
Comp |
−2E64+1..2E63-1 |
19-20 |
8 |
Currency |
−922337203685477.5808..922337203685477.5807 |
19-20 |
8 |
39. С# является жестко типизированным языком. При его использовании вы должны объявлять тип каждого объекта, который создаете (например, целые числа, числа с плавающей точкой, строки, окна, кнопки, и т. д.), и компилятор поможет вам избежать ошибок, связанных с присвоением переменным значений только того типа, который им соответствует. Тип объекта указывает компилятору размер объекта (например, объект типа int занимает в памяти 4 байта) и его свойства (например, форма может быть видима и невидима, и т.д.). Подобно языкам C++ и Java, C# подразделяет типы на два вида: встроенные типы, которые определены в языке, и определяемые пользователем типы, которые выбирает программист. С# также подразделяет типы на две другие категории: размерные и ссылочные. Основное различие между ними — это способ, которым их значения сохраняются в памяти. Размерные типы сохраняют свое фактическое значение в стеке. Ссылочные типы хранят в стеке лишь адрес объекта, а сам объект сохраняется в куче. Куча — основная память программ, доступ к которой осуществляется на много медленнее чем к стеку. Если вы работаете с очень большими объектами, то сохранение их в куче имеет много преимуществ. В следующих уроках будут подробно рассмотрены различные преимущества и недостатки работы с ссылочными типами. С# также поддерживает и указатели на типы, но они редко употребляются. Применение указателей связано с использованием неуправляемого кода.
Язык С# предоставляет программисту широкий спектр встроенных типов, которые соответствуют CLS (Common Language Specification) и отображаются на основные типы платформы .NET. Это гарантирует, что объекты, созданные на С#, могут успешно использоваться наряду с объектами, созданными на любом другом языке программирования, поддерживающем .NET CLS (например, VB.NET). Каждый тип имеет строго заданный для него размер, который не может изменяться. В отличие от языка C++, в С# тип int всегда занимает 4 байта, потому что отображается к Int32 в .NET CLS. Представленная ниже таблица содержит список всех встроенных типов, предлагаемых С#.
-
Тип
Область значений
Размер
sbyte
-128 до 127
Знаковое 8-бит целое
byte
0 до 255
Беззнаковое 8-бит целое
char
U+0000 до U+ffff
16-битовый символ Unicode
bool
true или false
1 байт
short
-32768 до 32767
Знаковое 16-бит целое
ushort
0 до 65535
Беззнаковое 16-бит целое
int
-2147483648 до 2147483647
Знаковое 32-бит целое
uint
0 до 4294967295
Беззнаковое 32-бит целое
long
-9223372036854775808 до 9223372036854775807
Знаковое 32-бит целое
ulong
0 до 18446744073709551615
Беззнаковое 32-бит целое
float
±1,5*10-45 до ±3,4*1033
4 байта, точность — 7 разрядов
double
±5*10-324 до ±1,7*10306
8 байт, точность —16 разрядов
decimal
12 байт, точность — 28 разрядов
В дополнение к этим примитивным типам С# может иметь объекты типа enum и struct.
40. Правила описания переменных.
Переменная — это величина, которая во время работы программы может изменять свое значение.
Все переменные, используемые в программе, должны быть описаны.
Для каждой переменной задается ее имя и тип:
int number; float x, y; char option;
Тип переменной выбирается исходя из диапазона и требуемой точности представления данных
41. С#Неявные преобразования. Не требуется никакого специального синтаксиса, поскольку преобразование безопасно для типов и данные не теряются.Примерами могут служить преобразования от меньшего к большему целому типу, и преобразования из производных классов в базовые классы.
Явные преобразования (приведения). Для явных преобразований необходим оператор приведения. Приведение требуется, когда при преобразовании может быть потеряна информация, или когда преобразование может завершиться неудачей по другим причинам. К типичным примерам относится числовое преобразование в тип, который имеет меньшую точность или меньший диапазон значений, а также преобразование экземпляра базового класса в производный класс.
Pascal Явное В ряде случаев в Pascal происходит автоматический переход от одного типа данных к другому (от целого к действительному, от символьного к строковому и т.д.). Существует также ряд функций, осуществляющих преобразование типов (ord, chr, trunc, round). Наряду с этим в Паскаль возможно явное преобразование типов (ретипизация данных). Для того, чтобы осуществить явное преобразование типа, необходимо использовать имя типа аналогично тому, как используется имя функции. В качестве параметра в этом случае указывается имя преобразуемой переменной.
Преобразовать можно любой тип к любому другому, однако следует выполнять требование: в операторе присваивания переменная слева должна занимать в памяти столько же или больше байт, сколько занимает преобразуемое значение.
Неявные
В Паскале почти невозможны неявные (автоматические) преобразования числовых типов данных. Исключение сделано только для типа integer, который разрешается использовать в выражениях типа real. Например, если переменные описаны следующим образом:
Var X : integer; Y: real;
то оператор
Y := X+2;
будет синтаксически правильным, хотя справа от знака присваивания стоит целочисленное выражение, а слева – вещественная переменная, компилятор сделает преобразование числовых типов данных автоматически. Обратное же преобразование автоматически типа real в тип integer в Паскале невозможно. Вспомним, какое количество байт выделяется под переменные типа integer и real: под целочисленный тип данных integer выделяется 2 байта памяти, а под real – 6 байта. Для преобразования real в integer имеются две встроенные функции: round(x) округляет вещественное x до ближайшего целого, trunc(x) усекает вещественное число путем отбрасывания дробной части.
42.
Арифметические операции В языке С# имеются обычные для всех языков арифметические операции - "+, -, *, /, %". Все они перегружены. Операции "+" и "-" могут быть унарными и бинарными. Унарные операции приписывания знака арифметическому выражению имеют наивысший приоритет среди арифметических операций. К следующему приоритету относятся арифметические операции типа умножения, к которому относятся три операции - умножения, деления и взятия остатка. Все эти операции перегружены и определены для разных подтипов арифметического типа. Следует, однако, помнить, что арифметические операции не определены над короткими числами (byte, short) и начинаются с типа int. Операция деления "/" над целыми типами осуществляет деление нацело, для типов с плавающей и фиксированной точкой - обычное деление. Операция "%" возвращает остаток от деления нацело и определена не только над целыми типами, но и над типами с плавающей точкой. Тип результата зависит от типов операндов.
Логические операции (&&, ||, !, ^) применимы только к значениям типа bool. Их результатом также служат величины типа bool.
Оператор Операция Пример
! лог. отрицание F=! C;
&& лог. умножение F=D && T;
|| лог. сложение F=A || B;
^ исключающее или F=A ^ B;
Таблица истинности
О п е р а ц и и
Операнды || & & ^
true,true true true false
true,false true false true
false,true true false true
false,false false false false
!
true false
false true
Наряду с && и || можно использовать & и | соответственно. Отличие & от && состоит в том, что & может выполнять побитовую операцию И для целых чисел, но также работает и с логическим типом, например 5 & 3 = 1 .
Отличие | от || состоит в том, что | может выполнять побитовую операцию ИЛИ для целых чисел, но также работает и с логическим типом.