
- •2. Программа. Обзор существующих парадигм программирования.
- •6. Операторы инкремента и декремента. Побитовые операторы языка
- •7. Операторы присваивания. Условный оператор. Оператор sizeof.
- •12. Инструкции break и continue
- •18.Функция. Объявление и определение функции: назначение,
- •19. Функция. Возврат значения из функции: синтаксис, пример.
- •22. Символьный тип: размер, диапазон. Связь символа и ascii-кода.
- •23.Символьные строки. Null-символ. Ввод и вывод символьных
- •24.Функции работы со строками: назначение, синтаксис, примеры
- •26.Разыменование указателей. Арифметические операции над указателями. Связь указателей и массивов. Примеры.
- •27.Указатели как аргументы функций. Массивы указателей.
- •28.Указатель на константу, константный указатель на переменную,
- •30.Структуры, объединения, перечисления.
12. Инструкции break и continue
Оператор break прекращает выполнение ближайшего внешнего для него оператора цикла.
const int M=3, N=2;
int a[M][N] = {{0,2}, {3,0}, {5,6}};
int sum = 0;
for (int i = 0; i < M; i++)
{
for (int j = 0; j < N; j++)
{
if (a[i][j]==0) break;
sum += a[i][j];
}
}
cout << sum << endl;
Оператор continue передает управление на ближайшую внешнюю проверку условия продолжения цикла.
const int M=3, N=2;
int a[M][N] = {{0,2}, {3,0}, {5,6}};
int sum = 0;
for (int i = 0; i < M; i++)
{
for (int j = 0; j < N; j++)
{
if (a[i][j]==0) continue;
sum += a[i][j];
}
}
cout << sum << endl;
13.Структура программы на языке С++. Функция main.
В любой программе на языке Си обязательно должна присутствовать главная функция с фиксированным именем main. В соответствии со стандартом языка, функция main имеет две допустимых сигнатуры:
int main();
int main(int argc, char* argv[]);
Функция int _tmain(int argc, _TCHAR* argv[]) является макросом от компании Microsoft, который вызывает одну из двух функций:
int main(int argc, char* argv[]);или int wmain(int argc, wchar_t* argv[]); в зависимости от того, используется ли в проекте кодировка Unicode.
Перед именем каждой функции программы следует помещать сведения о типе воз-вращаемого значения (типе результата). Если функция ничего не возвращает, указывается тип void. Значение, возвращаемое функцией main(), может быть передано операционной системе для дальнейшего анализа.
Параметры функции main() позволяют организовать передачу данных из среды вы-полнения в исполняемую программу, минуя средства стандартной библиотеки ввода-вывода.
14.Ввод-вывод в языке С++ с помощью функций printf(), scanf().
Для вывода информации в Си достаточно часто используется функция printf() (форматная строка, список аргументов);
Прототип этой функции находится в файле <stdio.h>. Форматная строка ограничена двойными кавычками и может включать произвольный текст, управляющие символы и спецификации преобразования данных. Список аргументов может отсутствовать.
Произвольный текст выводится на экран непосредственно без изменений: printf("Привет, мир!");
Управляющие символы (перевод строки, табуляция) позволяют влиять на размеще-ние информации на экране.
Спецификации преобразования данных предназначены для управления формой внешнего представления значений аргументов функции printf(). Обобщенный формат спецификации: %флажки ширина_поля.точность модификатор спецификатор. Обязательными являются только % и спецификатор.
Примеры спецификаторов:
d – для целых десятичных чисел (тип int); u – для целых десятичных чисел без зна-ка (unsigned); f – для вещественных чисел.
Ширина поля – целое положительное число, определяющее длину (в позициях на экране) представления выводимого значения.
Точность - целое положительное число, определяющее количество цифр в дроб-ной части вещественного числа.
float f = 5.23232323;
printf("%5.3f",f);
Результат: 5,232.
В качестве модификаторов в спецификации преобразования используются симво-лы: h – для вывода значений short, l – для вывода значений long, L – для вывода значений типа long double. Например, для вывода переменной типа long int нужно использовать спецификатор формата %ld.
Функция scanf, обеспечивающая ввод, является аналогом printf. Она читает симво-лы из стандартного входного потока, интерпретирует их согласно спецификациям фор-матной строки и рассылает результаты в свои остальные аргументы.
15. Потоковый ввод-вывод в языке С++ (cin, cout).
Для того чтобы использовать стандартные потоки для ввода и вывода, необходимо включить заголовочный файл <iostream>. Для ввода используется операция >>, для вывода – операция <<. Компилятор определяет тип вводимой/выводимой переменной и соответствующим образом форматирует её.
#include <iostream>
using namespace std;
cin >> x; // Ввод значения в переменную x из стандартного потока cin
cout << x; // Вывод значения переменной x в стандартный поток cout
cin >> x >> y; // Ввод двух переменных
cout << "x = " << x << "\ny = " << y << endl; // Функция endl осуществляет перевод строки
Если при вводе или выводе произошла ошибка, в переменной состояния потока устанавливается соответствующий флаг. Проверить его значение можно с помощью функции fail.
cin >> x;
if (cin.fail())
cout << "Произошла ошибка при вводе\n";
16. Одномерные массивы в С++. Способы инициализации массивов.
Массив – это конечная именованная последовательность однотипных величин. Размерность массива – количество его элементов. Описание массива в программе отличается от описания простой переменной тем, что за именем переменной следуют квадратные скобки, в которых записывается размерность массива. Например: int a[3]; // массив из 3 целых чисел
float b[5]; // массив из 5 действительных чисел
char c[15]; // массив из 15 символов
Каждый элемент массива имеет свой номер, который называется индексом элемента. Индексация (то есть нумерация) элементов в С++ начинается с нуля. Например, массив int a[3] будет содержать элементы a[0], a[1], a[2].
Начальные значения элементов массива можно задать с использованием фигурных скобок, например:
int a[3]={1,2,3}; // a[0]=1, a[1]=2, a[2]=3
Значения элементам присваиваются по порядку. Если размерность массива больше, чем число введенных элементов, остальные будут проинициализированы нулями:
float b[5] = {5.5, 1.2, 1.3}; // b[0]=5.5, b[1]=1.2, b[2]=1.3, b[3]=0, b[4]=0
Размещение элементов массива в памяти выполняется на этапе компиляции, поэтому размерность массива задается константой или константным выражением.
const int M = 5, N = 3;
int a[M*N]={};
Допустимо не задавать размерность массива, в этом случае память будет выделена по числу элементов в списке инициализации:
double d[] = {1.5,2.5,3.5};
Для доступа к элементам массива используются квадратные скобки:
// d[0]=1.5, d[1]=2.5, d[2]=0
double d[3]={1.5,2.5};
d[2]=3.5; // d[2]=3.5
double sum = 0; // переменная для хранения суммы
for (int i = 0; i < 3; i++) sum += d[i]; cout << "Сумма:" << sum << endl; // Сумма: 7,5
17. Двумерные массивы в С++. Пример объявления двумерного массива (индексация его элементов показана на рис. 1):
int a[4][5]; // массив из 4 элементов, каждый из кот. является массивом из 5 эл-в. Двумерный массив располагается в памяти последовательно по строкам (в порядке наиболее быстрого изменения последнего индекса).
При инициализации многомерного массива он представляется либо как массив из массивов, при этом каждый массив заключается в свои фигурные скобки (в этом случае левую размерность при описании можно не указывать), либо задается общий список элементов в том порядке, в котором элементы располагаются в памяти:
int mass2 [][2] = { {1, 1}, {0, 2}, {1, 0} };
int mass2 [3][2] = {1, 1, 0, 2, 1, 0};
Пример работы с двумерным массивом (программа ищет номер строки двумерного массива, в которой больше всего нулей):
const int M = 4, N = 5; // размерности массива
int b[M][N]; // описание массива
int i, j; // счетчики циклов
for (i = 0; i<M; i++) // ввод массива
for (j = 0; j<N; j++) scanf("%d", &b[i][j]);
int istr = -1, max_count = 0; // номер искомой строки, максимальное количество
for (i = 0; i<M; i++)
{ // просмотр массива по строкам
int count = 0;
for (j = 0; j<N; j++) if ( b[i][j] == 0) count++;
if ( count > max_count)
{
istr = i ; max_count = count;
}
}
printf("Исходный массив:\n");
for (i = 0; i<M; i++){
for (j = 0; j<N; j++) printf("%d ", b[i][j]);
printf ("\n" ) ;}
if (istr == -1) printf("Нулевых элементов нет");
else printf("Hoмep строки: %d", istr + 1 );