- •Базовые типы данных.
- •Сложные типы данных. Перечислимый тип. Пример.
- •Сложные типы данных. Структуры. Пример.
- •Сложные типы данных. Объединения. Пример.
- •6)Первичные операции. Приоритет операции. Пример.
- •7) Условный оператор Оператор if
- •8)Оператор переключатель
- •9)Пошаговый цикл
- •10)Цикл с предусловием
- •21. Указатель, Объявление, Основные операции. Примеры.
- •22. Арифметические операции с указателями. Пример.
- •23. Операции динамического распределения памяти. Примеры .
- •24. Указатели и одномерные массивы. Динамические массивы. Примеры.
- •25. Указатель на указатель. Массивы указателей. Динамические двумерные массивы. Примеры.
- •26. Функции. Прототип функции. Определение функции. Примеры.
- •27.Передача аргументов функции по значению, по ссылке. Примеры.
- •28. Передача аргументов функции по адресу. Примеры.
- •29. Двумерный массив как аргумент функции. Примеры.
- •30. Динамический двумерный массив как аргумент функции. Примеры.
8)Оператор переключатель
switch (<выражение>)
{ case <константное выражение 1>: <операторы 1>
case <константное выражение 2>: <операторы 2>
...
case <константное выражение N>: <операторы N>
[default: <операторы>]
}
Оператор-переключатель предназначен для выбора одного из нескольких альтернативных путей выполнения программы. Вычисление оператора-переключателя начинается с вычисления выражения, после чего управление передается оператору, помеченному константным выражением, равным вычисленному значению выражения. Выход из оператора-переключателя осуществляется оператором break. Если значение выражения не равно ни одному константному выражению, то управление передается оператору, помеченному ключевым словом default, если он есть
Пример:
Cin>>a;
Switch(a)
{
Case 1:cout <<”Привет”;
Case 2:cout <<”Как дела”;
Case 3:cout <<”Что делаешь”;
}
9)Пошаговый цикл
Цикл — многократное прохождение по одному и тому же коду программы. Циклы необходимы программисту для многократного выполнения одного и того же кода, пока истинно какое-то условие. Если условие всегда истинно, то такой цикл называется бесконечным, у такого цикла нет точки выхода.
for(инициализация; условие; приращение) { блок операторов; }
|
|
В заголовке цикла указывается выражение инициализации, которое задает начальное значение счетчику цикла, условие, должен ли цикл продолжать свое выполнение, а выражение приращения модифицирует счетчик цикла.
Если условие продолжения цикла с самого начала ложно, то операторы тела for не исполняются и управление сразу передается оператору, следующему за for.
Пример:
For (i=0;i<10;i++)
{
Cout<<i+1<<”Учатник”;
}
10)Цикл с предусловием
Тело цикла выполняется до тех пор, пока<условие>истинно. Когда условие станет ложным, выполняется строка, следующая за циклом.
Работа цикла с предусловием:
Проверяется истинность выражения <условие>. Если <условие> истинно, то выполняются операторы тела цикла.
После того как выполнился последний оператор цикла, управление передаётся заголовку цикла. Переход на пункт 1.
Если условие в заголовке ложно, то цикл завершает свою работу.
Цикл с предусловием while()
while(<условие>)
{
<тело_цикла>
}
Пример:
While (a>0)
{
Cout<<a<<”Это положительное число”;
a--;
}
Цикл do while отличается от цикла while тем, что в do while сначала выполняется тело цикла, а затем проверяется условие продолжения цикла. Из-за такой особенности do while называют циклом с постусловием. Таким образом, если условие do while заведомо ложное, то хотя бы один раз блок операторов в теле цикла do while выполнится. В итоге do while отличается от цикла while структурой. Если в while сначала выполняется проверка условия продолжения цикла, и если условие истинно, то только тогда выполняется тело цикла. Цикл do while работает с точностью до наоборот, сначала выполняется тело цикла, а потом проверяется условие, вот почему тело цикла do while, хотя бы раз, выполнится.
(Пример самому легко придумать)
Оператор continue используется только в циклах. В операторах for, while, do while, оператор continue выполняет пропуск оставшейся части кода тела цикла и переходит к следующей итерации цикла.
Оператор break имеет два назначения. Первое - это окончание работы оператора switch. Второе - это принудительное окончание цикла, минуя стандартную проверку условия. Данное назначение здесь и рассматривается. Когда оператор break встречается в теле цикла, цикл немедленно заканчивается и выполнение программы переходит на строку, следующую за циклом. Например: int main() { int t; for(t=0; t<100; t++) { cout << t; if (t==10) break; } return 0; }
Структура программы
#include <путь>
#define <идентификатор><текст> #define <идентификатор>(<список параметров>)<текст> Данная деректива позволяет заменить идентификатор последовательность символов.
(#define N, 100; #define MULT(a, b)((a)*(b))); #define MAX(x, y)((x)>(y)?(x):(y))) #undef<идентификатор> (#undef N)
Объявление глобальных переменных и констант
Пользовательские процедуры и функции
Главная функция (main)
#include <iostream.h> cin >>//поток ввода cout <<//поток вывода
Одномерные массивы и их обработка.
Массив – это совокупность данных, которые обладают следующими свойствами:
Все элементы массива имеют один и тот же тип
Массив имеет одно имя для всех элементов
Доступ к конкретному элементу массива осуществляется по индексу
Массив может состоять из элементов любого типа, кроме типа void и функций. ИНИЦИАЛИЗАЦИЯ МАССИВА
#include <iostream> using namespace std; void main()
{
Const Int N = 10;
Const Int a = 0;
Int A[1000] = {0,...,999}
Int A[1000]; for (int I = 0; I < N; i++) A[i] = a;
Int I = 0; while (I < N) { A[i] = 2 + I * 2; i++; }
A[i] = rand()%100;
(ВЫВОД ЛИГКО НАПИСАТЬ)
16.
Нахождение максимального элемента массива выполняется путём последовательных сравнений. Значение наибольшего из сравниваемых элементов станем запоминать в переменной МАХ. В качестве начального значения максимума примем значение первого элемента массива. Значение переменной МАХ будем сравнивать с каждым следующим элементом массива. Если МАХ окажется меньше очередного элемента, то значение этого элемента сохраним в переменной МАХ для сравнения с последующими элементами массива. В противном случае значение переменной МАХ оставим без изменений.
Таким образом, когда все элементы массива будут просмотрены, в переменной МАХ останется копия максимального элемента массива. Сам же массив изменён не будет.
Блок-схема алгоритма нахождения максимума приведена на рисунке 13. Фрагмент программы приведён ниже.
MAX := A[1];
for i:=2 to N do
if MAX<A[i] then
MAX:=A[i];
writeln('МАХ=', MAX);
17.
Один из наиболее распространенных процессов обработки данных —сортировка массива.
Сортировка — это размещение объектов в определенномпорядке. Числа могут размещаться по убыванию или по возрастанию.
program sort;
const n=7;
a:array[1..n] of real=(50,40,10,20,30,5,7);
var i,j,k:integer; r:real;
begin
for i:=1 to n-1 do {на каждом шаге пузырек "плывет" от
1-ой позиции в (n-i+1)-ю позицию}
for j:=1 to n-i do
if a[j]>a[j+l] then {Сравниваются пары элементов}
begin
r:=a[j+1]; {обмен}
a[j+1]:=a[j];
a[j]:=r;
end;
{Вывод результата сортировки}
for k:=1 to n do Write(a[k]:9:4,'|'); end.
18.
При передаче одномерных массивов в функции следует вызывать функцию с именем массива без индекса. В результате этого передается адрес первого элемента массива. В С невозможно передать весь массив как аргумент. Вместо этого автоматически передается указатель. Следующий пример передает адрес i в func1(); int main(void) { int i(10); func1(i); ... }
Если функция получает одномерный массив, то можно объявить формальный параметр как указатель, как массив с фиксированной длиной или как безразмерный массив. Например, для передачи i в функцию func1() можно объявить func1() одним из следующих способов: void fun1 (int *a) /* указатель */ { ... } или void fun1(int a[10]) /* массив с фиксированной длиной */ { ... } или void fun1(int a []) /* безразмерный массив */ { ... }
Все три способа объявления сообщают компилятору, что предполагается получение указателя на целое, В первом объявлении используется указатель. Во втором - стандартный способ объявления массива. В третьем - модифицированная версия объявления массива, указывающая на то, что предполагается получение массива типа int некоторой длины. Не имеет значения длина передаваемого массива, поскольку С не выполняет проверку выхода за границы массива.
19.
Двумерный массив объявляется следующим образом: тип имя_массива[размер второго измерения][размер первого измерения]; Следовательно, для объявления двумерного массива целых с размером 10 на 20 следует написать: int d[10] [20] ;
Для считывания, вывода на экран и обработки двумерных массивов необходимо использовать вложенные циклы. Первый цикл — по первому индексу (то есть по всем строкам), второй цикл — по второму индексу, то есть по всем элементам в строках. Например, вывести на экран двумерный массив в виде таблицы, разделяя элементы в строке одним пробелом можно следующим образом:
int A[n][m];
for(int i = 0; i < n; ++i) { // Выводим на экран строку i
for(int j = 0; j < m; ++j)
cout << A[i][j] << " ";
cout << endl; // Строка завершается символом перехода на новую строку
}
А считать двумерный массив с клавиатуры можно при помощи еще более простого алгоритма (массив вводится по строкам, то есть в порядке, соответствующему первому примеру):
for(int i = 0; i < n; ++i)
for(int j = 0; j < m; ++j)
cin >> A[i][j];
20.
Строки в C++ могут быть разделены на C-строки и C++-строки, где к первым относятся различные вариации char*, а ко вторым относятся вариации std::basic_string<…>.
Все C++-строки представлены как псевдонимы stb::basic_string<…>, созданные с различными параметрами, а параметров у basic_string три:
Тип символа – т.е. то, чем будет является(его физическое представление) каждый символ составляющий строку.
Тип представляющий характеристики символа. Т.е. то, как символы должны сравниваться между собой и т.п.
Тип распределителя памяти– позволяет задавать различные методы выделения памяти под строку.
std::find, std::find_if, std::find_if_not – различные вариации поиска символа в строке.
std::adjacent_find – поиск двух одинаковых, смежных символа.
std::search – поиск первого вхождения подстроки в строку.
std::find_end - поиск последнего вхождения подстроки в строку
std::find_first_of – поиск одного из заданных символов в строке
std::search_n – поиск n одинаковых символов подряд.
std::mismatch – ищет несовпадение в двух строках
std::string::find, std::string::rfind – поиск символа, или под-строки в строке. Первая версия для поиска первого вхождения, а вторая для поиска последнего вхождения
std::string::find_first_of – поиск первого вхождения одного из заданных символов
std::string::find_last_of – поиск последнего вхождения одного из заданных символов
std::string::find_first_not_of – поиск первого символа, который не представлен в заданном списке
std::string::find_last_not_of – поиск последнего символа, который не представлен в заданном списке
string::copy – выделение под-строки в стиле C – копирует под-строку в буфер.
string::substr – выделение под-строки в стиле C++ – возвращает под-строку в виде объекта string.
std::stoi, std::stol, std::stoll – строка в знаковое целое
std::stoul, std::stoull – строка в беззнаковое целое
std::stof, std::stod, std::stold – строка в вещественное число
string — класс с методами и переменными для организации работы со строками в языке программирования C++. Он включён в стандартную библиотеку C++.string использует единственный объект string для организации работы со строками. Являясь частью стандартной библиотеки C++, эти объекты также являются частью стандартного пространства имён — std.
Простейшая программа «Hello, world!» (с использованием библиотеки iostream) может быть записана так:
#include <iostream>
#include <string> // в Си: #include <string.h>
int main()
{
std::string str = "Hello, world!";
std::cout << str << std::endl; // в Си: puts(str);
return 0;
}