Условный оператор if и оператор выбора switch

Объявление условного оператора if:

if (выражение) оператор;

else оператор;

Пример

int test = 65;

if (test >= 90)

{
cout << " Поздравляю, вы получили 5!" << endl;

cout << "Ваши тестовые очки были " << test << endl;

}
else
{
cout << "Вы должны работать усерднее!" << endl;

cout << "Вы потеряли " << 100 - test_score <<"очков" << endl;

}

Объявление оператора выбораswitch:

Пример:

char grade=’A’;

switch(grade)

{

case’A’: cout<<”Поздравляем, вы получили А”<<endl; break;

case’B’: cout<<”Хорошо, у вас В”<<endl;break;

default: cout<<”Ужасно!Учите лучше!”<<endl;break

}

Операторы цикла

 

цикл с предусловием (while):

while (выражение) оператор;

цикл с постусловием (do while):

do оператор while (выражение);

Замечание: цикл do while работает также как и цикл while, т.е. выполняется пока (выражение) истинно и выход из цикла происходит как только (выражение) стало ложным. Разница только в том, что в цикле while сначала проверяется истинность (выражения), а затем выполняется оператор, а в цикле do while сначала выполняется оператор, а затем проверяется истинность (выражения).

цикл с параметром (for): for (инициализация ; выражение; модификации) оператор;

Инициализация используется для объявления и присвоения начальных значений величинам, используемым в цикле, можно записать несколько операторов, разделенных запятой. Областью действия переменных является цикл, инициализация выполняется один раз в начале исполнения цикла.

Выражение определяет условие выполнения цикла; если результат его выполнения истинный, то цикл выполняется.

Модификации выполняются после каждой итерации цикла и служат обычно для изменения параметров цикла. Можно записать несколько операторов через запятую.

Замечание: цикл for реализован как цикл с предусловием. Любая из частей цикла for может быть опущена, при этом точки с запятой надо оставить на своих местах.

Если необходимо выполнение нескольких операторов в теле циклов, то их необходимо заключить в фигурные скобки {}.

Пример: вывод чисел от 1 до 10 с помощью цикла while, do while, for.

while:

int i=1;

while (i <= 10)

{

cout<<i<< « »;

i++;

}

cout<<endl;

i++;

do {

cout<<i<< « »;

i++;

} while (i<=10);

do while:

int i=1;

i++;

do {

cout<<i<< « »;

i++;

} while (i<=10);

for:

int s;

for ( int i=1, s=0 ; i <= 10 ; i++) s=s+i;

Операторные скобки

Если в условных и циклических конструкциях требуется выполнение не одного, а нескольких операторов, то их необходимо заключить в так называемые операторные скобки {} (как в Pascal begin и end).

 

 

Задачи

 

В – 1

1. Ввести с клавиатуры 3 параметра и вычислить их произведение, сумму.

2. Определить, чётным или нечётным является число, вводимое с клавиатуры.

3. Просуммировать набор из десяти целых чисел, начиная с 10-ти (с помощью for, while, do while).

 

В – 2

1. Составить программу, которая запрашивает у пользователя целое число и выводит квадрат, куб и пятую степень этого числа.

2. Определить, делится a на b нацело, если нет, найти остаток от деления.

3. Просуммировать набор чисел от 1 до 10 (с помощью for, while, do while).

 

В – 3

1. Составить программу, которая запрашивает у пользователя количество дней в текущем месяце и сегодняшнее число. Программа выводит сообщение о том, сколько дней осталось до конца текущего месяца.

2. Составить программу, которая запрашивает возраст и выводит сообщение: «ребёнок», «взрослый» или «пожилой человек».

3. Составить программу, которая бы спрашивала у пользователя число а и n, и возводила бы а n-раз в квадрат (с помощью for, while, do while).

 

В – 4

1. Составить программу, которая запрашивает у пользователя год его рождения и текущий год и выводит возраст пользователя.

2. Составить программу, которая запрашивает пользователя, в какой группе он учится, и выводит сообщение на каком он курсе.

3. Получить произведение чисел от 5 до 25 (с помощью for, while, do while).

 

В – 5

1. Найти объём коробка спичек, если длина, высот и ширина вводится пользователем.

2. Составить программу, которая спрашивает у пользователя число и месяц рождения и выводит знак зодиака.

3. Найти разность квадратов чисел от 10 до 15 (с помощью for, while, do while).

 

В – 6

1. Составить программу вычисления максимума M(n, p).

2. Решить уравнение ax2 + bx + c=0.

3. Найти произведение кубов чисел от 15 до 25 (с помощью for, while, do while).

 

В – 7

1. Составить программу, вычисляющую V усечённой пирамиды по формуле V=1/3(Q+q+ )h, Q,q – площади основания, h – высота

2. Составить программу, вычисляющую М=n-p, если n>p и M=p-n, если n<=p.

3. Найти разность кубов чисел от 5 до 16 (с помощью for, while, do while).

 

В – 8

1. Найти идеальный вес пользователя по формуле идеал_вес=рост-100.

2. Вывести на экран количество корней уравнения ax2+bx+c=0.

3. Ряд чисел от 1 до 10 возвести в квадрат и увеличить на единицу (с помощью for, while, do while).

В – 9

1. Найти среднее арифметическое пяти введённых параметров.

2. Составить программу, запрашивающую год рождения пользователя и текущий год, и выводящую возраст пользователя.

3. Найти произведение квадратов чисел от 16 до 30 (с помощью for, while, do while).

 

В – 10

1. Решить уравнение x=-y2-a.

2. Составить программу, запрашивающую у пользователя возраст ребёнка и выводящую, в каком классе он учится.

3. Ряд чисел от 10 до 20 возвести в куб и уменьшить на 10 (с помощью for, while, do while).

 

Лабораторная работа № 2

«Однородные структурные типы данных»

Цель:Научиться работать с одномерными, двумерными массивами и строками.

Одномерные массивы

Массив представляет собой структуру данных, которая позволяет одной переменной хранить несколько значений.

Объявление массива

Тип_прмн имя_масс[кол-во_элем];

Тип_прмнтип элементов массива;

имя_массимя массива;

кол-во_элемколичество элементов массива;

Пример:

float massiv1[10];// массив из 10 вещественных чисел

int massiv2[20];// массив из 20 целых чисел

Инициализация массива

При объявлении массива можно присвоить начальные значения элементам массива. Если при объявлении массива используется список инициализаций, то размер массива указывать необязательно:

int mas[]={1,2,3,4,5,8}// длину массива компилятор вычисляет по количеству начальных значений

Если размер массива указан явно, то количество начальных значений не может быть больше количества элементов массива. Если количество начальных значений меньше, чем объявленная длинна массива, то начальные значения получат только первые элементы массива:

int mas[8]={1,2,3};

Для обращения к элементу массива необходимо указать имя массива и номер нужного элемента:

massiv1[1], massiv2[19]

Важно помнить, что С++ всегда использует 0 для индекса первого элемента массива, а индекс последнего элемента на единицу меньше размера массива. Например, для массива massiv2 (см. пример 1) обращение к 20-му элементу массива massiv2[20]=1, вызовет ошибку времени выполнения программы. То есть компилятор эту ошибку «пропустит» (не выдаст сообщение об ошибке), а во время выполнения программы произойдёт сбой.

Пример: Заданы два вектора в пространстве размерности 10. Координаты вектора вводятся с клавиатуры. Найти скалярное произведение векторов.

Многомерные массивы

Многомерные массивы представляют собой массив массивов и задаются указанием каждого измерения.

Объявление многомерного массива:

int matrical[5][5];

Инициализация многомерного массива:

1. каждый из массивов заключается в фигурные скобки (в этом случае левую размерность при описании можно не указывать)

int mat1[][2]={{1,1},{2,2},{3,3}};

2. общий список элементов в том порядке, в котором элементы располагаются в памяти

int mat2[3][2]={1,1,0,2,2,3};

Для доступа к элементу многомерного массива указываются его индексы: matrica[1][1].

Пример: Задание случайным образом значений в диапазоне от 0 до 20 элементов одномерного и двумерного массивов и вывод на экран.

Void main()

{int mas_1[10]

int mas_2[5][5];

for (int i=0; i<10; i++){

//srand (time(0));

mas_1[i]=rand()%20;

cout<<mas_1[i]<<” ”;

}

cout<<endl;

for(int i=0; i<5; i++){

for(int j=0; j<5; j++){

mas_2[i][j]=rand()%20;

cout<<mas_2[i][j]<<” ”;

}

cout<<endl;

}

}

 

 

Задачи

В – 1

1. Вычислить сумму векторов a и b.

2. Найти произведение квадратных матриц A и B.

 

В – 2

1. Вычислить произведение векторов.

2. Найти сумму матриц A[i, j] и B[i, j].

 

В – 3

1. Найти произведение вектора a размерности n и матрицы B размерности m´n.

2. Найти произведение матриц A[n, m] и B[n, m].

 

В – 4

1. Возвести все элементы вектора в квадрат.

2. Найти разность матриц A[n, m] и B[n, m]. Элементы получившейся матрицы увеличить на 2.

 

В – 5

1. Найти разность векторов a и b. Элементы получившегося вектора увеличить на 3.

2. Возвести все элементы матрицы A[n, m] в квадрат.

 

Лабораторная работа № 3

«Неоднородные структурные типы данных»

(типы данных, определяемые пользователем)

Цель:Познакомиться с перечислениями, структурами и объединениями, научиться создавать и использовать собственные типы данных.

Перечисления

При использовании большого количества логически взаимосвязанных констант удобно пользоваться перечислениями.

Объявление перечисления:

enum имя_перечисления{конст1, конст2, конст3,…};

Объявление переменной типа перечисления:

Если имя перечисления описано выше, то можно объявить переменную типа перечисления так:

имя_перечисления имя_переменной;

Можно указывать имя сразу после описания перечисления

enum имя_перечисления{конст1, конст2, конст3,…} имя_переменной;

Пример:

Предположим, что необходимо в программе описать работу светофора. Известно, что его цвет может принимать лишь три значения: красный (Red), жёлтый (Yellow) и зелёный (Green). Для обработки полученных от светофора сигналов заведём три константы с такими же именами – Red, Yellow, и Green, проинициализировав их любыми неповторяющимися значениями с тем, чтобы в дальнейшем проверять, какой из этих трёх цветов горит.

Например, мы могли бы записать:

Const int Red = 0;

Const int Yellow = 1;

Const int Green = 2;

Используя перечисления тоже самое можно сделать в одну строку:

enum COLOR { Red, Yellow, Green};

Константы перечисления обладают следующей важной особенностью: если значение константы не указано, оно на единицу больше значения предыдущей константы. По умолчанию первая константа имеет значение ноль.

То же перечисление можно было проинициализировать другими значениями:

enum COLOR {Red = 13, Yellow = 1, Green};

При этом константа Green по-прежнему имеет значение 2.

Сруктуры (или по другому записи)

Структуры позволяют группировать связанные части информации различных типов в одной переменной появляется возможность лучше представлять объекты, состоящие из двух или более частей, например, информация о служащих, книгах и т.д.

Объявление структуры:

struct имя_структуры

{

тип_прмн1 имя_поля1;

тип_прмн2 имя_поля2;

};

Объявление переменной типа структуры:

Если имя структуры описано выше, то можно объявить структурную переменную так

имя_структуры имя_переменной;

Можно указывать имя структурной переменной сразу после описания структурного типа (структуры), при этом имя структурного типа указывать не обязательно

struct

{

тип_прмн1 имя_поля1;

тип_прмн2 имя_поля2;

} имя_перемен;

Использование переменной структурного типа в программе языка программирования С++ (обращение к полям структуры):

имя_прмн1 имя_поля1;

имя_прмн2 имя_поля2;

Пример: Описать тип данных комплексные числа. В программе с клавиатуры задать значения двум комплексным числам и посчитать их сумму.

Struct Tcomplex

{

float re, im;

} a, b, c;

// ввод числа a

cout<<”vvedite deystvitelnyu chast 1-go komplexnogo chisla”;

cin>>a.re;

cout<<endl;

cout<<”vvedite mnimyu chast 1-go komplexnogo chisla”;

cin>>a.im;

cout<<endl;

// ввод числа b

cout<<”vvedite deystvitelnyu chast 2-go komplexnogo chisla”;

cin>>b.im;

// сумма чисел a и b

c.re=a.re+b.re;

c.im=a.im+b.im;

//вывод числа с

cout<<”summa chisel”<<c.re<<”+”<<c.m<<”i”;

 

Объединения

Объявление объединения:

union имя_объединения

{

тип_прмн1 имя_прмн1;

тип_прмн2 имя_прмн2;

};

Объявление переменной типа объединения:

имя_перемен.имя_поля1;

имя_перемен.имя_поля2;

Пример:

union Rastoyn

{

int miles;

long meters;

};

Rastoyn t;

t.miles=5;

cout<<”Пройденное расстояние в милях”<<t.miles<<endl;

t.meters=10 000;

cout<<”Пройденное расстояние в метрах”<<t.meters<<endl;

 

 

Задачи

В – 1

1. Описать структуру с именем STUDENT, содержащую следующие поля:

• NAME - фамилия и инициалы;

• Номер группы;

• Успеваемость (массив из пяти элементов).

2. Написать программу, выполняющую следующие действия:

• Ввод с клавиатуры данных в массив, состоящий из десяти структур типа STUDENT; записи должны быть упорядочены по возрастанию номера группы;

• Вывод на дисплей фамилий и номеров групп для всех студентов, включённых в массив, если средний балл студента больше 4,0;

• Если таких студентов нет, вывести соответствующее сообщение.

В – 2

1. Описать структуру с именем AEROFLOT, содержащую следующие поля:

• Название пункта назначения рейса;

• Номер рейса;

• Тип самолёта.

2. Написать программу, выполняющую следующие действия:

• Ввод с клавиатуры данных в массив, состоящий из семи элементов типа AEROFLOT; записи должны быть упорядочены по возрастанию номера рейса;

• Вывод на экран номеров рейсов и типов самолётов, вылетающих в пункт назначения, название которого совпало с названием, введённого с клавиатуры;

• Если таких рейсов нет, вывести соответствующее сообщение.

 

 

Лабораторная работа № 4

«Функции»

Цель:познакомиться с объявлением и определением функций.

Функция представляет собой набор связанных операторов, которые выполняют некоторую задачу, и определяются вне тела основной программы. Функция начинает выполняться в момент вызова. Любая функция должна быть объявлена и определена.

Объявление функции:

Объявление функции (заголовок, прототип) – объявление типа выходного параметра, имени функции и типов входных аргументов (параметров).

тип_вых_пар имя_функ(список параметров);

тип_вых_пар – тип возвращаемого функцией значения, может быть любым, кроме массива и функции (но может быть указателем на массив или функцию). Если функция не должна возвращать значения, указывается тип void.

список параметров определяет величины, которые требуется передать в функцию при её вызове. Элементы списка параметров разделяются запятыми. Для каждого параметра указывается его тип и имя (в объявлении имена можно опускать).

Объявление функции должно находиться в тексте программы раньше её вызова, как правило до функции main.

Пример: Объявить функцию вычисления значения выражения, зависящего от двух переменных целого типа.

float funk (int, int);// объявление функции

void main()//главная функция (основная программа)

{…}

Определение функции:

Определениефункции – описание параметров, содержащихся в функции. Определение функции в тексте программы, как правило размещается после функции main. Указание имён формальных параметров, передаваемых в функцию, обязательно. Если функция возвращает значение, то необходимо в описании добавить оператор return.

Пример:Определить функцию, объявленную в примере 1.

#include <math.h>

float funk (int, int); //объявление функции

void main()// главная функция (основная программа)

{…}

float funk (int a, int b) //определение функции

{

return sqrt(a*a+b*b);

}

Вызов функции:

Для вызова функции необходимо указать её имя, за которым в круглых скобках через запятую перечисляются имена передаваемых аргументов. Если тип возвращаемого значения функции не void, она может входить в состав выражений или располагаться в правой части оператора присваивания.

Пример:

#include <math.h>

float funk (int, int); //объявление функции

 

void main()// главная функция (основная программа)

{

int val1, val2;

cin<<val1;

cin<<val2;

cout>> funk(val1, val2)<<endl;//вызов функции

float a = 1+funk(5,5);//вызов функции

cout>>a;

}

 

float funk(int a, int b)//определение функции

{

return sqrt(a*a+b*b);

}

В объявлении и в определении при вызове одной и той же функции типы и порядок следования параметров должны совпадать.

Существует два способа передачи параметров: по значению и по адресу.

При передаче по значению в стек заносятся копии значений аргументов, и операторы функции работают с этими копиями. Доступа к исходным значениям параметров у функции нет, следовательно нет возможности их изменить. В примерах 1, 2, 3 аргументы передаются по значению.

При передаче по адресу в стек заносятся копии адресов аргументов, а функция осуществляет доступ к ячейкам памяти по этим адресам и может изменить исходные значения аргументов. Адрес параметра можно передать в функцию с помощью унарного оператора адреса &:

Пример:Реализовать функцию обмена значениями двух переменных целого типа.

void obmen(int &a, int &b);

void main()

{

int c=2, d=3;

cout>>c>>endl;

cout>>d>>endl;

obmen(c,d);

cout>>c>>endl;

cout>>d>>endl;

}

void obmen(int &a, int &b)

{

int x=a;

a=b;

b=x;

}