Информатика 1 курс радиотехнического факультета Воронежского института МВД России (Курс лекций) Воронеж – 2011.

Презентация:



Advertisements
Похожие презентации
Информатика (курс лекций) Воронеж-2011 специальность – Инфокоммуникационные технологии и системы специальной связи (специализация 7 Организация.
Advertisements

Практическое занятие 6. Функции. Большинство языков программирования используют понятия функции и процедуры. C++ формально не поддерживает понятие процедуры,
Основы информатики Лекция. Функции Заикин Олег Сергеевич
Инструкции C++ Условная инструкция Формат: if (условие) оператор; else оператор; Пример: if (i!=0) { if (j) j++; if(k) k++; else if(p) k--; } else i--;
Переменные и операторы УРОК 2. Переменные ПЕРЕМЕННАЯ – ?... контейнер для хранения данных. Переменная имеет имя – это….? последовательность букв, цифр.
Введение в C++ Урок 3-4. ОПЕРАТОРЫ ЦИКЛА Операторы цикла используются для организации многократно повторяющихся вычислений. - цикл с предусловием while,
1 Циклы и выражения сравнения. 2 Компьютеры предназначены не только для хранения данных. Они анализируют, объединяют, реорганизуют, извлекают, видоизменяют,
Министерство образования Республики Беларусь Белорусский государственный университет Управляющие структуры языков программирования.
УКАЗАТЕЛИ. Переменная - это именованная область памяти с заданным типом. [=значение]; int a; //Переменная типа integer с именем a int b=2;// Переменная.
ПРОЦЕДУРЫ И ФУНКЦИИ CPascal Подпрограмма – группа операторов реализующая законченный алгоритм и оформленная как самостоятельная синтаксическая единица.
Функции Функция – именованная последовательность описаний и операторов, выполняющая некоторое действие. Может иметь параметры и возвращать значение. Функция.
©ρŧą Базовые конструкции языка.
Вводный курс в С++ Занятие 1 Олег Власенко Заместитель директора ООО СимбирСофт Старший.
Лекция 2Лекция 2Структура программы Директивы препроцессора main () { Описания переменных Операторы }
Лекция 3 ПЕРВЫЕ ПРОГРАММЫ, ВВОД/ВЫВОД В ЯЗЫКЕ С++
Циклы в C++. Иногда необходимо повторять одно и то же действие несколько раз подряд. Для этого используют циклы. В этом уроке мы научимся программировать.
Лекция 6 Функции. Объявления и определения Объявление функции – указание имени функции, а также входных и выходных параметров Определение функции – указание.
Лекция 6 Функции. Объявления и определения Объявление функции – указание имени функции, а также входных и выходных параметров Определение функции – указание.
Лекция 3 по дисциплине «Программные средства математических расчетов» тема: «Операторы циклов и работа с массивами в С++» гр. 8Е31 Мамонова Татьяна Егоровна.
Лекция 9 Функции. Массивы-параметры функции Передача массива в функцию Пример: void array_enter(int a[], int size) { int i; for (i = 0; i < size; i++)
Транксрипт:

Информатика 1 курс радиотехнического факультета Воронежского института МВД России (Курс лекций) Воронеж – 2011

Мишин Сергей Александрович Воронежский институт МВД России Тематический модуль 9 «Языки программирования высокого уровня. Процедурно-ориентированное программирование на С++» Тема 3 «Циклы в программах на С++. Обработка массивов в языке С++. Объявление и использование указателей в С++ » Лекция 1 «Циклы в программах на С++. Обработка массивов в языке С++. Объявление и использование указателей в С++» Учебные и воспитательные цели: 1. Изучение работы операторов цикла for, while, do … while; описания одномерных и многомерных массивов в С Изучение работы с памятью ЭВМ при помощи указателей.

Мишин Сергей Александрович Воронежский институт МВД России Учебные вопросы: 1. Циклы в программах на С++ 2. Объявление и использование указателей в С++ 3. Функции в программах на С++

Мишин Сергей Александрович Воронежский институт МВД России Литература: основная: 1. Литвиненко Н.А. Технология программирования на С++. Начальный курс.- СПб.: БХВ-Петербург, с. 2. С++: процедурно-ориентированное программирование: учебное пособие / Авт.- сост. О.И. Каляпина, С.А. Мишин. - Воронежский институт МВД России, – 174 с.

Мишин Сергей Александрович Воронежский институт МВД России Литература: дополнительная: 3. Прата С. Язык программирования С++. Лекции и упражнения. Учебник.- DiaSoft, 2003 – 1096 с. 4. Павловская Т.А., Щупак Ю.А. С++. Объектно- ориентированное программирование: Практикум. – СПб.: Питер, с. 5. Каляпина О.И. Учебная практика по дисциплине «Информатика»: решение инженерных задач с помощью MathCAD и языка программирования С++/ О.И. Каляпина, М.В. Питолин, С.А. Мишин. – Воронеж: Воронежский институт МВД России, – 161 с.

Мишин Сергей Александрович Воронежский институт МВД России 1. Циклы в программах на С++ Формат оператора: for (инициализация; условие продолжения цикла; обновление переменной цикла) выражение; Действие Нет Да Цикл с предусловием

Мишин Сергей Александрович Воронежский институт МВД России Пример: #include using namespace std; int main() { int i; // Создание счетчика // Инициализация, проверка и // обновление счетчика for (i = 0; i < 5; i++) cout << "C++ knows loops.\n"; cout << "C++ knows when to stop.\n"; return 0 ; }

Мишин Сергей Александрович Воронежский институт МВД России

Пример: int main() { cout << "Enter the starting value: "; int limit; cin >> limit; int i; for (i = limit; i; i--) //Выйти из // цикла, когда i=0 cout << "i = " << i << "\n"; cout << "Done now that i = " << i << "\n"; return 0; }

Мишин Сергей Александрович Воронежский институт МВД России

Пример: for (int i = 0; i < 5; i++) cout << "C++ knows loops.\n"; cout << i << endl; // переменная i больше не // существует

Мишин Сергей Александрович Воронежский институт МВД России Пример: int main ( ) { cout << "Enter an integer: "; int by; cin >> by; cout << "Counting by " << by << "s:\n"; for (int i = 0; i < 100; i = i + by) cout << i << "\n"; return 0; }

Мишин Сергей Александрович Воронежский институт МВД России

Операторы инкремента (++) и декремента (--) префиксном до постфиксном после Существует две разновидности каждого из операторов: в префиксном варианте изменение значения выполняется до обработки операнда, как, например, в выражении ++х; а в постфиксном после, как, например, в выражении х++.

Мишин Сергей Александрович Воронежский институт МВД России Операторы инкремента (++) и декремента (--) int main() { int a = 20; int b = 20; cout << "а = "<< а << ": b = " << b << "\n"; cout << "а++ = " << а++ << ": ++b = " << ++b << "\n"; cout << "а = " << а << ": b = " << b << "\n"; return 0; }

Мишин Сергей Александрович Воронежский институт МВД России

Оператор "запятая" for (j = 0, i = 10; j < i; i-, j++) j++, i--; //оба выражения считаются // единым выражением // с точки зрения синтаксиса int i,j; // здесь запятая является // разделителем, а не оператором

Мишин Сергей Александрович Воронежский институт МВД России Цикл while while (условие продолжения цикла) выражение; Цикл с предусловием

Мишин Сергей Александрович Воронежский институт МВД России Пример: int main ( ) { cout << "Enter an integer: "; int x; cin >> x; while (x<=10) x+=2; cout << "x=" << x<<"\n"; return 0; } Вопрос: X=5; x=10; x=20?

Мишин Сергей Александрович Воронежский институт МВД России X=5 -> x=11, X=10-> x=12, X=20 x->20

Мишин Сергей Александрович Воронежский институт МВД России Пример: int main ( ) { cout << "Enter an integer: "; int x; cin >> x; while (x<=10) X-=2; cout << "x=" << x<<"\n"; return 0; } Вопрос: X=5?

Мишин Сергей Александрович Воронежский институт МВД России X=5 -> x= (INT_MAX )

Мишин Сергей Александрович Воронежский институт МВД России Сравнение циклов for и while for (инициализация цикла; условие продолжения цикла; обновление переменной цикла) { оператор (ы); } инициализация цикла; while (условие продолжения цикла) { оператор (ы); обновление переменной цикла; }

Мишин Сергей Александрович Воронежский институт МВД России Сравнение циклов for и while Домашнее задание. Переписать программу, используя while. int main ( ) { cout << "Enter an integer: "; int by; cin >> by; cout << "Counting by " << by << "s:\n"; for (int i = 0; i < 100; i = i + by) cout << i << "\n"; return 0; }

Мишин Сергей Александрович Воронежский институт МВД России Сравнение циклов for и while for ( ; условие продолжения цикла; ) тело цикла Для цикла for необходимы три выражения (или, точнее, один оператор с двумя пос­ледующими выражениями), однако эти выражения (или операторы) могут быть пустыми. Обязательно лишь наличие двух точек с запятой. В этой связи пропуск условия продолжения в цикле for истолковывается как истинное значение, и поэтому цикл for ( ; ; ) тело цикла выполняется бесконечно.

Мишин Сергей Александрович Воронежский институт МВД России Сравнение циклов for и while for ( ; условие продолжения цикла; ) тело цикла Для цикла for необходимы три выражения (или, точнее, один оператор с двумя пос­ледующими выражениями), однако эти выражения (или операторы) могут быть пустыми. Обязательно лишь наличие двух точек с запятой. В этой связи пропуск условия продолжения в цикле for истолковывается как истинное значение, и поэтому цикл for ( ; ; ) тело цикла выполняется бесконечно.

Мишин Сергей Александрович Воронежский институт МВД России Сравнение циклов for и while i = 0; while (name[i]!='\0'); //ошибка, связанная с применением //точки с запятой { cout << name[i] << "\n"; i++; } cout << "Done\n";

Мишин Сергей Александрович Воронежский институт МВД России Цикл do while do тело цикла while (условие продолжения цикла); Действие Условие Да Нет Цикл с постусловием

Мишин Сергей Александрович Воронежский институт МВД России int main() { int n; cout << "Enter numbers in the range 1-10 "; cout << "my favorite number\n"; do { cin >> n; // выполнить тело цикла } while (n != 7); // затем осуществить проверку cout << "Yes, 7 is my favorite.\n" ; return 0; }

Мишин Сергей Александрович Воронежский институт МВД России

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

Мишин Сергей Александрович Воронежский институт МВД России 3. Объявление и использование указателей в С++ Указатель (pointer) это переменная, содержащая адрес области в оперативной памяти компьютера.

Мишин Сергей Александрович Воронежский институт МВД России Оператор получения адреса &, который возвращает адрес своего операнда. Например, пусть переменная inf расположена в памяти компьютера по адресу 503, тогда после выполнения оператора pinf = &inf; в переменную pinf будет помещено значение 503. Т.е. в данном примере, переменная pinf является указателем на переменную inf.

Мишин Сергей Александрович Воронежский институт МВД России В языке C++ все переменные должны быть предварительно объявлены. Объявление указателя выглядит следующим образом, например: short int *pinf=0; Пример: short int inf = 6; short int *pinf = 0; pinf = &inf;

Мишин Сергей Александрович Воронежский институт МВД России short int inf = 6; // объявить переменную short int *pinf = &inf; // объявить указатель на нее

Мишин Сергей Александрович Воронежский институт МВД России Доступ к значению переменной Оператор косвенного доступа (*) называется также оператором разыменования адреса, или ссылкой (dereference). При извлечении значения из указателя будет возвращено то значение, которое хранится по адресу, содержащемуся в указателе. int prz, inf = 3; // прямой доступ к переменной prz = inf; int prz=0, inf = 3; int *pinf=&inf; prz = *pinf; // косвенный доступ к переменной

Мишин Сергей Александрович Воронежский институт МВД России int main() { int *p_int=0; double *p_double=0; int an_int=8; double an_doub=9.15; p_int=&an_int; p_double=&an_doub; cout << "p1=" << p_int <<endl; cout << "p2=" << p_double <<endl; p_int++; p_double++; cout << "p1=" << p_int <<endl; cout << "p2=" << p_double <<endl; cout << endl; return 0; } увеличили на 4 и на 8 соответственно

Мишин Сергей Александрович Воронежский институт МВД России 4. Функции в программах на С++ Функция это подпрограмма, которая может оперировать данными и возвращать значение.

Мишин Сергей Александрович Воронежский институт МВД России Применение функций с возвращаемым значением Функция, имеющая возвращаемое значение, в результате своей работы выдает значение, которое можно присвоить переменной. Например, в стандартную библиотеку C/C++ входит функция sqrt(), возвращающая квадратный корень числа. Предположим, что требуется вычислить квадратный корень числа 6,25 и присвоить полученное значение переменной х. Для этого в программе можно использовать такой оператор: х = sqrt(6.25); // возвращает значение 2,5 и // присваивает его переменной х аргумент вызов функции

Мишин Сергей Александрович Воронежский институт МВД России #include using namespace std; #include // или math.h int main() { double c; // вещественные числа типа //удвоенной точности cout "; cin >> c; double side; //создать еще одну переменную side = sqrt(c); // вызвать функцию и // присвоить знач.перемен. cout <<"\nsquare("<< c <<") = "<< side; cout << "\n"; return 0; }

Мишин Сергей Александрович Воронежский институт МВД России double pow(double, double); // прототип функции с двумя аргументами Пример, answer = pow(5.0, 8.0); // 5 8 int rand(void); // случ. целое число //прототип функции, не принимающей аргументов Пример, myGuess = rand(); // вызов функции, не имеющей аргументов тип возвращаемого значения функции

Мишин Сергей Александрович Воронежский институт МВД России

void bucks(double); // прототип функции, не имеющей возвращаемого // значения. Выводит значение на эк­ран, а не посылает в // вызывающую программу. // Если передать функции, скажем, аргумент 23.5, то она отобразит на экране $ bucks( ) // вызов функции, возвращаемое значение отсутствует В некоторых языках программирования термин функция (function) зарезервирован для функций с возвращаемым значением, а для функций без возвращаемого значения используется термин процедура (procedure) или подпрограмма (subroutine). Применение функций, у которых отсутствует возвращаемое значение

Мишин Сергей Александрович Воронежский институт МВД России Объявление и определение функций Существуют три способа объявления функций: прототип функции можно записать в файл, а затем, используя директиву #include, включить его в текст программы; прототип функции можно записать в тот файл, где эта функция применяется; функция должна быть определена до того, как её вызовет любая другая функция. В этом случае определение выступает в качестве объявления. Объявление функции вместе с параметрами называется прототипом. Функции, определяемые пользователем

Мишин Сергей Александрович Воронежский институт МВД России В соответствии со стандартом ANSI любая функция должна иметь прототип, то есть заранее объявленный заголовок, где задано имя функции, а также указаны типы аргументов и возвращаемого значения. Формат объявления функции: тип_результ имя_функц (тип_аргумента необязат_имя_аргумента); Пример, double my_g (double); double my_summa (const double, int kol); void vyvod_stolbec (int M[ ], int k); Объявление функции Прототипы функций

Мишин Сергей Александрович Воронежский институт МВД России Формат определения функции тип_рез имя функции(тип_аргумента имя аргумента) { … тело функции … return (); } Определение функции Заголовок функции

Мишин Сергей Александрович Воронежский институт МВД России Заголовки функций: void simon(int n) Вызов данной функции: simon(3); //правильно для функций без возвращаемого значения simple = simon(3); // недопустимо!!! Переменная n в данном случае называется формальным параметром, а подставляемое вместо нее значение (3) называется фактическим параметром. double kgpud (int); // с возвращающим значением Заголовок функции

Мишин Сергей Александрович Воронежский институт МВД России Аргументы функции могут быть различных типов. Можно написать функцию, которая, например, получает в качестве аргументов одно значение типа int, два значения типа long и один символьный аргумент, Любое допустимое выражение C++ может быть аргументом функции: включая константы, математические и логические выражения, а также другие функции, которые возвращают значение. Правда, такой стиль программирования затрудняет чтение программы и её отладку. Аргументы функции

Мишин Сергей Александрович Воронежский институт МВД России #include using namespace std; double kgpud (int); // прототип функции int main() { int kg; cout << "Enter the weight in kg: "; cin >> kg; double pud = kgpud(kg); cout << kg << " kg are "; cout << pud << " puds. \n"; return 0 ; } double kgpud (int kg) { return kg/16.; }

Мишин Сергей Александрович Воронежский институт МВД России В результате выполнения программы мы получим следующие результаты: Enter the weight in kg: kg are 4. puds. Можно избрать другой способ: double kgpud (int kg) { double puds = kg/16.; return puds; }

Мишин Сергей Александрович Воронежский институт МВД России По значению: double my_g (double x); Когда в качестве аргумента по значению передается переменная, функция получает копию фактического содержимого переменной. При такой передаче переменной-аргумента в функции создается локальная переменная с именем аргумента, в которую записывается его значение. В теле функции может измениться значение этой локальной переменной, но не самого аргумента. Основным недостатком такого способа является то, что функция, как правило, возвращает только одно значение. Способы передачи аргументов

Мишин Сергей Александрович Воронежский институт МВД России include "stdafx.h" #include #include "math.h" double my_g (double); int main() { using namespace std; double x; cout << "Vvedite x="; cin >> x; if ((2*x+2<0) || (x==2)) cout << "x=" << x <<" ne vhodit v ODZ funkcii y(x)\n"; else cout <<"Pri x="<< x <<" y="<< my_g(x) <<endl; return 0;} double my_g (double x0) { double y=sqrt(2*x0+2)*cos(x0)-log(4*x0*x0+3)/(x0-2); return y; }

Мишин Сергей Александрович Воронежский институт МВД России По ссылке: double my_summa (const double, int *kol); В случае передачи переменной-аргумента по ссылке функция получает адрес аргумента, а не его значение. Создаваемая при этом локальная переменная является указателем. Следует отметить, что при таком подходе экономно расходуется память. Особенность этого метода состоит в том, что функция может возвращать сразу несколько значений тому процессу, из которого она вызвана: как через аргументы-ссылки, так и непосредственно через инструкцию return. Способы передачи аргументов

Мишин Сергей Александрович Воронежский институт МВД России #include "stdafx.h" #include #include "math.h" double my_summa (const double, int *kol); using namespace std; int main() {int n=0; cout << "Summa S="<< my_summa(0.01, &n) << endl; cout << "Kol-vo chlenov rayda n=" << n << endl; return 0; } double my_summa (const double eps, int *n) {double sum=0, an; do {(*n)++; an=pow(-1.0,*n)/(2+(*n)*(*n)*(*n)); sum+=an;} while (fabs(an)>=eps); return sum; }

Мишин Сергей Александрович Воронежский институт МВД России Возвращаемые значения функции Функции возвращают либо реальное значение, либо значение типа void, которое служит сигналом для компилятора, что никакое значение возвращено не будет. Чтобы обеспечить возврат значения из функции, напишите ключевое слово return, а за ним значение, которое должно быть возвращено. В качестве результата можно задавать как значения константы, так и целые выражения и переменные, например: return (5); return (x > 5); return (MyFunction()); return (M_sum);

Мишин Сергей Александрович Воронежский институт МВД России Выводы (Summary): Циклы For, While, Do … While. Массивы в С++. Указатели в С++.

Мишин Сергей Александрович Воронежский институт МВД России Задание на самоподготовку: I. Составить конспект ответов на следующие вопросы: 1. Определения размера массива. 2. Арифметические операции над указателями. II. Ответить на вопросы для самопроверки 1. стр ( 1-9) 2. стр. 109 ( 1-4 – упражнения для сам. выполнения) 3. стр. 123 ( упражнения для сам. выполнения )

Мишин Сергей Александрович Воронежский институт МВД России Информатика (курс лекций) Презентацию разработал Старший преподаватель кафедры ИТО ОВД кандидат технических наук майор милиции Мишин С.А. © Воронежский институт МВД России, 2011