- •Цикл for
- •Цикл while
- •Цикл do…while
- •Оператор goto
- •Указатели предназначены для хранения адресов областей памяти, а cсылка представляет собой синоним имени, указанного при инициализации ссылки. Далее подробно рассматриваются эти важные темы.
- •Указатель на функцию
- •Указатель на объект
- •Указатель на void
- •Локальные переменные
Алгоритм - это определенная последовательность логических действий для решения поставленной задачи. Теперь переместимся в информатику и программирование, взглянем на то, как алгоритмы работают там. Абсолютно любая наша программа, по сути, это уже и есть алгоритм, т.к. это последовательность определенных и продуманных программистом действий и описанных в виде кода (инструкций компьютеру). К примеру, программа запрашивает у пользователя в цикле целые числа и, если число является четным, то печатает соответствующее сообщение, в ином случае (когда нечетное) выводит сообщение о том, что число нечетное.
В программировании бывает нужно работать с разными переменными. Иногда бывает нужно создать переменную, в которой будет храниться целое число, а иногда переменную в которой будет буква. Поэтому каждая переменная относится к какому-либо типу данных. Целочисленный (целый) тип данных (тип int)
Переменные данного типа применяются для хранения целых чисел (integer). Описание переменной, имеющей тип int, сообщает компилятору, что он должен связать с идентификатором (именем) переменной количество памяти, достаточное для хранения целого числа во время выполнения программы.
Границы диапазона целых чисел, которые можно хранить в переменных типа int, зависят от конкретного компьютера, компилятора и операционной системы (от реализации). Для 16-разрядного процессора под него отводится 2 байта, для 32-разрядного – 4 байта.
Вещественный (данные с плавающей точкой) тип данных (типы float и double)
Для хранения вещественных чисел применяются типы данных float (с одинарной точностью) и double (с двойной точностью). Смысл знаков "+" и "-" для вещественных типов совпадает с целыми. Последние незначащие нули справа от десятичной точки игнорируются. Поэтому варианты записи +523.5, 523.5 и 523.500 представляют одно и то же значение.
В большинстве случаев используется тип double, он обеспечивает более высокую точность, чем тип float. Максимальную точность и наибольший диапазон чисел достигается с помощью типа long double.
Величина с модификатором типа float занимает 4 байта. Из них 1 бит отводится для знака, 8 бит для избыточной экспоненты и 23 бита для мантиссы. Отметим, что старший бит мантиссы всегда равен 1, поэтому он не заполняется, в связи с этим диапазон модулей значений переменной с плавающей точкой приблизительно равен от 3.14E–38 до 3.14E+38.
Величина типа double занимает 8 байтов в памяти. Ее формат аналогичен формату float. Биты памяти распределяются следующим образом: 1 бит для знака, 11 бит для экспоненты и 52 бита для мантиссы. С учетом опущенного старшего бита мантиссы диапазон модулей значений переменной с двойной точностью равен от 1.7E–308 до 1.7E+308.
Символьный тип данных (тип char)
В стандарте C++ нет типа данных, который можно было бы считать действительно символьным. Для представления символьной информации есть два типа данных, пригодных для этой цели, – это типы char и wchar_t.
Переменная типа char рассчитана на хранение только одного символа (например, буквы или пробела). В памяти компьютера символы хранятся в виде целых чисел. Соответствие между символами и их кодами определяется таблицей кодировки, которая зависит от компьютера и операционной системы. Почти во всех таблицах кодировки есть прописные и строчные буквы латинского алфавита, цифры 0, ..., 9, и некоторые специальные символы. Самой распространенной таблицей кодировки является таблица символов ASCII ( American Standard Code for Information Interchange – Американский стандартный код для обмена информацией).
Так как в памяти компьютера символы хранятся в виде целых чисел, то тип char на самом деле является подмножеством типа int.
Под величину символьного типа отводится 1 байт.
Логический (булевый) тип данных (тип bool)
В языке С++ используется двоичная логика (истина, ложь). Лжи соответствует нулевое значение, истине – единица. Величины данного типа могут также принимать значения true и false.
Внутренняя форма представления значения false соответствует 0, любое другое значение интерпретируется как true. В некоторых компиляторах языка С++ нет данного типа, в этом случае используют тип int, который при истинных значениях выдает 1, а при ложных – 0. Под данные логического типа отводится 1 байт.
Массив это структура данных, представленная в виде группы ячеек одного типа, объединенных под одним единым именем. Массивы используются для обработки большого количества однотипных данных.
Одномерный массив - это массив, у которого может быть только одна строка, и n-е количество столбцов. Столбцы в одномерном массиве - это элементы массива.
int a[16] = { 5, -12, -12, 9, 10, 0, -9, -12, -1, 23, 65, 64, 11, 43, 39, -15 }
Инициализация одномерного массива выполняется в фигурных скобках после знака равно, каждый элемент массива отделяется от предыдущего запятой.
До этого момента мы рассматривали одномерные массивы, которыми не всегда можно ограничиться. Допустим, необходимо обработать некоторые данные из таблицы. В таблице есть две характеристики: количество строк и количество столбцов. Также и в двумерном массиве, кроме количества элементов массива, есть такие характеристики как, количество строк и количество столбцов двумерного массива. То есть, визуально, двумерный массив - это обычная таблица, со строками и столбцами. Фактически двумерный массив - это одномерный массив одномерных массивов. Структура двумерного массива, с именем a, размером m x n показана ниже
где, m - количество строк двумерного массива;
n - количество столбцов двумерного массива;
m * n - количество элементов массива.
В объявлении двумерного массива, также как и в объявлении одномерного массива, первым делом, нужно указать:
тип данных;
имя массива.
После чего, в первых квадратных скобочках указывается количество строк двумерного массива, во вторых квадратных скобочках - количество столбцов двумерного массива. Двумерный массив визуально отличается от одномерного второй парой квадратных скобочек. Рассмотрим пример объявления двумерного массива. Допустим нам необходимо объявить двумерный массив, с количеством элементов, равным 15. В таком случае двумерный массив может иметь три строки и пять столбцов или пять строк и три столбца.
int a[5][3];
Цикл- многократное прохождение по одному и тому же коду программы. Циклы необходимы программисту для многократного выполнения одного и того же кода, пока истинно какое-то условие. Если условие всегда истинно, то такой цикл называется бесконечным, у такого цикла нет точки выхода.
В языке программирования С++ существуют такие циклы:
цикл for
цикл while
цикл do .. while
Тело цикла будет выполняться до тех пор, пока условие будет истинно(т. е. true).
Цикл for
#include <iostream.h>
#include <conio.h>
int main()
{
clrscr();
int i; // переменная для счетчика
for (i=1; i<10; i++)
{
cout<<i<<" ";
}
return 0;
}
Вот элементарная и наглядная программа, написанная для C++ для начинающих.
Новая здесь только одна строчка for (i=1; i<10; i++)
Давайте её разберём
for - Это команда на запуск цикла от какого-то одного значения до другого по порядку
i=1 - Счетчик начинает отсчет с единицы
i<10 - Когда переменная i (Счетчик) примет значение 10, цикл будет завершен
i++ - Постепенное увеличение переменной i на 1 (Шаг)
Запомните, что сначала обязательно нужно указать первоначальное значение переменной для счетчика, другими словами инициализировать счетчик,
for (i=1; i<1; i++); Это указание, что нам нужен отсчет от единицы.
Второе мы обязательно указываем условие (До тех пор пока) - До тех пор, пока i<1, постоянно будет происходить повторное выполнение нашей программы- будет срабатывать цикл.
Третье - Нам нужно менять значение переменной i. Сделать так, чтобы счетчик менялся и указать значение на которое его менять:
for (i=1; i<1; i++); Увеличиваем i на 1 после каждого выполнения цикла
Цикл while
Оператор цикла while или цикл while - цикл, повторяющий одно и то же действие, пока условие продолжения цикла while остаётся истинным.
// форма записи цикла while
while (/*условие продолжения цикла while*/)
{
/*блок операторов*/;
/*управление условием*/;
}
Условие продолжения цикла должно быть истинно "true", как только условие стало ложным, выполняется выход из цикла. Также как и в условных операторах выбора, фигурные скобочки могут опускаться в том случае, если тело цикла - это один оператор. Но как правило в цикле выполняется несколько операторов, так как кроме выполнения полезного действия необходимо делать условие цикла while ложным, иначе цикл будет бесконечным, а это, в свою очередь, приведет к зависанию программы.
int speed = 5; // начальная скорость автомобиля
while ( spped < 60 ) // заголовок цикла while
speed += 10; // тело цикла
Цикл do…while
Цикл do while отличается от цикла while тем, что в цикле do while сначала выполняется тело цикла, а затем проверяется условие продолжения цикла. Из-за такой особенности цикл do while называют циклом с постусловием. Таким образом, если условие цикла do while заведомо ложное, то хотя бы один раз блок операторов в теле цикла do while выполнится. В итоге цикл do while отличается от цикла while структурой. Если в цикле while сначала выполняется проверка условия продолжения цикла, и если условие истинно, то только тогда выполняется тело цикла. Цикл do while работает с точностью да наоборот, сначала выполняется тело цикла, а потом проверяется условие, вот почему тело цикла do while, хотя бы раз, выполнится.
// форма записи оператора цикла do while:
do // начало цикла do while
{
/*блок операторов*/;
}
while (/*условие выполнения цикла*/); // конец цикла do while
Оператор if используется для того, чтобы определить действия программы при различных условиях. Например у нас есть число. И если оно четное нам нужно его удвоить, а иначе разделить пополам. Для написания подобной программы и используется оператор if.
В самой простой вариации он будет иметь следующую форму
if(<условие>) <действие>;
В этом случае если условие выполняется , то программа совершит некоторое действие. Например:
if(a == 2) cout << a;
Что если мы захотим при невыполнении основного условия сделать что-нибудь другое? Для этого используется структура if() ; else ;
if(a == 2) cout << a;
else cout << 0;
Примечание:
-Любое условие в С++ заключается в круглые скобки()
-Для сравнения переменных используются сравнительные символы >, <, ==, != (больше, меньше, равно, не равно)
-перед else всегда ставится точка с запятой
А что если при невыполнении первого условия нам нужно проверять еще что-то? Приведем пример из жизни. Если на улице солнечно то мы можем одеть футболку. А если нет? То мы еще должны посмотреть на улице просто пасмурно, или идет дождь, или может даже снег. Для подобных ситуаций в программировании мы можем использовать структуру
if() ; else if() ; else ;
if(a > 100) cout << 3;
else if(a > 50) cout << 2;
else if(a >= 0) cout << 1;
else cout << 0;
Операторы передачи управления
В C++ есть четыре оператора, изменяющих естественный порядок
выполнения вычислений:
оператор безусловного перехода goto;
оператор выхода из цикла break;
оператор перехода к следующей итерации цикла continue;
оператор возврата из функции return.
