русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

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

Циклы

Цикл — это блок программы, который необходимо повторить несколько раз. Исторически первые циклы организовывались при помощи оператора безусловного перехода  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 работает в такой последовательности:

  • Присваивается начальное значение счётчику ( и другие начальные значения);
  • Вычисляется значение выражения на условия продолжения цикла;
  • Если условие возвращает true, то сначала выполняется тело цикла, а затем заданная операция с счётчиком.
  • шаги 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 байта.

Просмотров: 19088

Вы можете --> Заказать программу или Задать вопрос на форуме

Вернуться воглавление


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Полезен материал? Поделись:

Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.