Скачать презентацию Практические занятия по программированию Галимов Р Р Скачать презентацию Практические занятия по программированию Галимов Р Р

П3_2_Ci++.pptx

  • Количество слайдов: 49

Практические занятия по программированию Галимов Р. Р. , 2013 Практические занятия по программированию Галимов Р. Р. , 2013

Функции стандартного ввода/вывода (printf, scanf) • Функция стандартного вывода printf() • Функция printf() является Функции стандартного ввода/вывода (printf, scanf) • Функция стандартного вывода printf() • Функция printf() является функцией стандартного вывода. С помощью этой функции можно вывести на экран монитора строку символов, число, значение переменной. . . • Функция printf() имеет прототип в файле stdio. h int printf(char *управляющая строка, . . . ); • В случае успеха функция printf() возвращает число выведенных символов. • Управляющая строка содержит два типа информации: символы, которые непосредственно выводятся на экран, и спецификаторы формата, определяющие, как выводить аргументы. • Функция printf() это функция форматированного вывода. Это означает, что в параметрах функции необходимо указать формат данных, которые будут выводиться. Формат данных указывается спецификаторами формата. Спецификатор формата начинается с символа % за которым следует код формата[Бардин П. Б. Функции стандартного ввода/вывода (printf, scanf)http: //www. realcoding. net/article/view/1633].

Спецификаторы формата %с символ %d целое десятичное число %i целое десятичное число %e десятичное Спецификаторы формата %с символ %d целое десятичное число %i целое десятичное число %e десятичное число в виде x. xx e+xx %E десятичное число в виде x. xx E+xx %f десятичное число с плавающей запятой xx. xxxx %F десятичное число с плавающей запятой xx. xxxx %g %f или %e, что короче %G %F или %E, что короче %o восьмеричное число %s строка символов %u беззнаковое десятичное число %x шестнадцатеричное число %X шестнадцатеричное число %% символ % %p указатель %n указатель

Функция стандартного вывода printf() • В спецификаторе формата, после символа % может быть указана Функция стандартного вывода printf() • В спецификаторе формата, после символа % может быть указана точность (число цифр после запятой). Точность задаётся следующим образом: %. n<код формата>, где n - число цифр после запятой, а <код формата> - один из кодов приведённых выше. • Например, если у нас есть переменная x=10. 3563 типа float и мы хотим вывести её значение с точностью до 3 -х цифр после запятой, то мы должны написать: • printf("Переменная x = %. 3 f", x);

Функция стандартного вывода printf() • #include <stdio. h> void main(void) { printf( Функция стандартного вывода printf() • #include void main(void) { printf(""Текст в кавычках""); printf("n. Содержание кислорода: 100%%"); } • Результат работы программы: "Текст в кавычках" Содержание кислорода: 100%

Функция стандартного ввода scanf() • Функция scanf() - функция форматированного ввода. С её помощью Функция стандартного ввода scanf() • Функция scanf() - функция форматированного ввода. С её помощью вы можете вводить данные со стандартного устройства ввода (клавиатуры). Вводимыми данными могут быть целые числа, числа с плавающей запятой, символы, строки и указатели. • Функция scanf() имеет следующий прототип в файле stdio. h: int scanf(char *управляющая строка); • Функция возвращает число переменных которым было присвоено значение. • Управляющая строка содержит три вида символов: спецификаторы формата, пробелы и другие символы. Спецификаторы формата начинаются с символа %.

Функция стандартного ввода scanf() • При вводе строки с помощью функции scanf() (спецификатор формата Функция стандартного ввода scanf() • При вводе строки с помощью функции scanf() (спецификатор формата %s), строка вводиться до первого пробела!! т. е. если вы вводите строку "Привет мир!" с использованием функции scanf() • char str[80]; // массив на 80 символов scanf("%s", str); • то после ввода результирующая строка, которая будет храниться в массиве str будет состоять из одного слова "Привет". ФУНКЦИЯ ВВОДИТ СТРОКУ ДО ПЕРВОГО ПРОБЕЛА! Если вы хотите вводить строки с пробелами, то используйте функцию • char *gets( char *buf ); • С помощью функции gets() вы сможете вводить полноценные строки. Функция gets() читает символы с клавиатуры до появления символа новой строки (n). Сам символ новой строки появляется, когда вы нажимаете клавишу enter. Функция возвращает указатель на buf - буфер (память) для вводимой строки.

Функция стандартного ввода scanf() • #include <stdio. h> void main(void) { char buffer[100]; // Функция стандартного ввода scanf() • #include void main(void) { char buffer[100]; // массив (буфер) для вводимой строки gets(buffer); // вводим строку и нажимаем enter printf("%s", buffer); // вывод введённой строки на экран }

 • • • Функция стандартного ввода scanf() Ещё одно важное замечание! Для ввода • • • Функция стандартного ввода scanf() Ещё одно важное замечание! Для ввода данных с помощью функции scanf(), ей в качестве параметров нужно передавать адреса переменных, а не сами переменные. Чтобы получить адрес переменной, нужно поставить перед именем переменной знак &(амперсанд). Знак & означает взятие адреса. Что значит адрес? В программе у нас есть переменная. Переменная хранит своё значение в памяти компьютера. Так вот адрес, который мы получаем с помощью & это адрес в памяти компьютера где храниться значение переменной. Давайте рассмотрим пример программы, который показывает нам как использовать & #include void main(void) { int x; printf("Введите переменную x: "); scanf("%d", &x); printf("Переменная x=%d", x); }

 • Создание нескольких переменных одного типа: unsigned int my. Age, my. Width; Присвоение • Создание нескольких переменных одного типа: unsigned int my. Age, my. Width; Присвоение значений переменным: my. Age=5; int Width=10; int Width=2, my. Age, Length=23; unsigned Area=(Width*Length)

Ключевое слово typedef • typedef unsigned short int USHORT; • int main() • { Ключевое слово typedef • typedef unsigned short int USHORT; • int main() • { USHORT Width=5; • } Переполнение целых чисел • -беззнаковых; • знаковых.

Символы и числа • char a=‘ 1’; Пример: #include <iostream. h> int main() { Символы и числа • char a=‘ 1’; Пример: #include int main() { for (int i=32; i<128; i++) cout<<(char)I; return 0; }

Управляющие символы Управляющие символы "Издательский дом "Питер""

Комментарии • // - комментируется одна • /* комментируется блок кода*/ Константы. Директива #define Комментарии • // - комментируется одна • /* комментируется блок кода*/ Константы. Директива #define students. Per. Class 15 Ключевое слово const unsigned short int students. Per. Class 15 Второй способ имеет преимущество: константа имеет тип и компилятор может проследить за её использованием только по назначению.

 • Константы перечислений enum Color {RED, BLUE, GREEN, WHITE, BLACK}; • Константы перечислений enum Color {RED, BLUE, GREEN, WHITE, BLACK};

 • Блоки { temp=a; a=b; b=temp; } ОСНОВНЫЕ ОПЕРАТОРЫ = -присваивание: a=20 * • Блоки { temp=a; a=b; b=temp; } ОСНОВНЫЕ ОПЕРАТОРЫ = -присваивание: a=20 * Умножение / деление % остаток от деления a++; инкремент b--; декремент a+=b; a=a+b c*=d; c=c*d; && - AND ! - NOT || - OR >, >=, ==, != -операции сравнения

Префикс и постфикс • int x=10; • int a=x++; // а=10 • int b=++x; Префикс и постфикс • int x=10; • int a=x++; // а=10 • int b=++x; //b=12 Приоритеты операций Total=a+b*c; Total=(a+b)*c;

ОПЕРАТОРЫ ОТНОШЕНИЙ • int a=10; • cout<<a>9; // 1 ОПЕРАТОРЫ ОТНОШЕНИЙ • int a=10; • cout<9; // 1

Лекция № 2. Основные операторы. Массивы. Оператор IF • Оператор if позволяет проверить условие Лекция № 2. Основные операторы. Массивы. Оператор IF • Оператор if позволяет проверить условие и изменить ход выполнения программы, направив в другое русло, которое будет зависеть от результата сравнения. if (условие) выражение; if (Big. Number

if (условие) выражение 1; else выражение 2; Использование фигурных скобок для вложенных операторов if if (условие) выражение 1; else выражение 2; Использование фигурных скобок для вложенных операторов if If (x>y) if (x=10) if (x>100) cout<<“More than 100n”; else cout<<“Less than 10n”;

if (x>=10) { if (x>100) cout<<“More than 100n”; } else cout<<“Less than 10n”; if (x>=10) { if (x>100) cout<<“More than 100n”; } else cout<<“Less than 10n”;

Организация циклов Использование меток: int counter=0; Loop: counter++; if (counter<5) goto Loop; Организация циклов Использование меток: int counter=0; Loop: counter++; if (counter<5) goto Loop;

Организация циклов при помощи оператора while int counter=0; while (counter<5) { counter++; cout<<“counter”<<counter<<“n”; } Организация циклов при помощи оператора while int counter=0; while (counter<5) { counter++; cout<<“counter”<

Операторы break и continue while (true) { counter++; if (counter>10) break; } Операторы break и continue while (true) { counter++; if (counter>10) break; }

Оператор do while do { counter--; cout<<“counter=”<<counter<<“n”; } while(counter>0); Оператор do while do { counter--; cout<<“counter=”<0);

Оператор for • Оператор for объединяет собой три операции: инициализация, проверка условия и приращение Оператор for • Оператор for объединяет собой три операции: инициализация, проверка условия и приращение счетчика цикла. int counter; for (counter=0; counter<5; counter++) cout<

Оператор Switch switch (выражение) { case первоезначение: оператор; break; сase второезначение: оператор; break; ……………… Оператор Switch switch (выражение) { case первоезначение: оператор; break; сase второезначение: оператор; break; ……………… сase значение. N: оператор; break; default: оператор; }

Примеры switch (choice) { case 0: cout<<“Zero”; break; case 1: cout<<“One”; break; case 2: Примеры switch (choice) { case 0: cout<<“Zero”; break; case 1: cout<<“One”; break; case 2: cout<<“Two”; break; default: cout<<“default!”; break; }

пример switch (choice) { case 0: case 1: case 2: cout<<“Less than 3”; break; пример switch (choice) { case 0: case 1: case 2: cout<<“Less than 3”; break; case 3: cout<<“Equals 3”; break; default: cout<<“Greater than 3”; break; }

Массивы • Массив представляет собой коллекции данных одного типа, сохраненные в памяти компьютера. Каждая Массивы • Массив представляет собой коллекции данных одного типа, сохраненные в памяти компьютера. Каждая единица данных называется элементом массива. • Массив определяется именем, типом данных и размером. • Пример объявления массив приведен ниже: float Salary[20]; где float – тип данных; Salary – имя массива; [20] – количество элементов массива. Если объявлен массив размера N, то к его элементам можно обращаться, указывая индекс в диапазоне от 0 до (N-1).

Пример • • • • #include Пример • • • • #include "stdafx. h" #include "iostream" using namespace std; int main(int argc, char* argv[]) { int a[4]; for (int i=0; i<4; i++ ) { cout<<"Value["<>a[i]; } for (int i=0; i<4; i++ ) cout<

Компилятор не контролирует выход за пределы массива при обращении к элементам массива. Если в Компилятор не контролирует выход за пределы массива при обращении к элементам массива. Если в предыдущем примере, мы вставим в конце программы выражение cout<

пример • • • • #include пример • • • • #include "stdafx. h" #include "iostream" using namespace std; int main(int argc, char* argv[]) { int a[4]; for (int i=0; i<4; i++ ) a[i]=i; int summa=0; for (int i=0; i<=4; i++ ) summa+=a[i]; cout<<"summa="<

Инициализация массива • Инициализация массива базового типа можно производить одновременно с его объявлением: • Инициализация массива • Инициализация массива базового типа можно производить одновременно с его объявлением: • float Salary [3]={20000, (15750, 35), 7500}; • int A []={1, 3, 4, 5}; • Обратите внимание, что во втором случае компилятор сам определит размер массива. • Язык С++ позволяет создавать многомерные массивы, например, двухмерные: • short int Board [8][8];

 • Ниже приведены примеры инициализации двумерных массивов: • int A[3][3]={1, 2, 3, 4, • Ниже приведены примеры инициализации двумерных массивов: • int A[3][3]={1, 2, 3, 4, 5, 6, 7, 8, 9}; • int A[3][3]={{1, 2, 3}, • {4, 5, 6}, • {7, 8, 9}};

Строковые массивы Строка текста представляет собой набор символов. В С++ строку можно представить как Строковые массивы Строка текста представляет собой набор символов. В С++ строку можно представить как массив символов, заканчивающийся концевым нулевым символов строки, например: • char str[]={‘H’, ‘e’, ‘l’, ’o’, ’ ‘, ‘ W‘, ‘o’, ’l’, ’d’, ’’}; или то же самое: • char str[]=”Hello World”;

 • • • #include • • • #include "stdafx. h" #include "iostream" using namespace std; int main(int argc, char* argv[]) { char buffer[20]; cout<<"Enter the string: "; cin>>buffer; cout<<"Here the string: ""<

 • • • #include • • • #include "stdafx. h" #include "iostream" using namespace std; int main(int argc, char* argv[]) { char buffer[20]; cout<<"Enter the string: "; cin. get(buffer, 19); cout<<"Here the string: ""<

 • • • • • • Для хранения списка строковых данных можно воспользоваться • • • • • • Для хранения списка строковых данных можно воспользоваться двухмерным строковым массивом. #include "stdafx. h" #include "iostream" using namespace std; int main(int argc, char* argv[]) { char names[20][80]; char ch='y'; int ind=0; while ((ch=='y'||ch=='Y')&&ind<20) { cout<<"Enter name: "; cin. get(names[ind], 19); ind++; cout<<"Continue? : "; cin>>ch; cin. ignore(); } for (int j=0; j

 • cin. getline() может привести к проблемам, если его использовать вместе с cin • cin. getline() может привести к проблемам, если его использовать вместе с cin >> var • float fl; std: : cin >> fl; char str[101]; std: : cin. getline(str, 101); • Допустим, вы набираете: 3. 14 • 3. 14 считывается в переменную fl. Символ новой строки, следующий за 3. 14 всё ещё находится в буфере ввода. • std: : cin. getline(str, 101) немедленно обрабатывает символ новой строки, который всё ещё в буфере ввода. str становится пустой строкой. • Возникает иллюзия, что программа "пропустила" инструкцию std: : cin. getline()[1]. 1. Советы и приемы использования C++ I/O (ввода/вывода). http: //modwind. ru/publ/cpp_io_input_output_advice/6 -1 -0 -7

 • Решает проблему добавление std: : cin. ignore(); сразу после первой команды с • Решает проблему добавление std: : cin. ignore(); сразу после первой команды с std: : cin. Будет получен и отброшен один символ из буфера ввода (в данном случае, символ новой строки). • std: : cin. ignore() можно вызывать тремя разными способами: - Без аргументов: Один символ берётся из буфера ввода и отбрасывается: std: : cin. ignore(); //отбросить 1 символ - Один аргумент: Указанное количество символов берётся из буфера ввода и отбрасывается: std: : cin. ignore(33); //отбросить33 символа - Два аргумента: Отбросить указанное число символов или все символы до указанного разделителя, включая его (зависит от того, что наступит раньше): std: : cin. ignore(26, 'n'); //игнорировать 26 символов или все символы до новой строки включительно, но не более 26 1. Советы и приемы использования C++ I/O (ввода/вывода). http: //modwind. ru/publ/cpp_io_input_output_advice/6 -1 -0 -7

Пример ввода числового значения • #include<limits> // для использования numeric_limits - числовых пределов float Пример ввода числового значения • #include // для использования numeric_limits - числовых пределов float fl; int bad_input; do { bad_input=0; std: : cin >> fl; if (!std: : cin) { bad_input=1; std: : cin. clear(); std: : cin. ignore(std: : numeric_limits: : max(), 'n'); } } while (bad_input);

функция • Функция по своей сути –это подпрограмма, которая может манипулировать данными и возвращать функция • Функция по своей сути –это подпрограмма, которая может манипулировать данными и возвращать результат.

Объявление функции • Запишите прототип функции в файл, затем используйте #include, чтобы включить его Объявление функции • Запишите прототип функции в файл, затем используйте #include, чтобы включить его в свою программу; • Запишите прототип функции в файл, в котором он используется; • Определите функцию перед тем, как её вызовет любая другая функция.

Прототипы функций • Тип возврата • Имя • Параметры int Area (float a, float Прототипы функций • Тип возврата • Имя • Параметры int Area (float a, float b); Прототип не обязан содержать имена параметров: int Area (float, float);

#include “iostream” float Area(float a, float b); int main(int argc, char* argv[]) { float #include “iostream” float Area(float a, float b); int main(int argc, char* argv[]) { float a, b, S; cout<<“Enter a: ”; cin>>a; cout<<“Enter b: ”; cin>>b; S=Area(a, b); cout<<“S=”<

Глобальные и локальные переменные #include “iostream” void my. Func(); int main(int argc, char* argv[]) Глобальные и локальные переменные #include “iostream” void my. Func(); int main(int argc, char* argv[]) { int x=5, y=10; cout<<“main x: ”<

Параметры – это локальные переменные #include “iostream” void swap(int x, int y); int main(int Параметры – это локальные переменные #include “iostream” void swap(int x, int y); int main(int argc, char* argv[]) { int x=5, y=10; cout<<“main before swap x: ”<