Нижегородский государственный технический университет имени Р. Е. Алексеева
Опубликован: 26.03.2015 | Доступ: свободный | Студентов: 6254 / 1182 | Длительность: 07:05:00
ISBN: 978-5-9556-0173-1
Специальности: Программист, Преподаватель
Лекция 3:

Основы программирования на языке С++

< Лекция 2 || Лекция 3: 123 || Лекция 4 >
Аннотация: Подступаемся к языку программирования С++. Будем делать это уверенными шагами. Сначала посмотрим, как и где он работает. Цель данной лекции – ознакомить студентов необходимыми элементами языка программирования С++; показать, в каких программах можно работать и как это правильно делать.

Занятие 1. Базовые знания о языке программирования С++

Программа – это реализация алгоритма для выполнения задачи компьютером (ЭВМ).

С помощью программы мы формулируем алгоритм на языке, понятном компьютеру. Таким языком служит язык программирования.

На сегодняшний день распространенными языками программирования являются: С, С++, Pascal, Basic, Fortran и т.д.

Язык программирования С++ является одним из самых востребованных на сегодняшний день.

На языке С++ можно составлять программы для инженерных расчетов, также можно строить оконные проекты, имеющие пользовательский графический интерфейс.

Существует несколько приложений для написания программ на языке С++. Мы будем рассматривать Microsoft Visual Studio и Borland C++.

В языке программирования С++ определены некоторые стандартные типы данных, которые представлены в табл. 3.1.

Таблица 3.1. Стандартные типы данных С++
Тип данных Значение
int целый тип, размер типа int не определяется стандартом, а зависит от компьютера и компилятора, для 16-разрядного процессора под величины этого типа отводится 2 байта, для 32-разрядного — 4 байта.Примеры значений типа int: 5, 0, -1, 100.
double вещественный тип с двойной точностью. Типы данных с плавающей точкой хранятся в памяти компьютера иначе, чем целочисленные. Внутреннее представление вещественного числа состоит из двух частей — мантиссы и порядка. Мантисса — это число, большее 1.0, но меньшее 10. Для величин типа double, занимающих 8 байт, под порядок и мантиссу отводится 11 и 52 разряда соответственно. Длина мантиссы определяет точность числа, а длина порядка — его диапазон.Примеры значений типа double: 5.0, -0.00001, 2.9987.
float вещественный тип. В компьютерах величины типа float занимают 4 байта, из которых один двоичный разряд отводится под знак мантиссы, 8 разрядов под порядок и 23 под мантиссу. Тип float имеет меньшую точность, чем double. В большинстве случаев лучше использовать double.
char символьный тип, под величину символьного типа отводится количество байт, достаточное для размещения любого символа из набора символов для данного компьютера, что и обусловило название типа. Как правило, это 1 байт. Каждый символ имеет свой собственный целочисленный код, согласно таблице ASCII (англ. American Standard Code for Information Interchange).Примеры значений типа char: "A" (код 65), "7" (код 55), "-" (код 189), "/" (код 191).
fstream, ifstream, ofstream файловый поток. Используется для вывода данных в файл и считывания данных из файла.

Программа на языке С++ имеет определенную структуру.

Существует определенная последовательность заранее определенных строк кода, которая приведена в табл. 3.2.

Таблица 3.2. Структура программы С++
#include "stdafx.h" подключение заголовочного файла для сборки проекта. Обязательный пункт в Visual Studio, в среде Borland C++ не используется.
#include <название_библиотеки> подключение библиотек. Необязательный пункт. Подробно о библиотеках смотреть ниже.
using namespace std; использование пространства имен. Обязательный пункт в Visual Studio, в среде Borland C++ не используется.
int main(){ или void main(){ главная функция программы. Именно она начинает выполняться, когда запускается программа. Обязательный пункт.
Тело_функции_main в теле функции main записываются действия и операции, предусмотренные алгоритмом. Обязательный пункт.
return 0;} или } конец программы. Самый последний оператор. Обязательный пункт.

Библиотека – это файл, в котором описаны функции и операторы. Для каждой смысловой группы функций своя библиотека. Библиотек в языке C++ предусмотрено много, мы будем рассматривать только самые необходимые. Нам понадобятся функции для работы с экраном, математические функции.

Основные библиотеки и их основные функции и операторы:

  1. <iostream> для Visual Studio, <iostream.h> для Borland C++. Библиотека для работы с консолью (экраном).

    cout – оператор вывода данных на экран.

    Пример использования:

    cout<<"fraza"; //выведет на экран слово fraza. Может вывести любой текст.

    cout<<x; //выведет на экран число, хранящееся в переменной х.

    cin – оператор считывания с экрана.

    Когда у пользователя запрашивают число, программа ждет, пока пользователь не напечатает число и нажмет ENTER. Тогда оператор cin записывает это значение в переменную х.

    Пример использования:

    cin>>x; //присваивает переменной х значение, введенное с клавиатуры.

    cin>>x>>y; //присваивает переменной х первое введенное с клавиатуры значение, переменной у – второе.

    endl – оператор перевода каретки на экране на следующую строку.

    Самостоятельно не используется.

    Пример использования:

    cout<<endl; //курсор перейдет на новую строку.

    cout<<x<<endl;//сначала на экране появится число, хранящееся в переменной х, потом перейдет на новую строку. Выводимые далее данные будут печататься с новой строки.

    cout<<endl<<"fraza"; // курсор перейдет на новую строку, и на новой строке появится надпись fraza.

    precision(n) – функция для отображения на экране дробных чисел с n цифрами после запятой.

    Пример использования:

    cout.precision(3)<<7.897426; //число 7.897426 выведется на экран в виде 7.897.

  2. <math.h> одинаково для Visual Studio, Borland C++. Библиотека математических функций. Основные математические функции представлены в табл. 3.3.
    Таблица 3.3. Основные математические функции С++
    Математическая функция Программная запись Описание
    |x| fabs(x) Модуль числа.
    \sin x sin(x) Синус числа, аргумент в радианах.
    \cos x cos(x) Косинус числа, аргумент в радианах.
    \tg x tan(x) Тангенс числа, аргумент в радианах.
    e^x exp(x) Экспонента числа.
    \ln x log(x) Натуральный логарифм числа.
    \lg x log10(x) Десятичный логарифм числа.
    x^y pow(x, y) х в степени y.
    10^x pow10(x) Степень десяти.
    \sqrt{x} sqrt(x) Квадратный корень из числа.
    \arcsin x asin(x) Арксинус числа, в радианах.
    \arccos x acos(x) Арккосинус числа, в радианах.
    \arctg x atan(x) Арктангенс числа, в радианах.
    \pi M_PI Число \pi=3.141593
  3. <iomanip> для Visual Studio, <iomanip.h> для Borland C++.

    setw(n) – для вывода на экран отводится n ячеек.

    Используется при построении ровной таблицы значений функции.

    Пример использования:

    cout<<setw(5)<<x<<setw(5)<<y<<endl;

    На экране выведутся два числа: первое (1.5) в первых пяти ячейках, второе (-73) во вторых пяти ячейках. _ _ 1 . 5 _ _ - 7 3 .

В программах используются переменные. Имя переменной выбирает составитель программы; имя переменной должно начинаться с буквы латинского алфавита и может содержать буквы латинского алфавита, цифры и символы подчеркивания. Заглавные и строчные буквы считаются разными. Примеры имен переменных: х, y, summa, s1, srednee_ar и т.д. Имена переменных не должны совпадать с ключевыми словами языка С++.

Чтобы использовать в программе переменную, необходимо:

  1. объявить переменную в начале программы, явно указав тип данных для переменной. Пример:

    double x; //вещественная переменная х.

    int m; //целочисленная переменная m.

    Если переменная не будет объявлена, но будет использоваться далее в программе, то программа не запустится, компилятор выдаст ошибку.

  2. проинициализировать переменную, т.е. задать переменной значение. Пример:

    x=7.81;
    m=4; z=x+m;

    Если переменная не будет проинициализирована, то компилятор не выдаст ошибки, но расчеты будут выполнены неверно.

  3. использовать далее в программе в расчетах или при выводе на экран.

Для числовых переменных определены простейшие арифметические операции, которые приведены в табл. 3.4. Для их использования не нужно подключать библиотеку.

Таблица 3.4. Основные арифметические операции С++
Операция в С++ Описание Пример в программе
= присвоение
х=0.4;
+ сложение
х=8+3;
y=x+7.9;
				
- вычитание
x=8-3;
y=x-7.9;
				
* умножение
x=4*2.5;
y=x*4;
				
/ деление. Результатом деления целых чисел является целое число.
x=7.5/3.2;
y=x/2.6;
z=1/3; //z=0 (округление до целого, т.к. делятся целые числа)
z=1.0/3.0; //z=0.333(3)
				

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

Таблица 3.5. Логические операции С++
Сравнение в С++ Описание Пример в программе
> больше чем
x>0
< меньше чем
y<z
>= больше или равно
y>=x
<= меньше или равно
z<=8.56
== проверка на равенство
x==0.7
!= не равно
x!=y
&& логическое И
x>0 && x<1 // двойное неравенство 0<x<1
|| логическое ИЛИ
s<8 || s>10

Для реализации разветвляющегося алгоритма в С++ используется условный оператор if. Приведем общий вид блок-схем и общий вид записи оператора if:


if (условие) {
	Набор_действий_1;
}
else {
	Набор_действий_2;
}

if (условие) {
	Набор_действий_1;
}

Примечание. Если необходимо выполнить не набор действий, а всего одно действие, то фигурные скобки можно опустить.

Для реализации циклического алгоритма с предусловием в С++ предусмотрено два оператора цикла while и for. По одной и той же блок-схеме с предусловием можно написать две программы, одну – с оператором while, другую – с оператором for. Оператор while удобно использовать, если неопределенно, сколько итераций нужно сделать, или это трудно сделать. Оператор for удобно использовать, когда мы заранее знаем количество итераций.

Приведем общий вид блок-схем и общий вид записи операторов while и for:


Оператор while:
x=xn;
while(x<xk){
	Тело_цикла;
	x=x+hx;
}
Оператор for:
for(x=xn; x<xk; x=x+hx){
	Тело_цикла;
}
				

Для реализации циклического алгоритма с постусловием в С++ предусмотрен оператор do while. Блок-схема и запись оператора do while в общем виде:


Оператор do while:
x=xn;
do{
	Тело_цикла;
	x=x+hx;
} while(x<=xk);
				

Существует ряд задач, где изменяется сразу две переменные. Тогда используют вложенные циклы. Внутри одного цикла (внешнего) организуют другой цикл (внутренний).

Для ясности будем делать внешний цикл по переменной х, а внутренний – по переменной у. Обозначим переменные: xn – начальное значение x, xk – конечное значение х, hx – шаг по переменной х, yn – начальное значение у, yk – конечное значение у, hy – шаг по переменной у. Приведем блок-схему и вид записи операторов цикла с предусловием:


Оператор while:
x=xn;
while (x<=xk){
	y=yn;
	while (y<=yk){
		Тело_цикла;
		y=y+hy;
	}
	x=x+hx;
}
Оператор for:
for (x=xn; x<=xk; x=x+hx){
	for(y=yn; y<=yk; y=y+hy){
		Тело_цикла;
}
}
				

Общий вид записи циклов с постусловием и блок-схема с постусловием:


Оператор do while:
x=xn;
do {
	y=yn;
	do {
		Тело_цикла;
		y=y+hy;
	} while (y<=yk);
	x=x+hx;
} while (x<=xk);
				
< Лекция 2 || Лекция 3: 123 || Лекция 4 >
Никита Беллонский
Никита Беллонский

Лекция 4. Упражнение №4.

Составил блок-схему и по ней написал программу. Работает корректно, но если подбираю значения, чтобы выходила сумма меньше -2, на выводе значится: "-na n(i nd)". 

Я так понимаю, это потому что в выражении выполняется извлечение квадратного корня из отрицательного числа. Но что значит "-na n(i nd)"? Почему вывод именно такой? Машина всегда так сообщает о "неудачных" вычислениях? 

Антон Биганов
Антон Биганов

в лекции 2.

"Таблица 2.4. Выполнение блок-схемы с предусловием для примера 9" - в блоке условия стоит а<10, при таком условии последяя строка {S=17, R=3} на экран выведена не будет.

 

Зайнобиддин Насриддинов
Зайнобиддин Насриддинов
Узбекистан, Наманган