Введение в С/С++



С/С++ языки программирования, разработанные и используемые профессионалами для разработки мощных программных продуктов, в том числе операционных систем. Поэтому языки имеют разнообразные возможности для разработки программного кода, однако, контроль за правильностью и использования этих возможностей ложится, во многом на программиста, а не на компилятор. Однако, в данном пособии рассматриваются лиши введение в программирование на языках С/С++, основные приемы структурного (на С и С++) и объектно-ориентированного программирования (на языке С++).

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


Таблица 1. Простые типы в языках  С/С++.
Тип
Наимено-вание
Размер
(байт)
диапазон
void
Бес-типовый
-
Нет значений
char
целый
1
-128…+127
int
целый
2/4
Зависит от системы, в системах Microsoft 2147483647
float
Вещест-венный
4
+-(3.4E-38… 3.4E+38)
double
Вещест-венный
8
+-(1.7E-308… 1.7E+308)



Особенностями работы с данными в С/С++ являются:

  • · использование типа char для работы с символами (хранятся коды символов). Например, описание char s1=`a`; дает возможность работать с переменной а типа char, начальным значением которой является символ а.
  • · логического типа нет, однако, логические константы true и false имеются, являясь результатами вычисления логических выражений. Кроме того, значения целых переменных и констант могут рассматриваться 0 - как false, остальные значения –как true.
  • · Строкового типа нет, но строковые константы (наборы символов в кавычках) допускаются. Более того, их можно присваивать массивам типа char, в результате каждый символ рассматривается как элемент массива.

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

int i,j=0;
char s1=`a`;
float f=0.0012F;

Выражения и операция присваивания



Для вычисления значений алгебраических выражений в языках С/С++ имеются операции +, -, *, /, % (остаток от деления нацело), ++ (инкремент), -- (декремент). При использовании унарной (требующей одного операнда) операции инкремента i++; значение переменной увеличивается на 1, а декремента – уменьшается на 1.

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

#include < math.h>

Необходимо помнить, что имеются семейства родственных функций, отличающихся типом аргументов и значения. Например, можно использовать вещественную функцию возведения в степень одинарной точности powf() и двойной точности pow() с аргументами соответствующего типа. При выборе наименования функции необходимо пользоваться ее описанием в справочной литературе.

В С/C++ есть операция присваивания =, а не оператор присваивания. Поэтому присваивание может встречаться в неожиданном контексте, например:

x=sqrt(a=3*x); // сначала будет вычислено значение а, а затем корень

a=b=c; /*означает присвоение значение c переменной b, а затем a*/

Выше использованы комментарии языков С/C++, оформляемые двумя наклонными чертами или заключаемые внутри /* … */.

Операция присваивания может совмещаться с большинством бинарных операций:

a+=b /*означает a=a+b*/
x*=4 /* означает x=x*4 */

Форматированный ввод-вывод в С.

При подключении библиотеки <stdio.h> можно использовать форматированный ввод-вывод языка С. Общий вид оператора вывода на экран:

printf(“ форматная строка “, список вывода);

где форматная строка – совокупность символов и спецификаций формата, показывающих, в каком виде выводятся данные. Спецификации формата начинаются с символа процента %. Символы выводятся без изменений, спецификации формата заменяются соответствующими значениями данных из списка вывода. В спецификацию формата могут входить указатель ширины поля (всего позиций, отводимых на число), точность (число знаков после десятичной точки), указатель типа и другая информация. Наиболее употребительные указатели типа представлены в таблице 2.

Таблица 2. Указатели типа в спецификации формата форматированного ввода-вывода языка С

Указатель типа
Назначение
с
Вывод данных типа char
d
Вывод данных типа int
f
Вывод данных типа float в форме числа с точкой
e
Вывод данных типа float в нормализованной форме
lf
Вывод данных типа double



Примеры вывода на экран переменных числовых типов:

int i = 16;
printf (“i=%d i=%4d",i,i);
// Вывод на экран:
//i=16 i= 16

float a = 16;
printf (“a=%f %e",a,a);
// Вывод на экран:
// a=16.000000 1.600000е+01

double a = 16;
printf (“a(формат f)=%.3lf \n a(формат e)= %.1e",a,a);
// Вывод на экран:
// a(формат f)= 16.000
// a(формат e)= 1.6е+01


Специальная символьная константа \n вызывает перевод строки. Полезно использовать также символьную константу ”\t” для организации пробелов между выводимыми значениями.
Ввод значений переменных с клавиатуры производится оператором

scanf(“форматная строка“, список ввода);

В этом случае форматная строка должна состоять только из указателей типа, а у имени переменной (не являющейся указателем или ссылкой) необходимо поставить знак амперсанда &:

//прочитать вещественное число в переменную t;
scanf ("%f", &t);

//прочитать символ в переменную ch типа char
scanf ("%c", &ch);

//прочитать целые числа в переменные r,c;
scanf ("%d%d", &r,&c);

Потоки ввода-вывода в С++

Когда запускается программа на С++, автоматически создается несколько стандартных потоков:

cin (стандартный ввод с клавиатуры),
cout (стандартный вывод на экран).

Чтобы ими пользоваться нужно подключить заголовочный файл <iostream.h> (в системе программирования Visual Studio – класс <iostream>) и организовать единое стандартное пространство имен с помощью оператора using namespace std;

Приведем программу с простыми примерами использования потоков ввода-вывода в С++:


#include <iostream>
using namespace std;
void main()
{
int i = 16;
printf ("i=%d i=%4d \n",i,i);
// Вывод на экран:
//i=16 i= 16


float a = 16;
printf ("a=%f %e \n",a,a);
// Вывод на экран:
// a=16.000000 1.600000е+01

double b = 16;
printf (" b(format f)=%.3lf \n b(format e)= %.1e \n",b,b);
// Вывод на экран:
// a(формат f)= 16.000
// a(формат e)= 1.6е+01

}


Форматированный вывод в потоке можно организовать с помощью манипуляторов
  • • fixed - вывод в формате числа с точкой
  • • scientific - вывод в экспоненциальном формате
  • • setw(n) -установить количество знаков при выводе
  • • setprecision(n) -установить количество цифр после запятой при выводе вещественных чисел;
  • • и других,   доступных в библиотеке <iomanip>.

Комментариев нет:

Отправить комментарий