SlideShare a Scribd company logo
1 of 28
Download to read offline
1
Курс
Основы программирования
на языке
С++
Модуль 2
Переменные и типы данных
2
Домашние задания
Ссылка на проекты через Google-диск не открывается "Этот файл нельзя открыть,
так как он нарушает Условия использования".
Скорее всего, внутри присланного архива - *.exe файлы.
Сделайте так:
 скопировать папку проекта,
 удалить в копии папки
• .vs,
• Debug
 оставшиеся файлы (текстовые исходники проекта) архивировать и присылать.
В итоге прохождения академии выпускники получают диплом. В дипломе – оценки
за экзамены.
К экзаменам допускаются после сдачи ВСЕХ самостоятельных и домашних работ.
3
Выполнение домашнего задания
#include <Windows.h>
HANDLE console = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(console, FOREGROUND_RED | FOREGROUND_INTENSITY);
cout << "tКаждыйn";
SetConsoleTextAttribute(console, FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_INTENSITY);
cout << "ttОхотникn";
SetConsoleTextAttribute(console, FOREGROUND_GREEN | FOREGROUND_RED);
cout << "tttЖелаетn";
SetConsoleTextAttribute(console, FOREGROUND_GREEN | FOREGROUND_INTENSITY);
cout << "ttttЗнатьn";
SetConsoleTextAttribute(console, FOREGROUND_BLUE | FOREGROUND_INTENSITY | FOREGROUND_GREEN);
cout << "tttttГдеn";
SetConsoleTextAttribute(console, FOREGROUND_BLUE | FOREGROUND_INTENSITY | FOREGROUND_BLUE);
cout << "ttttttСидитn";
SetConsoleTextAttribute(console, FOREGROUND_BLUE | FOREGROUND_INTENSITY | FOREGROUND_RED);
cout << "tttttttФазан!n" << endl;
4
Прошлое занятие (2-1)
1. Структура программы.
2. Элементы текста программы.
3. Переменные.
4. Типы данных.
5. Константы и литералы.
6. Ввод данных с консоли.
7. Работа с кириллицей.
5
Основные понятия (1)
#include <iostream>
using namespace std;
int main()
{
setlocale(LC_ALL, "");
cout << "Консольный калькулятор." << endl
<< endl;
int a;
cout << "Введите a: ";
cin >> a;
int b;
cout << "Введите b: ";
cin >> b;
int c = a + b;
cout << endl
<< a << " + " << b << " = " << c << endl;
system("pause");
}
Среда разработки
Решение
Проект
Исходный файл
Компилятор
Шаблоны проектов
Консольная программа
Директивы препроцессора
<iostream> - подключение ввода-вывода
Пространство имен
using namespace
std – стандартная библиотека С++
Функция
Заголовок функции
Параметры функции ( )
Возвращаемое значение
Тип возвращаемого значения
Тело функции { }
Функция main
Оператор ;
Лексема
6
Основные понятия (2)
#include <iostream>
using namespace std;
int main()
{
setlocale(LC_ALL, "");
cout << "Консольный калькулятор." << endl
<< endl;
int a;
cout << "Введите a: ";
cin >> a;
int b;
cout << "Введите b: ";
cin >> b;
int c = a + b;
cout << endl
<< a << " + " << b << " = " << c << endl;
system("pause");
}
Ключевые слова
Вызов функции
Локализация вывода символов
Функция setlocale
Вывод на экран
Объект cout
Оператор <<
Текстовый литерал “ ”
Объект endl
Переменная
Оператор определения переменной
Тип переменной
int
Имя переменной
Правила задания имен переменных
Рекомендации по заданию имен
Ввод с клавиатуры
Объект cin
Оператор >>
Оператор присвоения
Арифметические операторы
Функция system
System(“pause”)
7
Занятие 2-2. Операторы
■ Понятие оператора.
■ Типы операторов.
■ Арифметические операторы.
■ Логические операторы.
■ Операторы ветвлений.
■ Унарные операторы.
■ Бинарные операторы.
■ Тернарный оператор.
■ Оператор присваивания.
■ Арифметические операторы.
■ Оператор сложения.
■ Оператор вычитания.
■ Оператор умножения.
■ Инкремент. Постфиксная и префиксная форма.
■ Декремент. Постфиксная и префиксная форма.
■ Сокращенные формы
8
Занятие 2-2. Операторы
Оператор (operator) – знак операции:
 арифметические;
 увеличения и уменьшения;
 операторы отношения и логические;
 битовые;
 тернарный;
 другие.
Оператор (statement) – инструкция:
• присваивания;
• вызова функции;
• ветвления;
• циклов;
• Другие.
9
Добавляем запрос операции
if (sign == "+") // условный оператор if (условие)
{ // начало блока операторов
int c = a + b;
} // конец блока операторов
int c = 0; // определяем переменную
if (sign == "+")
{
c = a + b; // используем переменную
}
else // иначе
{
cout << "Ошибка в знаке!" << endl;
}
{
cout << "Ошибка в знаке!" << endl;
system("pause");
return 0; // выход из функции
}
10
Реализуем арифметику (вложенный if)
cout << "Введите знак (+ - * /): ";
...
int c = 0;
if (sign == "+") // если
{
c = a + b;
}
else // иначе
if (sign == "-") // если
{
c = a - b;
}
else // иначе
if (sign == "*") // если
{
c = a * b;
}
else
if (sign == "/")
{
c = a / b;
}
else // иначе
{
cout << "Ошибка в знаке!" << endl;
system("pause");
return 0;
}
11
Последовательные if
if (sign == "+")
{
c = a + b;
}
if (sign == "-")
{
c = a - b;
}
if (sign == "*")
{
c = a * b;
}
if (sign == "/")
{
c = a / b;
}
if (sign != "+" && sign != "-" && sign != "*" && sign != "/")
{
cout << "Ошибка в знаке!" << endl;
system("pause");
return 0;
}
12
Разбираемся с делением
int a = 8;
int b = 3
double c = a / b; // c = 2
int a = 8;
double b = 3
double c = a / b; // c = 2.666…
double a;
double b;
double c = 0;
cout << endl
<< a << " " << sign << " " << b << " = " << c << endl;
13
Двоичные числа, целые и плавающие
9900910
9 * 105 + 9 * 104 + 0 * 103 + 0 * 102 + 0 * 101 + 1 * 100 = 99009
110012
1 * 25 + 1 * 24 + 0 * 23 + 0 * 22 + 0 * 21 + 1 * 20 = 49
14
Плавающая арифметика - приближенная
Двоичная дробь = а * 2-1 + а * 2-2 + а * 2-3 + . . .
= 0.5 + 0.25 + 0.125 + …
Как представить 0.7 ? – только приближенно
double x = 1.0;
double y = (x / b) * b;
if (x == y) ? не обязательно будет равно
15
Оператор присваивания
int a = 6;
int b = a – 4;
int c = a * b – sin(a);
b = b + c;
переменная = значение (выражение: переменные, знаки
операций, скобки, вызовы функци1)
16
Арифметические операторы
Оператор Действие
+ Сложение
- Вычитание, унарный минус
* Умножение
/ Деление
% Взятие остатка
++ Увеличение (инкремент)
-- Уменьшение (декремент)
int a = 6 + 4 * 3; // 18
int b = (6 + 4) * 3; // 30
int c = b / a; // 1
int d = b % a; // 12
a++; // 19
d = b++; // d =30 b = 31
c = --d; // c = d = 29
int a = 6 + 4 * 3; // 18
int b = (6 + 4) * 3; // 30
int c = b / a; // 1
int d = b % a; // 12
a++; // 19
d = b++; // d =30 b = 31
c = --d; // c = d = 29
17
Операторы отношения
Оператор Действие
> Больше
>= Больше или равно
< Меньше
<= Меньше или равно
== Равно
!= Не равно
Результатом отношения является логическое (булево) значение.
Логические значения бывают:
true (да, 1)
false (нет, 0)
bool b = 10 > 3; // b = true;
18
Логические операторы
Оператор Действие
&& И
|| ИЛИ
! НЕ
А B && || !
F F F F T
F T F T
T F F T F
T T T T
Приоритеты логических операций:
! - (унарный минус)
&& *(умножение)
|| +(сложение)
Приоритеты арифметических операций выше, но лучше
расставлять скобки.
19
Операторы ветвления
Оператор if
if (выражение) оператор; else оператор;
Оператор switch
switch (выражение)
{
case константа1:
операторы;
case константа2:
операторы;
default:
}
Оператор ? (тернарный)
условие ? выражение1 : выражение2;
20
Оператор if
if (условие)
{
операторы;
}
if (условие)
{
операторы;
}
else
if (условие)
{
операторы;
}
. . .
else
{
операторы;
}
if (условие)
{
операторы;
}
else
{
операторы;
}
21
Сокращенные формы оператора присвоения
а = а + 1;
а += 1;
а++;
-=
*=
/=
%=
Совмещение бинарного оператора с
присвоением
22
Новые понятия и обозначения (1)
условный оператор if
условие (сравнение)
==
блок { операторы }
условный оператор if else
условный оператор if else if else ... else
return
return значение;
область существования переменной - блок
арифметические операторы + - * /
приоритеты арифметических операторов
целочисленное деление
double
позиционные системы счисления
двоичные числа
представление чисел в компьютере
мантисса и порядок
нормализация вещественного числа
плавающие числа - приближенные
23
Новые понятия и обозначения (2)
оператор присвоения =
значение
выражение
оператор взятия остатка %
оператор инкремента ++
оператор декремента --
унарный, бинарный, тернарный операнды
префиксная и постфиксная форма записи унарного операнда
операторы отношения
!=
логический тип bool
логические значения true false
логические операторы && || !
приоритеты логических операторов
операторы ветвления
сокращенные формы оператора присваивания += *= ...
24
Самостоятельная работа 2 – 2 (1)
Встреча №4
Задание 1.
Пользователь вводит номер года. Необходимо написать программу, которая выведет
количество дней в этом году. При написании программы использовать линейный алгоритм
(конструкции условного выбора не использовать). Например, пользователь ввел год 2004,
программа сообщает, что в этом году 366 дней в следующей форме:
In 2004 year = 366 days
Задание 2.
Пользователь вводит с клавиатуры денежную сумму в гривнах и копейках (гривны и копейки
вводятся в разные переменные). Сумма может быть введена как правильно (например 19грн.
90 коп), так и неправильно (например 22грн. 978 коп). Написать программу, которая,
используя только линейный алгоритм, осуществит корректировку введенной денежной
суммы в правильную форму.
Например, если пользователь ввел 11грн 150 коп, программа должна вывести на экран сумму
12грн. 50 коп.
Задание 3.
Написать программу вычисления объема параллелепипеда. Ниже приведен рекомендуемый
вид экрана во время выполнения программы.
Вычисление объема параллелепипеда.
Введите исходные данные:
Длина (см) -> 9
Ширина (см) -> 7.5
Высота (см) -> 5
Объем: 337.50 куб.см.
25
Самостоятельная работа 2 – 2 (2)
Встреча №4
Задание 4.
Написать программу вычисления расстояния между населенными пунктами, изображенными
на карте. Ниже приведен рекомендуемый вид экрана во время выполнения программы.
Вычисление расстояния между населенными пунктами.
Введите исходные данные:
Масштаб карты (количество километров в одном сантиметре) -> 120
Расстояние между точками, изображающими населенные пункты (см) -> 3.5
Расстояние между населенными пунктами 420 км.
Задание 5.
Напишите программу, которая вычисляет объём шара.
26
Домашнее задание 2 (1)
Встреча №3
Задание 1: Заданы три сопротивлении R1, R2, R3 . Вычислить значение
сопротивления R0 по
формуле: 1/R0 = 1/R1+1/R2+1/R3.
Контрольный пример: R1=2, R2=4, R3=8 R0 = 1.142857
Задание 2: По заданной длине окружности найти площадь круга по формуле S =
pi*R2, радиус
вычислить из формулы длины окружности: L=2*pi *R
Примечание pi = 3.14
Задание 3: Вычислить пройденное расстояние при прямолинейном
равноускоренном движении
по формуле S = v*t + (a*t2) / 2, где v – скорость, t – время, а – ускорение.
27
Домашнее задание 2 (2)
Встреча №4
Задание 1. Пользователь вводит с клавиатуры время в секундах. Необходимо
написать программу, которая переведет введенные пользователем секунды в часы,
минуты, секунды и выводит их на экран.
Задание 2. Написать программу, которая преобразует введенное с клавиатуры
дробное число в денежный формат. Например, число 12,5 должно быть
преобразовано к виду 12грн 50 коп.
Задание 3. Написать программу, вычисляющую, с какой скоростью бегун
пробежал дистанцию.
Рекомендуемый вид экрана во время выполнения программы приведен ниже:
Вычисление скорости бега
Введите длину дистанции (метров) = 1000
Введите время (мин.сек) = 3.25
Дистанция: 1000 м
Время: 3 мин 25 сек = 205 сек
Вы бежали со скоростью 17.56 км/ч
28
Домашнее задание 2 (3)
Задание 4. Пользователь указывает цену одой минуты исходящего звонка с одного
мобильного оператора другому, а также продолжительность разговора в минутах и
секундах. Необходимо вычислить денежную сумму на которую был произведен
звонок.
Задание 5. Написать программу, которая преобразует введенное пользователем
количество дней в количество полных недель и оставшихся дней. Например,
пользователь ввел 17 дней, программа должна вывести на экран 2 недели и 3 дня.

More Related Content

What's hot

Cpp/cli types
Cpp/cli typesCpp/cli types
Cpp/cli typesmcroitor
 
хитрости выведения типов
хитрости выведения типовхитрости выведения типов
хитрости выведения типовcorehard_by
 
Никита Глушков, К вопросу о реализации кроссплатформенных фреймворков
Никита Глушков, К вопросу о реализации кроссплатформенных фреймворковНикита Глушков, К вопросу о реализации кроссплатформенных фреймворков
Никита Глушков, К вопросу о реализации кроссплатформенных фреймворковSergey Platonov
 
особенности программирования на с++
особенности программирования на с++особенности программирования на с++
особенности программирования на с++mcroitor
 
Догнать и перегнать boost::lexical_cast
Догнать и перегнать boost::lexical_castДогнать и перегнать boost::lexical_cast
Догнать и перегнать boost::lexical_castRoman Orlov
 
Евгений Зуев, С++ в России: Стандарт языка и его реализация
Евгений Зуев, С++ в России: Стандарт языка и его реализацияЕвгений Зуев, С++ в России: Стандарт языка и его реализация
Евгений Зуев, С++ в России: Стандарт языка и его реализацияPlatonov Sergey
 
Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...
Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...
Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...Alexey Paznikov
 
Урок 17. Паттерн 9. Смешанная арифметика
Урок 17. Паттерн 9. Смешанная арифметикаУрок 17. Паттерн 9. Смешанная арифметика
Урок 17. Паттерн 9. Смешанная арифметикаTatyanazaxarova
 
Антон Полухин, Немного о Boost
Антон Полухин, Немного о BoostАнтон Полухин, Немного о Boost
Антон Полухин, Немного о BoostSergey Platonov
 
Характерные черты функциональных языков программирования
Характерные черты функциональных языков программированияХарактерные черты функциональных языков программирования
Характерные черты функциональных языков программированияAlex.Kolonitsky
 
Лекция 6. Параллельная сортировка. Алгоритмы комбинаторного поиска. Параллель...
Лекция 6. Параллельная сортировка. Алгоритмы комбинаторного поиска. Параллель...Лекция 6. Параллельная сортировка. Алгоритмы комбинаторного поиска. Параллель...
Лекция 6. Параллельная сортировка. Алгоритмы комбинаторного поиска. Параллель...Alexey Paznikov
 
Лекция 8: Многопоточное программирование: Intel Threading Building Blocks
Лекция 8: Многопоточное программирование: Intel Threading Building BlocksЛекция 8: Многопоточное программирование: Intel Threading Building Blocks
Лекция 8: Многопоточное программирование: Intel Threading Building BlocksMikhail Kurnosov
 
Современный статический анализ кода: что умеет он, чего не умели линтеры
Современный статический анализ кода: что умеет он, чего не умели линтерыСовременный статический анализ кода: что умеет он, чего не умели линтеры
Современный статический анализ кода: что умеет он, чего не умели линтерыcorehard_by
 
Дмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVM
Дмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVMДмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVM
Дмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVMSergey Platonov
 
Теории и практики функционального программирования.
Теории и практики функционального программирования.Теории и практики функционального программирования.
Теории и практики функционального программирования.Dev2Dev
 
Михаил Давыдов - JavaScript. Базовые знания
Михаил Давыдов - JavaScript. Базовые знанияМихаил Давыдов - JavaScript. Базовые знания
Михаил Давыдов - JavaScript. Базовые знанияYandex
 
Шаблоны C++ и базы данных. Сергей Федоров. CoreHard Spring 2019
Шаблоны C++ и базы данных. Сергей Федоров. CoreHard Spring 2019Шаблоны C++ и базы данных. Сергей Федоров. CoreHard Spring 2019
Шаблоны C++ и базы данных. Сергей Федоров. CoreHard Spring 2019corehard_by
 
C++ и базы данных
C++ и базы данныхC++ и базы данных
C++ и базы данныхmcroitor
 
19 pascal urok_3
19 pascal urok_319 pascal urok_3
19 pascal urok_3Ann Eres
 

What's hot (20)

Cpp/cli types
Cpp/cli typesCpp/cli types
Cpp/cli types
 
хитрости выведения типов
хитрости выведения типовхитрости выведения типов
хитрости выведения типов
 
Никита Глушков, К вопросу о реализации кроссплатформенных фреймворков
Никита Глушков, К вопросу о реализации кроссплатформенных фреймворковНикита Глушков, К вопросу о реализации кроссплатформенных фреймворков
Никита Глушков, К вопросу о реализации кроссплатформенных фреймворков
 
особенности программирования на с++
особенности программирования на с++особенности программирования на с++
особенности программирования на с++
 
Догнать и перегнать boost::lexical_cast
Догнать и перегнать boost::lexical_castДогнать и перегнать boost::lexical_cast
Догнать и перегнать boost::lexical_cast
 
Евгений Зуев, С++ в России: Стандарт языка и его реализация
Евгений Зуев, С++ в России: Стандарт языка и его реализацияЕвгений Зуев, С++ в России: Стандарт языка и его реализация
Евгений Зуев, С++ в России: Стандарт языка и его реализация
 
Lecture 1
Lecture 1Lecture 1
Lecture 1
 
Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...
Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...
Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...
 
Урок 17. Паттерн 9. Смешанная арифметика
Урок 17. Паттерн 9. Смешанная арифметикаУрок 17. Паттерн 9. Смешанная арифметика
Урок 17. Паттерн 9. Смешанная арифметика
 
Антон Полухин, Немного о Boost
Антон Полухин, Немного о BoostАнтон Полухин, Немного о Boost
Антон Полухин, Немного о Boost
 
Характерные черты функциональных языков программирования
Характерные черты функциональных языков программированияХарактерные черты функциональных языков программирования
Характерные черты функциональных языков программирования
 
Лекция 6. Параллельная сортировка. Алгоритмы комбинаторного поиска. Параллель...
Лекция 6. Параллельная сортировка. Алгоритмы комбинаторного поиска. Параллель...Лекция 6. Параллельная сортировка. Алгоритмы комбинаторного поиска. Параллель...
Лекция 6. Параллельная сортировка. Алгоритмы комбинаторного поиска. Параллель...
 
Лекция 8: Многопоточное программирование: Intel Threading Building Blocks
Лекция 8: Многопоточное программирование: Intel Threading Building BlocksЛекция 8: Многопоточное программирование: Intel Threading Building Blocks
Лекция 8: Многопоточное программирование: Intel Threading Building Blocks
 
Современный статический анализ кода: что умеет он, чего не умели линтеры
Современный статический анализ кода: что умеет он, чего не умели линтерыСовременный статический анализ кода: что умеет он, чего не умели линтеры
Современный статический анализ кода: что умеет он, чего не умели линтеры
 
Дмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVM
Дмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVMДмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVM
Дмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVM
 
Теории и практики функционального программирования.
Теории и практики функционального программирования.Теории и практики функционального программирования.
Теории и практики функционального программирования.
 
Михаил Давыдов - JavaScript. Базовые знания
Михаил Давыдов - JavaScript. Базовые знанияМихаил Давыдов - JavaScript. Базовые знания
Михаил Давыдов - JavaScript. Базовые знания
 
Шаблоны C++ и базы данных. Сергей Федоров. CoreHard Spring 2019
Шаблоны C++ и базы данных. Сергей Федоров. CoreHard Spring 2019Шаблоны C++ и базы данных. Сергей Федоров. CoreHard Spring 2019
Шаблоны C++ и базы данных. Сергей Федоров. CoreHard Spring 2019
 
C++ и базы данных
C++ и базы данныхC++ и базы данных
C++ и базы данных
 
19 pascal urok_3
19 pascal urok_319 pascal urok_3
19 pascal urok_3
 

Similar to Step cpp022

5.1 Перегрузка операторов
5.1 Перегрузка операторов5.1 Перегрузка операторов
5.1 Перегрузка операторовDEVTYPE
 
тема 2.операторы.линейный алгоритм
тема 2.операторы.линейный алгоритмтема 2.операторы.линейный алгоритм
тема 2.операторы.линейный алгоритмdasha2012
 
Введение в синтаксис C++, часть 2
Введение в синтаксис C++, часть 2Введение в синтаксис C++, часть 2
Введение в синтаксис C++, часть 2DEVTYPE
 
Введение в синтаксис C++, часть 1
Введение в синтаксис C++, часть 1Введение в синтаксис C++, часть 1
Введение в синтаксис C++, часть 1DEVTYPE
 
алг и прогр (11кл)
алг и прогр (11кл)алг и прогр (11кл)
алг и прогр (11кл)isva69
 
алг и прогр (11кл)
алг и прогр (11кл)алг и прогр (11кл)
алг и прогр (11кл)isva69
 
Tech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU: Как приручить дракона: введение в LLVMTech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU: Как приручить дракона: введение в LLVMTech Talks @NSU
 
Как приручить дракона: введение в LLVM
Как приручить дракона: введение в LLVMКак приручить дракона: введение в LLVM
Как приручить дракона: введение в LLVMTech Talks @NSU
 
DSLs in Lisp and Clojure
DSLs in Lisp and ClojureDSLs in Lisp and Clojure
DSLs in Lisp and ClojureVasil Remeniuk
 
C language lect_06_introduction
C language lect_06_introductionC language lect_06_introduction
C language lect_06_introductionRoman Brovko
 
20100927 28 reqformalization-kuliamin
20100927 28 reqformalization-kuliamin20100927 28 reqformalization-kuliamin
20100927 28 reqformalization-kuliaminComputer Science Club
 
основы Java переменные, циклы
основы Java   переменные, циклыосновы Java   переменные, циклы
основы Java переменные, циклыSergey Nemchinsky
 
лекция 3. программирование циклов
лекция 3. программирование цикловлекция 3. программирование циклов
лекция 3. программирование цикловstudent_kai
 
презентации продолжение банкета
презентации продолжение банкетапрезентации продолжение банкета
презентации продолжение банкетаstudent_kai
 
оператор присваивания и процедуры ввода и вывода
оператор присваивания и процедуры ввода и выводаоператор присваивания и процедуры ввода и вывода
оператор присваивания и процедуры ввода и выводаliza2209
 
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...Yandex
 

Similar to Step cpp022 (20)

5.1 Перегрузка операторов
5.1 Перегрузка операторов5.1 Перегрузка операторов
5.1 Перегрузка операторов
 
тема 2.операторы.линейный алгоритм
тема 2.операторы.линейный алгоритмтема 2.операторы.линейный алгоритм
тема 2.операторы.линейный алгоритм
 
лекция 1
лекция 1лекция 1
лекция 1
 
Введение в синтаксис C++, часть 2
Введение в синтаксис C++, часть 2Введение в синтаксис C++, часть 2
Введение в синтаксис C++, часть 2
 
Введение в синтаксис C++, часть 1
Введение в синтаксис C++, часть 1Введение в синтаксис C++, часть 1
Введение в синтаксис C++, часть 1
 
лекция 2
лекция 2лекция 2
лекция 2
 
алг и прогр (11кл)
алг и прогр (11кл)алг и прогр (11кл)
алг и прогр (11кл)
 
алг и прогр (11кл)
алг и прогр (11кл)алг и прогр (11кл)
алг и прогр (11кл)
 
Lektsia 9
Lektsia 9Lektsia 9
Lektsia 9
 
Tech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU: Как приручить дракона: введение в LLVMTech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU: Как приручить дракона: введение в LLVM
 
Как приручить дракона: введение в LLVM
Как приручить дракона: введение в LLVMКак приручить дракона: введение в LLVM
Как приручить дракона: введение в LLVM
 
DSLs in Lisp and Clojure
DSLs in Lisp and ClojureDSLs in Lisp and Clojure
DSLs in Lisp and Clojure
 
Progr labrab-6-2013 - c++ - functions
Progr labrab-6-2013 - c++ - functionsProgr labrab-6-2013 - c++ - functions
Progr labrab-6-2013 - c++ - functions
 
C language lect_06_introduction
C language lect_06_introductionC language lect_06_introduction
C language lect_06_introduction
 
20100927 28 reqformalization-kuliamin
20100927 28 reqformalization-kuliamin20100927 28 reqformalization-kuliamin
20100927 28 reqformalization-kuliamin
 
основы Java переменные, циклы
основы Java   переменные, циклыосновы Java   переменные, циклы
основы Java переменные, циклы
 
лекция 3. программирование циклов
лекция 3. программирование цикловлекция 3. программирование циклов
лекция 3. программирование циклов
 
презентации продолжение банкета
презентации продолжение банкетапрезентации продолжение банкета
презентации продолжение банкета
 
оператор присваивания и процедуры ввода и вывода
оператор присваивания и процедуры ввода и выводаоператор присваивания и процедуры ввода и вывода
оператор присваивания и процедуры ввода и вывода
 
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
 

Step cpp022

  • 2. 2 Домашние задания Ссылка на проекты через Google-диск не открывается "Этот файл нельзя открыть, так как он нарушает Условия использования". Скорее всего, внутри присланного архива - *.exe файлы. Сделайте так:  скопировать папку проекта,  удалить в копии папки • .vs, • Debug  оставшиеся файлы (текстовые исходники проекта) архивировать и присылать. В итоге прохождения академии выпускники получают диплом. В дипломе – оценки за экзамены. К экзаменам допускаются после сдачи ВСЕХ самостоятельных и домашних работ.
  • 3. 3 Выполнение домашнего задания #include <Windows.h> HANDLE console = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(console, FOREGROUND_RED | FOREGROUND_INTENSITY); cout << "tКаждыйn"; SetConsoleTextAttribute(console, FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_INTENSITY); cout << "ttОхотникn"; SetConsoleTextAttribute(console, FOREGROUND_GREEN | FOREGROUND_RED); cout << "tttЖелаетn"; SetConsoleTextAttribute(console, FOREGROUND_GREEN | FOREGROUND_INTENSITY); cout << "ttttЗнатьn"; SetConsoleTextAttribute(console, FOREGROUND_BLUE | FOREGROUND_INTENSITY | FOREGROUND_GREEN); cout << "tttttГдеn"; SetConsoleTextAttribute(console, FOREGROUND_BLUE | FOREGROUND_INTENSITY | FOREGROUND_BLUE); cout << "ttttttСидитn"; SetConsoleTextAttribute(console, FOREGROUND_BLUE | FOREGROUND_INTENSITY | FOREGROUND_RED); cout << "tttttttФазан!n" << endl;
  • 4. 4 Прошлое занятие (2-1) 1. Структура программы. 2. Элементы текста программы. 3. Переменные. 4. Типы данных. 5. Константы и литералы. 6. Ввод данных с консоли. 7. Работа с кириллицей.
  • 5. 5 Основные понятия (1) #include <iostream> using namespace std; int main() { setlocale(LC_ALL, ""); cout << "Консольный калькулятор." << endl << endl; int a; cout << "Введите a: "; cin >> a; int b; cout << "Введите b: "; cin >> b; int c = a + b; cout << endl << a << " + " << b << " = " << c << endl; system("pause"); } Среда разработки Решение Проект Исходный файл Компилятор Шаблоны проектов Консольная программа Директивы препроцессора <iostream> - подключение ввода-вывода Пространство имен using namespace std – стандартная библиотека С++ Функция Заголовок функции Параметры функции ( ) Возвращаемое значение Тип возвращаемого значения Тело функции { } Функция main Оператор ; Лексема
  • 6. 6 Основные понятия (2) #include <iostream> using namespace std; int main() { setlocale(LC_ALL, ""); cout << "Консольный калькулятор." << endl << endl; int a; cout << "Введите a: "; cin >> a; int b; cout << "Введите b: "; cin >> b; int c = a + b; cout << endl << a << " + " << b << " = " << c << endl; system("pause"); } Ключевые слова Вызов функции Локализация вывода символов Функция setlocale Вывод на экран Объект cout Оператор << Текстовый литерал “ ” Объект endl Переменная Оператор определения переменной Тип переменной int Имя переменной Правила задания имен переменных Рекомендации по заданию имен Ввод с клавиатуры Объект cin Оператор >> Оператор присвоения Арифметические операторы Функция system System(“pause”)
  • 7. 7 Занятие 2-2. Операторы ■ Понятие оператора. ■ Типы операторов. ■ Арифметические операторы. ■ Логические операторы. ■ Операторы ветвлений. ■ Унарные операторы. ■ Бинарные операторы. ■ Тернарный оператор. ■ Оператор присваивания. ■ Арифметические операторы. ■ Оператор сложения. ■ Оператор вычитания. ■ Оператор умножения. ■ Инкремент. Постфиксная и префиксная форма. ■ Декремент. Постфиксная и префиксная форма. ■ Сокращенные формы
  • 8. 8 Занятие 2-2. Операторы Оператор (operator) – знак операции:  арифметические;  увеличения и уменьшения;  операторы отношения и логические;  битовые;  тернарный;  другие. Оператор (statement) – инструкция: • присваивания; • вызова функции; • ветвления; • циклов; • Другие.
  • 9. 9 Добавляем запрос операции if (sign == "+") // условный оператор if (условие) { // начало блока операторов int c = a + b; } // конец блока операторов int c = 0; // определяем переменную if (sign == "+") { c = a + b; // используем переменную } else // иначе { cout << "Ошибка в знаке!" << endl; } { cout << "Ошибка в знаке!" << endl; system("pause"); return 0; // выход из функции }
  • 10. 10 Реализуем арифметику (вложенный if) cout << "Введите знак (+ - * /): "; ... int c = 0; if (sign == "+") // если { c = a + b; } else // иначе if (sign == "-") // если { c = a - b; } else // иначе if (sign == "*") // если { c = a * b; } else if (sign == "/") { c = a / b; } else // иначе { cout << "Ошибка в знаке!" << endl; system("pause"); return 0; }
  • 11. 11 Последовательные if if (sign == "+") { c = a + b; } if (sign == "-") { c = a - b; } if (sign == "*") { c = a * b; } if (sign == "/") { c = a / b; } if (sign != "+" && sign != "-" && sign != "*" && sign != "/") { cout << "Ошибка в знаке!" << endl; system("pause"); return 0; }
  • 12. 12 Разбираемся с делением int a = 8; int b = 3 double c = a / b; // c = 2 int a = 8; double b = 3 double c = a / b; // c = 2.666… double a; double b; double c = 0; cout << endl << a << " " << sign << " " << b << " = " << c << endl;
  • 13. 13 Двоичные числа, целые и плавающие 9900910 9 * 105 + 9 * 104 + 0 * 103 + 0 * 102 + 0 * 101 + 1 * 100 = 99009 110012 1 * 25 + 1 * 24 + 0 * 23 + 0 * 22 + 0 * 21 + 1 * 20 = 49
  • 14. 14 Плавающая арифметика - приближенная Двоичная дробь = а * 2-1 + а * 2-2 + а * 2-3 + . . . = 0.5 + 0.25 + 0.125 + … Как представить 0.7 ? – только приближенно double x = 1.0; double y = (x / b) * b; if (x == y) ? не обязательно будет равно
  • 15. 15 Оператор присваивания int a = 6; int b = a – 4; int c = a * b – sin(a); b = b + c; переменная = значение (выражение: переменные, знаки операций, скобки, вызовы функци1)
  • 16. 16 Арифметические операторы Оператор Действие + Сложение - Вычитание, унарный минус * Умножение / Деление % Взятие остатка ++ Увеличение (инкремент) -- Уменьшение (декремент) int a = 6 + 4 * 3; // 18 int b = (6 + 4) * 3; // 30 int c = b / a; // 1 int d = b % a; // 12 a++; // 19 d = b++; // d =30 b = 31 c = --d; // c = d = 29 int a = 6 + 4 * 3; // 18 int b = (6 + 4) * 3; // 30 int c = b / a; // 1 int d = b % a; // 12 a++; // 19 d = b++; // d =30 b = 31 c = --d; // c = d = 29
  • 17. 17 Операторы отношения Оператор Действие > Больше >= Больше или равно < Меньше <= Меньше или равно == Равно != Не равно Результатом отношения является логическое (булево) значение. Логические значения бывают: true (да, 1) false (нет, 0) bool b = 10 > 3; // b = true;
  • 18. 18 Логические операторы Оператор Действие && И || ИЛИ ! НЕ А B && || ! F F F F T F T F T T F F T F T T T T Приоритеты логических операций: ! - (унарный минус) && *(умножение) || +(сложение) Приоритеты арифметических операций выше, но лучше расставлять скобки.
  • 19. 19 Операторы ветвления Оператор if if (выражение) оператор; else оператор; Оператор switch switch (выражение) { case константа1: операторы; case константа2: операторы; default: } Оператор ? (тернарный) условие ? выражение1 : выражение2;
  • 20. 20 Оператор if if (условие) { операторы; } if (условие) { операторы; } else if (условие) { операторы; } . . . else { операторы; } if (условие) { операторы; } else { операторы; }
  • 21. 21 Сокращенные формы оператора присвоения а = а + 1; а += 1; а++; -= *= /= %= Совмещение бинарного оператора с присвоением
  • 22. 22 Новые понятия и обозначения (1) условный оператор if условие (сравнение) == блок { операторы } условный оператор if else условный оператор if else if else ... else return return значение; область существования переменной - блок арифметические операторы + - * / приоритеты арифметических операторов целочисленное деление double позиционные системы счисления двоичные числа представление чисел в компьютере мантисса и порядок нормализация вещественного числа плавающие числа - приближенные
  • 23. 23 Новые понятия и обозначения (2) оператор присвоения = значение выражение оператор взятия остатка % оператор инкремента ++ оператор декремента -- унарный, бинарный, тернарный операнды префиксная и постфиксная форма записи унарного операнда операторы отношения != логический тип bool логические значения true false логические операторы && || ! приоритеты логических операторов операторы ветвления сокращенные формы оператора присваивания += *= ...
  • 24. 24 Самостоятельная работа 2 – 2 (1) Встреча №4 Задание 1. Пользователь вводит номер года. Необходимо написать программу, которая выведет количество дней в этом году. При написании программы использовать линейный алгоритм (конструкции условного выбора не использовать). Например, пользователь ввел год 2004, программа сообщает, что в этом году 366 дней в следующей форме: In 2004 year = 366 days Задание 2. Пользователь вводит с клавиатуры денежную сумму в гривнах и копейках (гривны и копейки вводятся в разные переменные). Сумма может быть введена как правильно (например 19грн. 90 коп), так и неправильно (например 22грн. 978 коп). Написать программу, которая, используя только линейный алгоритм, осуществит корректировку введенной денежной суммы в правильную форму. Например, если пользователь ввел 11грн 150 коп, программа должна вывести на экран сумму 12грн. 50 коп. Задание 3. Написать программу вычисления объема параллелепипеда. Ниже приведен рекомендуемый вид экрана во время выполнения программы. Вычисление объема параллелепипеда. Введите исходные данные: Длина (см) -> 9 Ширина (см) -> 7.5 Высота (см) -> 5 Объем: 337.50 куб.см.
  • 25. 25 Самостоятельная работа 2 – 2 (2) Встреча №4 Задание 4. Написать программу вычисления расстояния между населенными пунктами, изображенными на карте. Ниже приведен рекомендуемый вид экрана во время выполнения программы. Вычисление расстояния между населенными пунктами. Введите исходные данные: Масштаб карты (количество километров в одном сантиметре) -> 120 Расстояние между точками, изображающими населенные пункты (см) -> 3.5 Расстояние между населенными пунктами 420 км. Задание 5. Напишите программу, которая вычисляет объём шара.
  • 26. 26 Домашнее задание 2 (1) Встреча №3 Задание 1: Заданы три сопротивлении R1, R2, R3 . Вычислить значение сопротивления R0 по формуле: 1/R0 = 1/R1+1/R2+1/R3. Контрольный пример: R1=2, R2=4, R3=8 R0 = 1.142857 Задание 2: По заданной длине окружности найти площадь круга по формуле S = pi*R2, радиус вычислить из формулы длины окружности: L=2*pi *R Примечание pi = 3.14 Задание 3: Вычислить пройденное расстояние при прямолинейном равноускоренном движении по формуле S = v*t + (a*t2) / 2, где v – скорость, t – время, а – ускорение.
  • 27. 27 Домашнее задание 2 (2) Встреча №4 Задание 1. Пользователь вводит с клавиатуры время в секундах. Необходимо написать программу, которая переведет введенные пользователем секунды в часы, минуты, секунды и выводит их на экран. Задание 2. Написать программу, которая преобразует введенное с клавиатуры дробное число в денежный формат. Например, число 12,5 должно быть преобразовано к виду 12грн 50 коп. Задание 3. Написать программу, вычисляющую, с какой скоростью бегун пробежал дистанцию. Рекомендуемый вид экрана во время выполнения программы приведен ниже: Вычисление скорости бега Введите длину дистанции (метров) = 1000 Введите время (мин.сек) = 3.25 Дистанция: 1000 м Время: 3 мин 25 сек = 205 сек Вы бежали со скоростью 17.56 км/ч
  • 28. 28 Домашнее задание 2 (3) Задание 4. Пользователь указывает цену одой минуты исходящего звонка с одного мобильного оператора другому, а также продолжительность разговора в минутах и секундах. Необходимо вычислить денежную сумму на которую был произведен звонок. Задание 5. Написать программу, которая преобразует введенное пользователем количество дней в количество полных недель и оставшихся дней. Например, пользователь ввел 17 дней, программа должна вывести на экран 2 недели и 3 дня.