
- •Представление чисел Целые числа
- •Вычитание
- •Умножение
- •Деление
- •Беззнаковые целые
- •Простые типы данных
- •Тип данных char
- •Int a[10], b[20]; // 2 массива на 10 и 20 целых чисел
- •Int a[n]; // размер массива задан через константу
- •Int Sum ( int a[], int n ) // a[] – параметр-массив
- •Int a[20], b[30], s;// здесь надо ввести массивы a и b
- •Выражения
- •Операция присваивания
- •Арифметические операции
- •Операции сравнения
- •Порядок вычисления выражений
- •Выражения и операторы.
- •Цикл for
- •Цикл while
- •Цикл do-while
- •Оператор return
- •Оператор goto
- •Оператор break
- •Оператор continue
- •Очередь
- •Циклическая очередь в массиве
- •Рекуррентные соотношения
- •Внешняя и внутренняя форма представления числа
- •Классификация сортировок
- •Трудоемкость алгоритмов сортировки и поиска Сортировки выбором и вставками
- •Циклическое слияние группами по s элеметов
- •Исторический анализ
- •Логический анализ: cтандартные программные контексты
- •От общего к частному
- •Одно из трех
- •Особенности функции как модуля
- •Интерфейс передачи параметров в функцию
- •Примеры модульного проектирования
- •Сущность трансляции. Компиляция и интерпретация
- •Трансляция и ее фазы
- •Модульное программирование, компоновка
- •Понятие связывания. Статическое и динамическое связывание
- •Модульное проектирование на «классическом» Си Препроцессор
- •Области видимости и время жизни переменных
- •Все эти библиотеки условно разделены по категориям: Стандартные заголовочные файлы языка Си:
Тип данных char
Тип данных char - это целочисленный тип данных, который используется для представления символов. То есть, каждому символу соответствует определённое число из диапазона [0;255]. Тип данных char также ещё называют символьным типом данных, так как графическое представление символов в С++ возможно благодаря char. Для представления символов в C++ типу данных char отводится один байт, в одном байте — 8 бит, тогда возведем двойку в степень 8 и получим значение 256 — количество символов, которое можно закодировать. Таким образом, используя тип данных char можно отобразить любой из 256 символов. Все закодированные символы представлены в таблице ASCII.
ASCII ( от англ. American Standard Code for Information Interchange) — американский стандартный код для обмена информацией.
Рассмотрим программу с использованием типа данных char.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
// symbols.cpp: определяет точку входа для консольного приложения.
#include "stdafx.h" #include <iostream> using namespace std;
int main(int argc, char* argv[]) { char symbol = 'a'; // объявление переменной типа char и инициализация её символом 'a' cout << "symbol = " << symbol << endl; // печать символа, содержащегося в переменной symbol char string[] = "cppstudio.com"; // объявление символьного массива (строки) cout << "string = " << string << endl; // печать строки system("pause"); return 0; } |
Итак, в строке 9 объявлена переменная с именем symbol, ей присвоено значение символа 'a' (ASCII код). В строке 10 оператор cout печатает символ, содержащийся в переменной symbol. В строке 11 объявлен строковый массив с именем string, причём размер массива задан неявно. В строковый массив сохранена строка "cppstudio.com". Обратите внимание на то, что, когда мы сохраняли символ в переменную типа char, то после знака равно мы ставили одинарные кавычки, в которых и записывали символ. При инициализации строкового массива некоторой строкой, после знака равно ставятся двойные кавычки, в которых и записывается некоторая строка. Как и обычный символ, строки выводятся с помощью оператора cout, строка 12.
Беззнаковые двоичные коды.
Первый вид двоичных кодов, который мы рассмотрим - это целые беззнаковые коды. В этих кодах каждый двоичный разряд представляет собой степень цифры 2:
При этом минимально возможное число, которое можно записать таким двоичным кодом, равно 0. Максимально возможное число, которое можно записать таким двоичным кодом, можно определить как:
Этими двумя числами полностью можно определить диапазон, чисел которые можно представить таким двоичным кодом. В случае двоичного восьмиразрядного беззнакового целого числа диапазон будет: диапазон чисел, которые можно записать таким кодом: 0 .. 255. Для шестнадцатиразрядного кода этот 0 .. 65535. В восьмиразрядном процессоре для хранения такого числа используется две ячейки памяти, расположенные в соседних адресах. Для работы с такими числами используются специальные команды.
Второй вид двоичных кодов, который мы рассмотрим - это прямые целые знаковые коды. В этих кодах старший разряд в слове используется для представления знака числа. В прямом знаковом коде нулем обозначается знак '+', а единицей - знак '-'. В результате введения знакового разряда диапазон чисел смещается в сторону отрицательных чисел:
В случае двоичного восьмиразрядного знакового целого числа диапазон чисел, которые можно записать таким кодом: -127 .. +127. Для шестнадцатиразрядного кода этот диапазон будет: -32767 .. +32767. В восьмиразрядном процессоре для хранения такого числа тоже используется две ячейки памяти, расположенные в соседних адресах.
Недостатком такого кода является то, что знаковый разряд и цифровые разряды приходится обрабатывать раздельно. Алгоритм программ, работающий с такими кодами получается сложный. Для выделения и изменения знакового разряда приходится применять механизм маскирования разрядов, что резко увеличивает размер программы и уменьшает ее быстродействие. Для того, чтобы алгоритм обработки знакового и цифровых разрядов не различался, были введены обратные двоичные коды.
Для передачи символа и его корректного отображения ему должна соответствовать уникальная последовательность нулей и единиц. Для этого были разработаны таблицы кодировок.
Количество
символов, которые можно задать
последовательностью битов длины n,
задается простой формулой
.
Таким образом, от нужного количества
символов напрямую зависит количество
используемой памяти.
Представление чисел с плавающей точкой в общем случае имеет вид
X = <знак>M*pt,
где М – мантисса числа Х, t – порядок, p – основание ( обычно целая степень числа 2). Мантисса и порядок представляются в системе счисления с основанием p. Знак числа совпадает со знаком мантиссы. Порядок t может быть положительным или отрицательным целым числом, определяет положение точки в числе Х. Для представления порядка применяют смещенный код. Для перехода к смещенному коду от дополнительного кода необходимо инвертировать знаковый разряд кода. Особенностью смещенного кода является то , что из [X1]см > [X2]см X1 >X2. Это упрощает сравнение чисел со знаком, сводя его к сравнению представляющих их кодов (чисел без знака).Чтобы сформировать смещенный код числа , сначала выбирается длина битовой комбинации, а затем в порядке счета в обычной двоичной системе последовательно записываются все возможные комбинации, имеющие установленную длину. Кодовые значения ,получаемые при использовании трехразрядных битовых комбинаций приведены в таблице.
Значение |
Комбинация битов |
3 |
111 |
2 |
110 |
1 |
101 |
0 |
100 |
-1 |
011 |
-2 |
010 |
-3 |
001 |
-4 |
000 |
Для представления числа 0 выбирается битовая комбинация 100, с единицей в старшем разряде. Все последующие комбинации с единицей в старшем разряде будут представлять числа 1, 2, 3 соответственно. Предыдущие комбинации в обратном направлении используются для представления чисел -1, -2,-3, -4. Пример представления в котором для хранения числа используется один байт (восьмиразрядный формат). Способ разделения байта представлен ниже.
Знак |
Смещенный порядок |
Модуль мантиссы (двоичный ) |
7 |
6..4 |
|
Массив – это группа ячеек памяти одинакового типа, расположенных рядом и имеющих общее имя. Каждая ячейка в группе имеет уникальный номер.
Чтобы использовать массив, надо его объявить – выделить место в памяти. Типом массива называется тип массива это тип входящих в него элементов. Массивы могут быть разных типов — int, float, char, и т.д. Массив объявляют так же, как и обычные переменные, но после имени массива в квадратных скобках записывается его размер.