Оператор ветвления if.

Логические операторы.

Схема if( (x==5)

If (условие) выражение;

If(условие)

{

Выражение 1;

Выражение 2;

}

Else

{

Выражение 3;

Выражение 4;

}

Логические операторы.

Оператор Символ А С Результат
И && T T F F T F T F T F F F
ИЛИ || T T F F F T T F T T T F
НЕТ ! T F   F T

Возможна запись: (выражение 1)?(выражение 2): (выражение 3);

Пример

#include<iostream.h>

Int main(void)

{

Int fistNumb,secondNumb;

cout <<"Введите два числа\nПервое:";

cin >>fistNumb;

cout <<"\nВторое:";

cin >>secondNumb;

cout <<"\n";

if(fistNumb >= secondNumb)

{

if((fistNumb%secondNumb)==0)

{

if(fistNumb==secondNumb)

cout<<"Число "<<fistNumb<<" равно "<<secondNumb<<"\n";

Else

cout<<"Число "<<fistNumb<<" делится без остатка на "<<secondNumb<<"\n";

}

Else

cout<<"Число "<<fistNumb<<" не делится без остатка на "<<secondNumb<<"\n";

}

Else

cout<<"Число "<<fistNumb<<" меньше чем "<<secondNumb<<"\n";

Return 0;

}


 

Лекция № 1.Циклы. Счётчики. Указатели. память. размещение объектов в области динамической памяти. ссылки. Адреса. передача аргументов функции как ссылок. возвращение нескольких значений.

Циклы.

Цикл — это блок программы , который необходимо повторить несколько раз. Исторически первые циклы организовывались при помощи оператора безусловного перехода goto;

#include <iostream.h>

Int main(void)

{

int i=0;

loop: i++;

cout << "счётчик ="<<i<<"\n";

if(i<5)

Goto loop;

cout <<"конец работы\n";

Return 0;

}

Использование оператора goto позволяет написать так называемую “спагетти” плохо читаемую и организованную программу. Поэтому последние 20 лет преподаватели убеждают студентов не использовать этот оператор.

Следующим появился оператор while .в нём выполнение последовательность операторов повторяется пока условие в скобках истино.

#include <iostream.h>

Int main(void)

{

int i=0;

while(i<5)

{

cout <<"счётчик = "<<i<<"\n";

i++;

}

cout <<"конец работы\n";

Return 0;

}

Та же программа написанная при помощи while().

Для того чтобы перейти на следующую итерацию цикла используется оператор continue, для прерывания цикла окончательно — break.

С этой конструкцией возможно выполнение бесконечного цикла while(true),прерывание выполнения происходит в этом случае только по оператору break, если вы его забыли программа никогда не остановиться.

Для того? чтобы условие проверялось после выполнения цикла, используют конструкцию do … while. Например расчёт суммы бесконечного ряда с точностью до eps=0.0003.(дом. Работа).

Оператор for позволяет объединить несколько операций по определению цикла в одной строке for(I=0;I<10;I++)

#include <iostream.h>

Int main(void)

{

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

cout <<"счётчик = "<<i<<"\n";

cout <<"конец работы\n";

Return 0;

}

Цикл for работает в такой последовательности:

1. Присваивается начальное значение счётчику ( и другие начальные значения);

2. Вычисляется значение выражения на условия продолжения цикла;

3. Если условие возвращает true, то сначала выполняется тело цикла, а затем заданная операция с счётчиком.

4. шаги 2 и 3 повторяются на каждой итерации цикла.

#include <iostream.h>

Int main(void)

{int I,j;

for ( i=0,j=0;i<3;i++,j++)

cout <<"i= "<<i<<" j="<<j<<"\n";

I=j=10;

cout <<”I=”<<I<<” j=”<<j<<”\n”;

cout <<"конец работы\n";

Return 0;

}

Область видимости счётчика цикла: в случае если счётчик описан в операторе цикла, то он существует только в теле цикла, после выполнения цикла эта переменная перестаёт существовать для компилятора, что бы этого не произошло необходимо описывать счётчики, в блоке описания переменных.

Оператор switch.

Оператор множественного ветвления.

#include <iostream.h>

 

Int main(void)

{ int number;

cout <<"ВВедите число между 1 и 5: ";

cin >> number;

cout <<"\n";

Switch(number)

{

case 0: cout<<" Очень мало извините!\n";break;

case 2: cout<<"Уже лучше.\n";

case 3: cout<<"Просто хорошо.\n";

case 4: cout<<"Замечательно!\n";

case 5: cout<<"Класс!!!\n";

case 1: cout<<"Едва хватит!\n";break;

default: cout<<"Слишком много, так не бывает\n";break;

}

Return 0;

}

Указатели.

Указатель — это переменная, в которой записан адрес ячейки памяти.

Так как указатель это обычная переменная, то имена им даются такие же, иногда программисты добавляют к ним букву «р». (pNumber).

Что бы объявить указатель, запишите тип переменной на которую будет указывать указатель, затем символ *, а за ним имя указателя.

Что бы присвоить указателю адрес переменной необходимо использовать символ &.

Что бы получить результат по адресу, куда ссылается указатель (разименовать) перед именем указателя ставиться *.

int *a,b,c=0;

b=5;

a=&b;

c=(*a)+1;

*a=7;

результат:

b=7;

c=6;

ошибка:

c=*(a+1);

 

Наиболее часто указатели используются для:

§ Размещения данных в свободных областях памяти и доступа к ним.

§ Доступам к переменным и функциям классов.

§ Передачи параметров функции по ссылке и получении более, чем одного результата.

§ Работы с массивами.

Существует условное разделение памяти с которой работает программа на несколько областей:

§ Область глобальных переменных.

§ Свободная или динамически распределённая память.

§ Регистровая память.

§ Сегменты программы.

§ Стековая память.

Локальные переменные и параметры функций располагаются в стековой памяти, программный код храниться в сегментах, глобальные переменные в области глобальных переменных. Локальные переменные — это переменные которые «видит» только часть программы, глобальные — доступны из любой точки программы. Свободная память распределяется между динамическими объектами. Ячейкам динамической памяти нельзя присвоить имя (если это произойдёт, то это уже стековая память), к ним можно обратиться по адресу, к тому же адрес можно передать в любую область программы, следовательно данные, хранящиеся по этому адресу доступны везде.

Использование указателей в языке С может привести в ситуации, когда оператор изменяет адрес в указателе и таким образом значение будет потеряно. С++ предлагает альтернативу указателям, путём использования ссылок. Чтобы сделать переменную ссылкой, после типа надо поставить & .

Int I;

Int &ri=I; —это ссылка наI,ссылка обязательно должна быть инициализирована, то есть иметь значение, то есть куда-то ссылаться, однажды инициализировав ссылку ей нельзя присвоить другое значение. Нельзя ri=j; так как ri— это синоним i.

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

 

Для выделения памяти в области динамического распределения используется оператор new . Для этого подходит строка (тип данных — int) :

Int *page = new int;

Когда память, выделенная под динамическую переменную больше не нужна, то её следует освободить оператором delete имя переменной. При этом переменная указатель сохраняется, но она больше не указывает ни на какой сегмент памяти. Двойное применение delete к одному и тому же указателю приводит к зависанию программы. Поэтому рекомендуется после оператора delete , удалённому указателю присваивать значение 0. С указателями можно производить арифметические действия.

Int *a, b, *c;

*a=b;

c=a++;

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


Лекция № 2.Функции. Объявление и определение функции. выполнение функции. Локальные и глобальные переменные. Аргументы функции — фактические и формальные. Перегрузка функций. возвращаемые значения. Массивы.

Функции.








Дата добавления: 2015-12-26; просмотров: 566;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.03 сек.