С++ // язык программирования. Структура программы С++ Каждая подпрограмма имеет структуру, подобную функции main(); Каждая программа содержит одну или.

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



Advertisements
Похожие презентации
Введение в C++ Урок 3-4. ОПЕРАТОРЫ ЦИКЛА Операторы цикла используются для организации многократно повторяющихся вычислений. - цикл с предусловием while,
Advertisements

Введение в C++ Урок 1-2.
©ρŧą Базовые конструкции языка.
Министерство образования Республики Беларусь Белорусский государственный университет Управляющие структуры языков программирования.
Переменные и операторы УРОК 2. Переменные ПЕРЕМЕННАЯ – ?... контейнер для хранения данных. Переменная имеет имя – это….? последовательность букв, цифр.
Глава 6. УПРАВЛЯЮЩИЕ СТРУКТУРЫ Оператор присваивания Простой и составной операторы Условный оператор Оператор множественного выбора Оператор цикла с предусловием.
Операторы языка с++. Операторы в языке C++ предназначены для описания действий. Любой оператор может быть помечен меткой. Операторы отделяются друг от.
Тема: Управление потоком в PHP Изучить возможности языка PHP при решении задач, требующих использования условного оператора. Рассмотреть примеры управления.
Операторы языка Си Лекция 5.
Элементы языка СИ Средства для написания простейших программ.
Лекция 7. Структура языка С/С++. Операторы ветвления: условный оператор if. Полное ветвление. Неполное ветвление. Оператор множественного выбора switch.
Практическое занятие 6. Функции. Большинство языков программирования используют понятия функции и процедуры. C++ формально не поддерживает понятие процедуры,
ЦИКЛИЧЕСКИЙ АЛГОРИТМ Цели: -Познакомиться с понятием циклического алгоритма. -Освоить языковые средства для реализации циклических алгоритмов.
Язык программирования Си Приведение типов, операции Потоковый ввод-вывод Югов Иван Олегович МОУ Гимназия 10, г. Тверь.
Операторы языка C#. Блок или составной оператор. Пустой оператор С помощью фигурных скобок несколько операторов языка, возможно перемежаемых объявлениями,
Программирование Задания В2, В5. Оператор присваивания в языке программирования Задание В2 – базовый уровень, время – 2 мин.
Оператор ветвления (условный оператор) позволяет изменить порядок выполнения операторов в зависимости от выполнения некоторого условия (истинности логического.
УКАЗАТЕЛИ. Переменная - это именованная область памяти с заданным типом. [=значение]; int a; //Переменная типа integer с именем a int b=2;// Переменная.
Тема урока Переменная. Тип данных. Ввод и вывод данных.
Идентификаторами в языке Си являются последовательности букв и цифр, начинающиеся с буквы, причем символ подчеркивания рассматривается компилятором как.
Транксрипт:

С++ // язык программирования

Структура программы С++ Каждая подпрограмма имеет структуру, подобную функции main(); Каждая программа содержит одну или несколько функций; Каждая функция содержит 4 основных элемента: 1. тип возвращаемого значтения; Int 2. имя функции; main() 3. список параметров, {return 0;} - заключённый в круглые скобки 4. тело функции - эта строка значит "вернуть операционной системе в качестве сигнала об успешном завершении программы значение 0".

Организация консольного – ввода/вывода данных ( т.е. в режиме чёрного экрана) #include ; #include ; //директива процессора, предназначена для включтения в исходный текст содержимое заголовочного файла, имя которого, содержащий описания функций стандартной библиотеки ввода/вывода для работы с клавиатурой и экраном. using namespace stg; std using namespace stg; //директива означ.что все определённые ниже имена будут относя к пространству имён std Int main() Int main() //имя функции,кот.не содержит параметров и должна возвращать значение типа Int {Int a,b;Int {Int a,b; //объявление двух переменных типа Int - целый тип cout <<<<endl cout <<введите два целых числа<<endl; //оператор вывода данных на экран, << - операция помещения данных в выходной поток; endl - манипулятор, переводит сообщение на новую сточку. cin >>a >>b; // cin >>a >>b; //оператор ввода данных с клавиатуры, >> - операция для извлечтения данных из выходного потока, читает значтения из cin и сохр. их в переменных. cout >> >их сумма равна<<a+b; //оператор вывода return 0;} // return 0;} //оператор вывода

Стандартные типы данных Целые типы данных – short, int, long и спецификаторы (signed,unsigned); Вещественные типы – float, double, long double; Cимвольные типы – char, wchar_t; Логический тип – bool, принимающий значтения (true-истина, false-ложь); Константы (const) a=b+2,5 //неименованная константа; 1L - целочисленный литерал (тип long); 8 – целочисл.литерал (тип Int); f, – символьный литерал, \n-конец строки Формат описания именованной константы: [ ]const = ; const int l= - 124; const floak k1=2,345, k=1/k1 Класс памяти- это спецификатор, определяющий время жизни и область видимости данного объекта. Выражение, определяет значение именованной константы, т.е инициализирует её.

Переменные Формат описания переменных: [ ] [= | ( )]; Пример: int I,j; double x; Значение переменных должно быть определено с помощью: 1. оператора присваивания: int a; //описание переменной int= a; //опред.значтения.переменной 2. оператора ввода: int a; //описание переменной cin>>a; //опред.знач.переменной 3. инициализация – опред.значтения переменной на этом этапе описания. int i=100 //инициализация копией int i (100); // прямая инициализация

Управление форматом вещественных типов данных Сущ.три аспекта оформления значтения с плавающей запятой которыми можно управлять: Сущ.три аспекта оформления значтения с плавающей запятой которыми можно управлять: - точность( кол-во отображаемых цифр), изменяется с помощью манипулятора setprecision; - форма записи (десятичная или экспонец-ая); - указание десятичной точки для значтения с пл.запятой, являющихся целыми числами. - #include Результат работы программы: - #include 1.23e using namespace std; int main() { double i= 12345,6789; - cout << setprecision(3)<<i<<endl; - cout << setprecision(6)<<i<<endl; - cout << setprecision(9)<<i<<endl; - refurn 0;} - (для использования манипуляторов endl с аргументами требуется подключить заголовочный файл iomanip)

Управление размещение данных на экране Используются манипуляторы: 1 1. left – выравнивает вывод по левому краю; 2 2. right – выравнивает вывод по правому краю; 3 3. internal – контролирует размещение отрицательного значтения: выравнивает знак по левому краю, а значение по правому, заполняя пространство между ними пробелами; 4 4. setprecision(int w) – устанавливает max кол-во цифр в дробной части для вещественных чисел; 5 5. setw(int w) – устанавливает max ширину поля вывода; Пример: Получим: #include 1. Ivanov; #include 2.Ivanov; using nanespace std; 3. Ivanov; int main() { cout <<1 <<setw(10) <<Ivanov <<endl; cout <<2 <<setw(10) <<lief<<Ivanov <<endl; cout <<3 <<setw(10) <<right<<Ivanov <<endl; return 0;}

Операции. Унарные операции Операции увеличтения (декремента) и уменьшения (инкремента) на 1(++ и --); записываются в двух формах: Префиксия – операция записывается перед операндом и увеличивает свой операнд на 1 и возвращает изменённоё значений как результат Постфиксия – операция записывается после операнда, уменьшает свой операнд на 1 и возвр.изменённое знач.как результат. Пример: #include int main() using nanespace std; { int x=3, y=4; cout <<++x<<\t<<-- y<<endl; cout <<x++<<\t<<y-- <<endl; cout <<x<<\t<<y<<endl; return 0;}

Операции отрицания (-,!) (-) - унарный минус – изменяет знак операнда целого или вещественного типа на противоположный; (!) – логическое отрицание, даёт в результате значение 0(ложь), если операнд отличен от 0(истина),если равен операнд 0 (ложь); тип операнда может быть любой. Пример: #include int main() using nanespace std; { int x=3, y=0; bool f=false, v=true; cout <<-x<<\t<<!y<<endl; cout <<-y<<\t<<!y<<endl; cout <<v<<\t<<!v<<endl; return 0;}

Бинарные операции Арифметические операции: умножение.(*), деление.(/), остаток от деления.(%); слов.(+), вычет.(-) Рассмотрим операции деления и остаток от деления: #include using nanespace std; int main() { cout <<100/24<<\t<<100/24<<endl; cout <<100/21<<\t<<100,0/24<<endl; cout <<21%3<<\t<<21%6<<-21%8<<endl; return 0;} - Операции отрицания (-,!) унарный минус – изменяет знак операнда целого или вещест-го типа на противоположный. - Операции отношения: (, >=, == !=), меньше, меньше или равно, больше, больше или равно, равно, не равно, не равно соответственно). Результатом операций являются значтения true, false.

Логические операции (&& и ||) И (&&) - возвращает значение истина тогда и только тогда, когда оба операнда принимают значение истина, в противном случае операция возращ.знач.ложь. ИЛИ || - возвращает знач.истина тогда и.т.тогда, когда хотя бы один операнд принимает значение истина, в противном случае –ложь - логические операции выполняются слева направо; - приоритет операции && выше ||. Пример: #include using namespace std; int main() { cout <<x\t y\t &&\t||endl; cout <<0\t 1\t<<(0 && 1)<<\t<<(0||1)endl; cout <<1\t 0\t<<(1 && 0)<<\t<<(1||0)endl; cout <<1\t 1\t<<(1 && 1)<<\t<<(1||1)endl; return 0;}

Операции присваивания формат операция простого присваивания (=): операнд_1 = операнд_2 пример: a=b=c=100, это выражение выполняется справа налево, результатом выполнения с=100, является число 100, которое затем присвоиться переменной b, потом а. Сложные операции присваивания: (*=) – умножение с присв-ем, ( /=) - деление с присв-ем (%= )- остаток от деления с присв-ем, (+=) –словение с присв., (-=) - вычет.с присв. пример: к операнду _1 прибавляется операнд_2 и результат записывается в операнд_2 с += а т.е. с = с + а, тогда компактная запись с += а

Тернарная операция Условная операция (? : ) Формат условной операции: операнд_1 ? операнд_2 ? : операнд_3 Операнд_1 это логическое или арифметич-ое выражение; Оценивается с точки зрения эквивалентности константам true и false; Если результат вычисления операнда_1 равен true,то результат условной операции будет значение операнда_2, иначе операнда_3; Тип может различаться; Условная операция является сокращ. формой услов-го оператора if; Пример: Результат: #include для х=11 и y=9 int main() 11 using nanespace std; 11 { int x, y,max; cin >>x>>y; (x>y)? cout <<x: cout<<y<<endl; //1 нахождение наибольшего зна- max=(x>y)? x:y; //2 чтения для двух целых чисел; cout<<max<<endl; return 0;}

Операторы С++ Программа на языке С++ состоит из последовательности операторов, каждый из них определяет значение некоторого действия; Все операторы разделены на 4 группы: - операторы следования; - операторы ветвления; - операторы цикла; - операторы передачи управления.

Операторы следования К ним относя : оператор выражение и составной оператор. Выражение, завершающееся точкой с запятой, рассматривается как оператор (вычислении значтения выражения или выполнении законченного действия); ++i; //оператор инкремента х+=у; //оператор словение с присваиванием f(a, b) //вызов функции x= max (a, b) + a*b; //вычисление словного выражения Частным случаем оператора выражения является пустой оператор ; (используется, когда по синтаксису оператор требуется, а по смыслу нет) Составной оператор или блок представляет собой последоват-ть операторов, заключенных в фигурные скобки. Блок обладает собственной областью видимости: объявленные внутри блока имена доступны только внутри блока; Составные операторы применяются в случае, когда правила языка предусматривают наличие только одного оператора, а логика программы требует нескольких операторов.

Операторы ветвления К ним относя : условный оператор if и оператор выбора switch, они позволяют изменить порядок выполнения операторов в программе ; Условный оператор if if используется для разветвления процесса обработки данных на два направления. if if имеет формы: сокращенную или полную. Формат сокращенного оператора if: if (В) S; В –логич. или арифметич. выражение, истинность которого проверяет­ся; S - один оператор: простой или составной. При выполнении сокращенной формы оператора if сначала вычисляется выражение В, затем проводится анализ его результата: если В истинно, то выполняется оператор S; если В ложно, то оператор S пропускается. C помощью сокращенной формы оператора If можно либо выполнить оператор S, либо пропустить его. Формат полного оператора if: if (B) S1 ; else S2; SI, S2- один оператор: простой или составной. При выполнении полной формы оператора if сначала вычисляется выражение В, затем анализируется его результат: если В истинно, то выполняется оператор S1 а оператор S2 пропускается; если В ложно, то выполняется оператор S2, a S1 - пропускается. C помощью полной формы оператора if можно выбрать одно из двух альтернативных действий процесса обработки данных.

Примеры записи условного оператора if. if (a > 0) х=у; // сокращенная форма с простым оператором if (++i) {x=y; y=2*z;} // сокращенная форма с составным оператором if (а > 0 |'| b<0) x=y; eise x=z; //полная форма с простым оператором if (i+j-1) { х= 0; у= 1;} else {x=1; у:=0;} //полная форма с составными операт Операторы S1 и S2 могут являться операторами if, такие операторы наз. вложенные; Ключевое слово else связывается с ближайшим предыдущим словом if, которое еще не связано ни с одним else. Примеры алгоритмов с использованием вложенных условных операторов: Пример 1 Уровни вложенности If Пример 2 Уровни вложенности if if(A<B) if (A<B) if (С < D) if (C<D) X=Y 2 if(E<F)X=Q; else X=Z: else X = R; else 1 else X=Z; if (E<F) X=R; else X = Y; else X=Q; 2

Оператор выбора switch предназначен для разветвления процесса вычислений на несколько направлений. Формат оператора: switch ( ) {case : [ ] case : [ ] ………………………….. case : [ ] [default: ]} Выражение, стоящее за ключевым словом switch, должно иметь арифметич. тип или тип указатель. Все константные выражения должны иметь разные значтения, но совпадать с типом выражения, стоящим после switch. Ключевое слово case и расположенное после него константное выражение называют также меткой case.

Выполнение оператора начинается с вычисления выражения, расположенного за ключевым словом switch. Полученный результат сравнивается с меткой case. Если результат выражения соответствует метке case, то выполняется оператор, стоящий после этой метки. Затем последовательно выполняются все операторы до конца оператора switch, если только их выполнение не будет прервано с помощью оператора передачи управления break При использование оператора break происходит выход из switch и управление переходит к первому после него оператору. Если совпадения выражения ни с одной меткой case не произошло, то выполняется оператор, стоящий после слова default, а при его отсутствии управление передается следующему за switch оператору.

Операторы цикла Операторы цикла используются для организации многократно повторяющихся вычислений. - цикл с предусловием while, - цикл с постусловием do while - цикл с параметром for. Цикл с предусловием while: Оператор цикла while организует выполнение одного оператора (простого или составного) неизвестное заранее число раз. Формат цикла while: while (В) S; В - выражение, истинность которого проверяется (условие завершения цикла); S - тело цикла: один оператор (простой или составной). Перед каждым выполнением тела цикла анализируется значение выражения В: - если оно истинно, то выполняется тело цикла, и управление передается на повторную проверку условия В; - если значение В ложно - цикл завершается и управление передается на оператор, следующий за оператором S. - если результат выражения В окажется ложным при первой проверке, то тело цикла не выполнится ни разу

- если условие В во время работы цикла не будет изменяться, то возможна ситуация зацикливания, то есть невозможность выхода из цикла. Внутри тела должны находиться операторы, приводящие к изменению значтения выражения В так, чтобы цикл мог завершиться. Рассмотрим программу вывода на экран целых чисел из интервала от 1 до n. #include using namespace std: int main() { intn, i=1; cout >n; while (i<=n)//пока i меньше или равно n Результаты работы программы: { cout«i«"\t"; //выводим на экран значение i nответ ++i;}//увеличиваем i на единицу return 0;} Замечание: используя операцию постфиксного инкремента, тело цикла можно заменить одной командой cout <<;'++ <<"\t".

Цикл с постусловием do while В отличие от цикла while условие завершения цикла проверяется после выполнения тела цикла. Формат цикла do while: do S while (В); В - выражение, истинность которого проверяется (условие завершения цикла); S - тело цикла: один оператор (простой или блок). Сначала выполняется оператор S, а затем анализир-ся значение выражения В: - если оно истинно, то управление передается оператору S, - если ложно - цикл заверш. и управление передается на оператор, следующий за условием В. Пример(do while): программа вывода на экран целых чисел из интервала от 1 до п. #include using namespace std; int main() {intn, i=1; cout >n; do//выводим на экран i, а замет увеличиваем Результаты работы программы: сout<<i++<<"\t"; //ее значении на единицу n ответ whiie (i<=n); //до тех пор пока i меньше или равна n return 0;}

Цикл с параметром for Цикл с параметром имеет следующую структуру: for ( ; ; ) ; Инициализация используется для объявления и присвоения начальных значений величинам, используемым в цикле. В этой части можно записать несколько операторов, разделенных запятой. Областью действия переменных, объявленных в части инициализации цикла, является цикл и вложенные блоки. Выражение определяет условие выполнения цикла: - если его результат истинен, цикл выполняется. Истинность выражения проверяется перед каждым выполнением тела цикла, таким образом, цикл с параметром реализован как цикл с предусловием. Модификации выполняются после каждой итерации цикла и служат обычно для изменения параметров цикла. В части модификаций можно записать несколько операторов через запятую. Оператор (простой или составной) представляет собой тело цикла.

Любая из частей оператора for (инициализация, выражение, модификация, оператор) может отсутствовать, но точку с запятой, определяющую позицию пропускаемой части, надо оставить. #include using namespace std; int main() { intn; cout >n; Результаты работы программы: for (int i=1; j<=n; i++) //для i om 1 дo n с шагом 1 n ответ cout<<i<<"\t"; //выводить на экран значение i return 0;} Замечание. Используя операцию постфиксного инкремента при выводе данных на экран, цикл for можно преобразовать следующим образом: for (int i=l ;i<=n;) cout<<i+ + <<"\t"; В этом случае в заголовке цикла for отсутствует блок модификации.

Вложенные циклы Циклы могут быть простые или вложенные (кратные, циклы в цикле). Вложенными могут быть циклы любых типов: while, do while, for. Структура вложенных циклов на примере типа for приведена ниже: for(i=1;i<ik;i++) {… for (j=10; j>jk;j- -) {...for(k=1;k<kk;j+=2){...} } Каждый внутренний цикл должен быть полностью вложен во все внешние циклы. --- «Пересечтения» циклов не допускается.

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

Оператор безусловного перехода goto Оператор безусловного перехода goto имеет формат: goto ; В теле той же функции должна присутствовать ровно одна конструкция вида: : ; Оператор goto передает управление на помеченный меткой оператор пример использования оператора goto: #indude using namespace std; int main() {float x; metka: cout <<"x=";//оператор, помеченный меткой cin»x; if (x) cout<<y=<<1/x<<endl; else { соut<<"функция не определена\n"; goto metka;} // передача управление метке return 0;} - при попытке ввести 0 на экран будет выведено сообщение «функция не определена», после чего управление будет передано оператору, помеченному меткой, и программа повторно попросит ввести значение х. использование оператора goto затрудняет чтение больших по объему программ, поэтому использовать метки нужно только в крайних случаях.

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

Оператор перехода к следующей итерации цикла continue Оператор перехода к следующей итерации цикла continue пропускает все операторы, оставшиеся до конца тела цикла, и передает управление на начало следующей итерации (повторение тела цикла). Рассмотрим оператор continue на примере: #include using namespace std; int main() { for (int i=1; i<100; ++i) //перебираем все числа от 1 до 99 {if (i % 2) continue; //если число нечетное, то переходим к следующей итерации cout<<i<<"\t";} //выводим число на экран return 0;} В результате данной программы на экран будут выведены только четные числа из интервала от 1 до 100, т.к. для нечётныx чисел текущая итерация цикла прерывалась и команда cout<<i<<"\t" не выполнялась. Оператор возврата из функции return: Оператор возврата из функции return завершает выполнение функции и передает управление в точку ее вызова.

Массивы. Указатели. Когда компилятор обрабатывает оператор определения переменной, например, int а =50;, то он выделяет память в соответствии с типом int и записывает в нее значение 50) Все обращения в программе к переменной по ее имени заменяются компилятором на адрес области памяти, в которой хранится значение переменной., такие переменные называются указателями. В C++ различают три вида указателей: - указатели на объект, - на функцию и на void; Указатель на объект содержит адрес области памяти, в которой хранятся данные определенного типа (простого или составного). Объявление указателя на объект имеет следующий вид: [ ] * <имя указателям базовый тип имя типа переменной, адрес которой будет содержать переменная указатель; модификатор необязателен., может иметь значение: near, far или huge

Указатель может быть переменной или константой, указывать на переменную или константу, а также быть указателем на указатель. Например: int i; //целочисленная переменная const int j=10;//целочисленная константа int *a;//указатель на целочисленное значение int **x;//указатель на указатель на целочисленное значение const int *b; //указатель на целочисленную константу int * const c=&i;//указатель-константа на целочисленную переменную const int 'const d=&j; //указатель константа на целую переменную Указатель типа void применяется в тех случаях, когда конкретный тип объекта, адрес которого нужно хранить, не определен. Указателю на void можно присвоить значение указателя любого типа, а также сравнить его с любым указателем, но перед выполнением каких-либо действий с областью памяти, на которую он ссылается, требуется преобразовать его к конкретному типу явным образом.

ссылки Ссылка представляет собой синоним имени, указанного при инициализации ссылки. Ссылку можно рассматривать как указатель, который разыменовывается неявным образом. Формат объявления ссылки: & Например: int а;//целочисленная переменная int &b=a; //ссылка на целочисленную переменную а Следующий пример: #include using namespace std; int main() {int a=50; //целочисленная переменная а int &b=a; //ссылка b - альтернативное имя для переменной а cout <<"a\t b\n"; cout «a <<"\t" «b«endl; a++;//1 cout «a <<"\t" «=b«endl; b++;//2 cout «a <<"\t" «b«endl; return 0;}

Одномерный массив Одномерный массив - это фиксированное количество элементов одного и того же типа, объединенных общим именем, где каждый элемент имеет свой номер. Нумерация элементов массива в C++ начинается с нулевого элемента, то есть, если массив состоит из 10 элементов, то его элементы будут иметь следующие номера: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Элементы массива могут быть любого типа, в том числе и структурированного (кроме файлового). Между указателями и массивами существует взаимосвязь: любое действие над элементами массивов, которое достигается индексированием, может быть выполнено и с помощью указателей. Вариант программы с указателями будет работать быстрее.

Двумерные массивы Двумерные массивы (матрицы, таблицы) - представляют собой фиксированное количество элементов одного и того же типа, объединенных общим именем, где каждый элемент определяется номером строки и номером столбца, на пересечении которых он находится. Двумерные массивы находят свое применение тогда, когда исходные данные представлены в виде таблицы, или когда для хранения данных удобно использовать табличное представление. Нумерация строк и столбцов начинается с нулевого номера. Поэтому если массив содержит три строки и четыре столбца, то строки нумеруются: О, 1, 2; а столбцы: 0, 1, 2, 3. В C++ двумерный массив реализуется как одномерный, каждый элемент которого также массив.