Основы программирования на C++: различия между версиями

Материал из Олимпиадное программирование в УлГТУ
Перейти к навигации Перейти к поиску
Нет описания правки
Строка 36: Строка 36:
== Вспомогательные материалы к занятиям ==
== Вспомогательные материалы к занятиям ==
=== Введение. Переменные. Ввод-вывод ===
=== Введение. Переменные. Ввод-вывод ===
Минимальная программа на C++:
==== Минимальная программа на C++ ====
  int main() {
  int main() {
      
      
  }
  }


Использование переменных:
В любой программе всегда должна быть функция main. Фигурные скобки обозначают начало и конец функции, все команды записываются внутри.
int main() {
 
    int userAge;                        //Целое число userAge, содержит случайное значение
До функции main, в самом начале файла, обычно указываются директивы #include (например #include <stdio.h>).
    int radius = 100;                   //Целое число radius, содержит значение 100
 
    double pi = 3.14, e = 2.718;       //Дробные числа pi и e, содержат соответственно значения 3.14 и 2.718
==== Использование переменных ====
    double area = pi * radius * radius; //Дробное число area, вычисляется как pi * radius * radius
 
  }
Чтобы добавить в программу переменную, укажите её тип, название и, если необходимо, начальное значение.
 
int radius = 100;                           //целое число radius со значением 100
double circleArea = 3.14 * radius * radius; //дробное число circleArea, значение вычисляется по формуле
 
Переменные могут менять своё значение:
 
radius = radius * 2; //радиус увеличился в 2 раза
 
Часто используемые типы данных:
 
{| border=black; cellspacing=0; cellpadding=5px;
| int || целые числа || от -2<sup>31</sup> до 2<sup>31</sup>-1 (примерно от -2·10<sup>9</sup> до 2·10<sup>9</sup>) || 4 байта
|-
| long long || большие целые числа || от -2<sup>63</sup> до 2<sup>63</sup>-1 (примерно от -9·10<sup>18</sup> до 9·10<sup>18</sup>) || 8 байт
|-
| double || дробные числа || точность 15-16 десятичных цифр || 8 байт
|}
 
==== Вывод при помощи функции printf ====
 
Функция printf используется для печати на экране. Для использования printf нужно подключить stdio.h (#include <stdio.h>).
 
printf выводит только то, что указано в кавычках. Для вывода перевода строки используется специальный символ \n.
 
printf("Hello World!\n");    //выводит Hello World!
printf("My name\nis Vasya."); //выводит My name, а затем на новой строке is Vasya.
 
printf может выводить переменные и значения выражений, но для этого в строке с кавычками нужно указать места («окошечки»), куда следует подставлять значения. Места указываются при помощи спецификаторов.
 
int salary = 100;
printf("Your salary is %d $.\n", salary);              //выводит Your salary is 100 $.
printf("Next year you'll have %.2lf $.", salary * 1.5); //выводит Next year you'll have 150.00 $.
 
Часто используемые спецификаторы:
 
{| border=black; cellspacing=0; cellpadding=5px;
| %d || int
|-
| %lld || long long
|-
| %lf || double
|-
| %.Xlf || double, X знаков после точки (например, %.2lf — 2 знака после точки)
|}
 
printf может выводить несколько значений:
 
printf("P:%d S:%d", 2 * (3 + 4), 3 * 4); //выводит P:14 S:12
 
==== Ввод при помощи функции scanf ====
 
Функция scanf используется для ввода с клавиатуры. Для использования scanf нужно подключить stdio.h (#include <stdio.h>).
 
scanf похож на printf, но перед каждой переменной следует ставить амперсанд &:
 
int age;
  scanf("%d", &age); //значение переменной age вводится с клавиатуры


Вывод при помощи функции printf:
scanf может вводить несколько значений:
#include <stdio.h>
int main() {
    printf("Hello!\n");                          //Выводит Hello!
    printf("My name\nis Vasily.\n");              //Выводит My name, и далее с новой строки is Vasily
   
    int age = 15;                       
    printf("I am %d years old.\n", age);          //Выводит I am 15 years old.
   
    double x = 2.2, y = 3.7;
    printf("%.2lf * %.2lf = %.4lf", x, y, x * y); //Выводит 2.20 * 3.70 = 8.1400
  }


Ввод при помощи функции scanf:
  int time;
#include <stdio.h>
double speed;
scanf("%d%lf", &time, &speed); //значения переменных time и speed вводятся с клавиатуры
  int main() {
    printf("How old are you?");                                     //Выводит вопрос How old are you?
    int age;
    scanf("%d", &age);                                               //Пользователь вводит значение age с клавиатуры. Предположим, что он ввёл 13.
    printf("Now you are %d. Next year you'll be %d.", age, age + 1); //Выводит Now you are 13. Next year you'll be 14.
  }

Версия от 19:24, 28 октября 2017

В любой непонятной ситуации

Пишите преподавателю:

  • Кашичкин Максим Олегович —
  • Кондратьев Евгений Валерьевич — teach.ekon@yandex.ru
  • Фолунин Владимир Александрович — v.folunin@gmail.com

Не забудьте указать тему, представиться и обстоятельно описать свою проблему.

Подготовка к работе

Установка среды разработки

Выберите только вариант «Разработка классических приложений на C++»
  • Visual Studio 2010 (для Windows XP, но также рекомендуется, если вы не хотите выкачивать большие установочные файлы)
  • Code::Blocks (если остальные варианты не устраивают)

Создание проекта в Visual Studio

Создаём проект:

Меню Файл (File) → Создать (New) → Проект... (Project...) → слева выбираем Visual C++ → справа выбираем Пустой проект (Empty Project) → вводим имя проекта → OK.

Добавляем в проект новый файл:

Меню Проект (Project) → Добавить новый элемент... (Add New Item...) → Файл C++ (C++ File) → вводим имя файла → Добавить (Add).

Решение проблем

  • Visual Studio не позволяет мне использовать scanf
Меню Проект (Project) → Свойства (Properties) → C/C++ → Проверки SDL (SDL Checks) → выбрать значение Нет (No) → OK.
Другой способ: скопировать в начало программы строку #define _CRT_SECURE_NO_WARNINGS
  • При запуске появляется окно Следующий проект устарел. Выполнить его сборку? (This project is out of date. Would you like to build it?)
Поставьте галочку Больше не выводить это окно (Do not show this dialog again) и нажмите кнопку Да (Yes).
  • Если программа содержит ошибки, при запуске появляется окно Возникли ошибки сборки. Продолжить и запустить последний успешно построенный вариант? (There were build errors. Would you like to continue and run the last successful build?)
Поставьте галочку Больше не выводить это окно (Do not show this dialog again) и нажмите кнопку Нет (No).
  • Где посмотреть, какие у меня ошибки?
Меню Вид (View) → Список ошибок (Error List). В более старых версиях: View → Other Windows → Error List.

Вспомогательные материалы к занятиям

Введение. Переменные. Ввод-вывод

Минимальная программа на C++

int main() {
    
}

В любой программе всегда должна быть функция main. Фигурные скобки обозначают начало и конец функции, все команды записываются внутри.

До функции main, в самом начале файла, обычно указываются директивы #include (например #include <stdio.h>).

Использование переменных

Чтобы добавить в программу переменную, укажите её тип, название и, если необходимо, начальное значение.

int radius = 100;                           //целое число radius со значением 100
double circleArea = 3.14 * radius * radius; //дробное число circleArea, значение вычисляется по формуле

Переменные могут менять своё значение:

radius = radius * 2; //радиус увеличился в 2 раза

Часто используемые типы данных:

int целые числа от -231 до 231-1 (примерно от -2·109 до 2·109) 4 байта
long long большие целые числа от -263 до 263-1 (примерно от -9·1018 до 9·1018) 8 байт
double дробные числа точность 15-16 десятичных цифр 8 байт

Вывод при помощи функции printf

Функция printf используется для печати на экране. Для использования printf нужно подключить stdio.h (#include <stdio.h>).

printf выводит только то, что указано в кавычках. Для вывода перевода строки используется специальный символ \n.

printf("Hello World!\n");     //выводит Hello World!
printf("My name\nis Vasya."); //выводит My name, а затем на новой строке is Vasya.

printf может выводить переменные и значения выражений, но для этого в строке с кавычками нужно указать места («окошечки»), куда следует подставлять значения. Места указываются при помощи спецификаторов.

int salary = 100;
printf("Your salary is %d $.\n", salary);               //выводит Your salary is 100 $.
printf("Next year you'll have %.2lf $.", salary * 1.5); //выводит Next year you'll have 150.00 $.

Часто используемые спецификаторы:

%d int
%lld long long
%lf double
%.Xlf double, X знаков после точки (например, %.2lf — 2 знака после точки)

printf может выводить несколько значений:

printf("P:%d S:%d", 2 * (3 + 4), 3 * 4); //выводит P:14 S:12

Ввод при помощи функции scanf

Функция scanf используется для ввода с клавиатуры. Для использования scanf нужно подключить stdio.h (#include <stdio.h>).

scanf похож на printf, но перед каждой переменной следует ставить амперсанд &:

int age;
scanf("%d", &age); //значение переменной age вводится с клавиатуры

scanf может вводить несколько значений:

int time;
double speed;
scanf("%d%lf", &time, &speed); //значения переменных time и speed вводятся с клавиатуры