Стив Джобс: «I think everybody should learn how
to program a computer because it teaches you how
to think»
«Каждый должен учиться программированию,
потому что это учит людей думать».
В современном мире изучение программирования
открывает перед человеком большие возможности и
перспективы. И дело не только в шестизначных цифрах,
которые готовы платить крупные компании за работу
квалифицированных IT-специалистов, но и в том, что
программирование — ключ к пониманию особенностей
работы современной техники и, независимо от
избранной профессии, базовые навыки
программирования могут быть полезными всем.
«Мы хотим сорвать покров с магического
искусства программирования, который отделяет
вас от Марка Цукерберга», — говорит глава
Code.org, экс-менеджер Microsoft Хади Партови.
ТИПЫ ДАННЫХ:
int – целочисленный
char – символьный
bool – логический
float – вещественный с
плавающей точкой одиночной
точности, 7 зн.
double – вещественный с
плавающей точкой двойной
точности, 14 зн.
4
1
4
1
8
4
byte
byte
byte
byte
byte
byte
int a, b, c
float x, y, z
double x, y, z
char d, e, f
bool g, h, k
12 byte
12 byte
24 byte
3 byte
3 byte
width(), precision() и fill().
int width(int wide);
int width() const;
int precision(int prec);
int precision() const;
char fill(char type ch);
char fill() const;
x sqrt(x) х^2
0000001 0000001 0000001
0000002 01.4142 0000004
0000003 01.7321 0000009
0000004 0000002 0000016
0000005 02.2361 0000025
0000006 02.4495 0000036
Таблица
Флаги форматирования и их назначение
Флаг Назначение
hex Значения целого типа преобразуются к основанию 16 (как шестнадцатеричные)
dec Значения целого типа преобразуются к основанию 10
oct Значения целого типа преобразуются к основанию 8 (как восьмеричные)
fixed
Числа с плавающей точкой выводятся в формате с фиксированной точкой (то есть
nnn.ddd)
scientific
Числа с плавающей точкой выводятся в так называемой научной записи (то есть
n.хххЕуу)
showbase
Выводится основание системы счисления в виде префикса к целому числовому
значению (например, число 1FE выводится как 0x1FE)
showpos При выводе положительных числовых значений выводится знак плюс
uppercase
Заменяет определенные символы нижнего регистра на символы верхнего регистра
(символ "е" при выводе чисел в научной нотации на "Е" и символ "х" при выводе 16-
ричных чисел на "X")
left Данные при выводе выравниваются по левому краю поля
right Данные при выводе выравниваются по правому краю поля
internal
Добавляются символы-заполнители между всеми цифрами и знаками числа для
заполнения поля вывода
skipws
Ведущие символы-заполнители (знаки пробела, табуляции и перевода на новую строку)
отбрасываются
stdio Потоки stdout, stderr очищаются после каждой операции вставки
unitbuf Очищаются все выходные потоки после каждой операции вставки в поток
stdio Очищаются stdout, stderr после каждой операции вставки в поток
В качестве второго параметра функции setf() можно
использовать следующие константы, определенные в
классе ios:
static const long basefield; // = dec | oct | hex
static const long adjustfield; // = left | right | internal
static const long floatfield; // = scientific | fixed
Таблица
Манипуляторы ввода-вывода и их назначение
Манипулятор Использование Назначение
dec Ввод-вывод Устанавливает флаг dec
endl Вывод
Вставляет символ новой строки и
очищает буфер
ends Вывод Вставляет символ конца
flush Вывод Очищает буфер потока
hex Ввод-вывод Устанавливает флаг hex
oct Ввод-вывод Устанавливает флаг oct
resetiosflags (iosbase::long mask) Ввод-вывод
Сбрасывает ios-флаги в
соответствии с mask
Setbase (int base) Ввод-вывод
Задает основание системы
счисления для целых (8, 10, 16)
Setfill (int c) Ввод-вывод Устанавливает символ-заполнитель
setiosflags (iosbase::long mask) Ввод-вывод
Устанавливает ios-флаги в
соответствии с mask
setprecision (int n) Ввод-вывод
Устанавливает точность чисел с
плавающей точкой
setw(int n) Ввод-вывод
Устанавливает минимальную
ширину поля
ws Ввод
Устанавливает пропуск символов-
заполнителей
. . .
char array[SIZE];
cin>>setw(sizeof(array)); // Или cin.width(sizeof(array));
// Ограничивает число вводимых символов
. . . // и позволяет избежать выхода
// за границу массива.
cin >> array;
ТЕМА:
«Программирование ветвящихся
алгоритмов на языке C++»
Начало
Конец
ОПЕРАТОРЫ ОТНОШЕНИЯ В УСЛОВНЫХ ВЫРАЖЕНИЯХ
< Меньше
<= Меньше или равно
> Больше
>= Больше или равно
== Равно
! = Не равно
Условный оператор с одной ветвью
if условие then команды end
Условный оператор с двумя ветвями
if условие then команды1 else команды2 end
if (условие)
фрагмент кода 1
else
фрагмент кода 2
Использование условного оператора в C
Условие – это любое
выражение, которое
возвращает булево
значение true или false.
if (условие)
{ операторы1 }
else
{ операторы2 }
Замена одиночного оператора блоком
Блок состоит из группы операторов, заключенных в фигурные скобки ({ и }).
Фрагменты кода операторы1 и операторы2 являются блоками,
т.к. заключены в фигурные скобки.
Использовать блоки, даже в случае одного оператора.
Фигурные скобки, отмечающие границы блока,
могут находится на отдельных строках:
if (условие)
{
операторы1
}
else
{
операторы2
}
В общем случае условный оператор
if имеет вид:
if (выражение 1) оператор1;
else if (выражение 2) оператор 2;
else if (выражение 3) оператор 3;
else оператор N;
Оператор множественного выбора switch
Синтаксис оператора множественного
выбора:
switch (выражение)
{
case значение 1: оператор 1; break;
case значение 2: оператор 2; break;
…
default: оператор по несовпадению
}
Пример 1
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int a,b,res;
char op;
cout << "type a->" << endl;
cin >> a;
cout << "type b->" << endl;
cin >> b;
cout << "type op->" << endl;
//op - операция (+,-,/,*)
cin >> op;
switch(op)
{
case '+': res = a+b; cout << "res = " << res << endl; break;
case '-': res = a-b; cout << "res = " << res << endl; break;
case '*': res = a*b; cout << "res = " << res << endl; break;
default : cout << "Unknown oparator" << endl;
}
}
Самостоятельно:
реализуйте деление и
предусмотрите деление на ноль!
ЗАДАЧА 1#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int a,b,res;
char op;
cout << "type a->" << endl;
cin >> a;
cout << "type b->" << endl;
cin >> b;
cout << "type op->" << endl;
//op - операция (+,-,/,*)
cin >> op;
switch(op)
{
case '+': res = a+b; cout << "res = " << res << endl; break;
case '-': res = a-b; cout << "res = " << res << endl; break;
case '*': res = a*b; cout << "res = " << res << endl; break;
default : cout << "Unknown oparator" << endl;
}
}
Самостоятельно:
распишите сегодняшние пары
и их время!
ЗАДАЧА 2
#include <iostream>
using namespace std;
int main()
{
int item;
puts("1. Night;");
puts("2. Morning;");
puts("3. Day;");
puts("4. Afternoon;");
puts("5. Evening;");
cout << "Print item number" << endl;
cin >> item;
switch(item)
{
case 1: puts("From 22 to 3 - Night"); break;
case 2: puts("From 4 to 10 - Morning"); break;
case 3: puts("From 11 to 14 - Day"); break;
case 4: puts("From 15 to 16 - Afternoon"); break;
case 5: puts("From 17 to 21 - Evening"); break;
default: puts("Error!");
}
return 0;
}
Ввести 3 числа cin a,b,c типа double, вывести
максимальное из этих чисел
#include <iostream>
#include <clocale>
using namespace std;
intmain()
{
double a,b,c,max;
setlocale(LC_ALL,"russian");
cout << "Введите a,b,c: << endl;
cin >> a >> b >> c;
/*реализовать блоки if*/
/*вывод*/
/*закрытие тела main*/
ЗАДАЧА 3

Programming c++ (begin-if-else)

  • 1.
    Стив Джобс: «Ithink everybody should learn how to program a computer because it teaches you how to think» «Каждый должен учиться программированию, потому что это учит людей думать».
  • 2.
    В современном миреизучение программирования открывает перед человеком большие возможности и перспективы. И дело не только в шестизначных цифрах, которые готовы платить крупные компании за работу квалифицированных IT-специалистов, но и в том, что программирование — ключ к пониманию особенностей работы современной техники и, независимо от избранной профессии, базовые навыки программирования могут быть полезными всем.
  • 3.
    «Мы хотим сорватьпокров с магического искусства программирования, который отделяет вас от Марка Цукерберга», — говорит глава Code.org, экс-менеджер Microsoft Хади Партови.
  • 4.
    ТИПЫ ДАННЫХ: int –целочисленный char – символьный bool – логический float – вещественный с плавающей точкой одиночной точности, 7 зн. double – вещественный с плавающей точкой двойной точности, 14 зн. 4 1 4 1 8 4 byte byte byte byte byte byte
  • 5.
    int a, b,c float x, y, z double x, y, z char d, e, f bool g, h, k 12 byte 12 byte 24 byte 3 byte 3 byte
  • 7.
  • 8.
  • 9.
    int precision(int prec); intprecision() const;
  • 10.
    char fill(char typech); char fill() const;
  • 11.
    x sqrt(x) х^2 00000010000001 0000001 0000002 01.4142 0000004 0000003 01.7321 0000009 0000004 0000002 0000016 0000005 02.2361 0000025 0000006 02.4495 0000036
  • 12.
    Таблица Флаги форматирования иих назначение Флаг Назначение hex Значения целого типа преобразуются к основанию 16 (как шестнадцатеричные) dec Значения целого типа преобразуются к основанию 10 oct Значения целого типа преобразуются к основанию 8 (как восьмеричные) fixed Числа с плавающей точкой выводятся в формате с фиксированной точкой (то есть nnn.ddd) scientific Числа с плавающей точкой выводятся в так называемой научной записи (то есть n.хххЕуу) showbase Выводится основание системы счисления в виде префикса к целому числовому значению (например, число 1FE выводится как 0x1FE) showpos При выводе положительных числовых значений выводится знак плюс uppercase Заменяет определенные символы нижнего регистра на символы верхнего регистра (символ "е" при выводе чисел в научной нотации на "Е" и символ "х" при выводе 16- ричных чисел на "X") left Данные при выводе выравниваются по левому краю поля right Данные при выводе выравниваются по правому краю поля internal Добавляются символы-заполнители между всеми цифрами и знаками числа для заполнения поля вывода skipws Ведущие символы-заполнители (знаки пробела, табуляции и перевода на новую строку) отбрасываются stdio Потоки stdout, stderr очищаются после каждой операции вставки unitbuf Очищаются все выходные потоки после каждой операции вставки в поток stdio Очищаются stdout, stderr после каждой операции вставки в поток
  • 13.
    В качестве второгопараметра функции setf() можно использовать следующие константы, определенные в классе ios: static const long basefield; // = dec | oct | hex static const long adjustfield; // = left | right | internal static const long floatfield; // = scientific | fixed
  • 14.
    Таблица Манипуляторы ввода-вывода иих назначение Манипулятор Использование Назначение dec Ввод-вывод Устанавливает флаг dec endl Вывод Вставляет символ новой строки и очищает буфер ends Вывод Вставляет символ конца flush Вывод Очищает буфер потока hex Ввод-вывод Устанавливает флаг hex oct Ввод-вывод Устанавливает флаг oct resetiosflags (iosbase::long mask) Ввод-вывод Сбрасывает ios-флаги в соответствии с mask Setbase (int base) Ввод-вывод Задает основание системы счисления для целых (8, 10, 16) Setfill (int c) Ввод-вывод Устанавливает символ-заполнитель setiosflags (iosbase::long mask) Ввод-вывод Устанавливает ios-флаги в соответствии с mask setprecision (int n) Ввод-вывод Устанавливает точность чисел с плавающей точкой setw(int n) Ввод-вывод Устанавливает минимальную ширину поля ws Ввод Устанавливает пропуск символов- заполнителей
  • 15.
    . . . chararray[SIZE]; cin>>setw(sizeof(array)); // Или cin.width(sizeof(array)); // Ограничивает число вводимых символов . . . // и позволяет избежать выхода // за границу массива. cin >> array;
  • 16.
  • 17.
  • 19.
    ОПЕРАТОРЫ ОТНОШЕНИЯ ВУСЛОВНЫХ ВЫРАЖЕНИЯХ < Меньше <= Меньше или равно > Больше >= Больше или равно == Равно ! = Не равно
  • 20.
    Условный оператор содной ветвью if условие then команды end Условный оператор с двумя ветвями if условие then команды1 else команды2 end
  • 21.
    if (условие) фрагмент кода1 else фрагмент кода 2 Использование условного оператора в C
  • 22.
    Условие – этолюбое выражение, которое возвращает булево значение true или false.
  • 23.
    if (условие) { операторы1} else { операторы2 } Замена одиночного оператора блоком Блок состоит из группы операторов, заключенных в фигурные скобки ({ и }). Фрагменты кода операторы1 и операторы2 являются блоками, т.к. заключены в фигурные скобки. Использовать блоки, даже в случае одного оператора.
  • 24.
    Фигурные скобки, отмечающиеграницы блока, могут находится на отдельных строках: if (условие) { операторы1 } else { операторы2 }
  • 25.
    В общем случаеусловный оператор if имеет вид: if (выражение 1) оператор1; else if (выражение 2) оператор 2; else if (выражение 3) оператор 3; else оператор N;
  • 26.
    Оператор множественного выбораswitch Синтаксис оператора множественного выбора: switch (выражение) { case значение 1: оператор 1; break; case значение 2: оператор 2; break; … default: оператор по несовпадению }
  • 27.
    Пример 1 #include <iostream> #include<cstdio> using namespace std; int main() { int a,b,res; char op; cout << "type a->" << endl; cin >> a; cout << "type b->" << endl; cin >> b; cout << "type op->" << endl; //op - операция (+,-,/,*) cin >> op; switch(op) { case '+': res = a+b; cout << "res = " << res << endl; break; case '-': res = a-b; cout << "res = " << res << endl; break; case '*': res = a*b; cout << "res = " << res << endl; break; default : cout << "Unknown oparator" << endl; } }
  • 28.
    Самостоятельно: реализуйте деление и предусмотритеделение на ноль! ЗАДАЧА 1#include <iostream> #include <cstdio> using namespace std; int main() { int a,b,res; char op; cout << "type a->" << endl; cin >> a; cout << "type b->" << endl; cin >> b; cout << "type op->" << endl; //op - операция (+,-,/,*) cin >> op; switch(op) { case '+': res = a+b; cout << "res = " << res << endl; break; case '-': res = a-b; cout << "res = " << res << endl; break; case '*': res = a*b; cout << "res = " << res << endl; break; default : cout << "Unknown oparator" << endl; } }
  • 29.
    Самостоятельно: распишите сегодняшние пары иих время! ЗАДАЧА 2 #include <iostream> using namespace std; int main() { int item; puts("1. Night;"); puts("2. Morning;"); puts("3. Day;"); puts("4. Afternoon;"); puts("5. Evening;"); cout << "Print item number" << endl; cin >> item; switch(item) { case 1: puts("From 22 to 3 - Night"); break; case 2: puts("From 4 to 10 - Morning"); break; case 3: puts("From 11 to 14 - Day"); break; case 4: puts("From 15 to 16 - Afternoon"); break; case 5: puts("From 17 to 21 - Evening"); break; default: puts("Error!"); } return 0; }
  • 30.
    Ввести 3 числаcin a,b,c типа double, вывести максимальное из этих чисел #include <iostream> #include <clocale> using namespace std; intmain() { double a,b,c,max; setlocale(LC_ALL,"russian"); cout << "Введите a,b,c: << endl; cin >> a >> b >> c; /*реализовать блоки if*/ /*вывод*/ /*закрытие тела main*/ ЗАДАЧА 3

Editor's Notes

  • #24 Хорошим стилем программирования считается использование блоков, даже в случае одного оператора. Таким образом, при необходимости добавить ещё одно выражение, блок уже находится в нужном месте. Если же блока нет, можно допустить ошибку, добавить выражение и забыв добавить блок.