Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Рекомендуемая литература: |
|
История языка С
Предшественники языка C : BCPL и B.
BCPL разработан в 1967 году Мартином Ричардом как язык написания компиляторов программного обеспечения операционных систем.
Язык BCPL индуцировал появление языка B, который разработал Кен Томпсон. Он использовал его в 1970 году для создания одной из ранних версий операционной системы UNIX в Bell Laboratories на компьютере фирмы DEC PDP-7.
Язык программирования С разработан Деннисом Ритчи
впервые реализован на малой ЭВМ PDP-11
В конце 70-х годов C превратился в язык, называемый теперь "традиционным C" или "классическим C" или "C Кернигана и Ритчи". В это же время издательством Prentice-Hall была опубликована ставшая знаменитой книга Кернигана и Ритчи "Язык программирования C".
Бьерн Строуструп (Bjarne Stroustrup) из той же Bell Laboratories создал потомок языка С - язык С++ или "Си с классами".
ANSI (Американский Национальный Комитет Стандартов) скооперировался с Международной Организацией Стандартов (International Standards Organizations - ISO), чтобы стандартизировать C в мировом масштабе. Совместный стандарт был опубликован в 1990 году и назван ANSI/ISO 9899: 1990.
В 1995 году была принята Поправка к стандарту С. Затем появился стандарт ISO/ANSI С++ в 1998г.
С++Builder до версии С++Builder 2006 выпускала корпорация Borland.
Потом с февраля 2006 дочернее подразделение CodeGear.
В июне 2008г. Embarcadero Technologies приобрело CodeGear.
Сейчас продается RAD Studio 2010 Architect- среда быстрой разработки приложений для Microsoft Windows (Delphi, C++Builder, C#Builder).
Алфавит
Алфавит C++ включает:
Алфавит C++ служит для построения слов, которые в C++ называются лексемами. Различают пять типов лексем:
Язык С различает прописные и строчные буквы !!! |
переменные Width, WIDTH и width различны |
Первым символом идентификатора может быть только буква |
n111 |
В именах переменных можно использовать символ подчеркивания Пробел не допускается! |
my_number |
Нельзя использовать символ подчеркивания вначале имени переменной |
используют в именах системных переменных и констант, а также библиотечных функций, например, __fastcall |
Комментарий в тексте программы |
/* это пример моей функции */ или // это пример моей функции
|
В C++ существует четыре типа литералов: |
|
Литерал начинается с 0 (нуля). Литерал, начинается с 0x или 0X |
служит для записи целочисленных значений и является последовательностью цифр (возможно со знаком '-'). восьмеричное целое(цифры 8 и 9 запрещены), 055 шестнадцатеричное целое (может включать символы от A или a, до F или f, которые в шестнадцатеричной системе эквивалентны десятичным значениям от 10 до 15, 0xFFFF |
|
вещественное значение (обычная десятичная или научная нотация). В научной нотации мантисса отделяется от порядка литерой E или e). 2e+10 |
обычном восьмеричном шестнадцатеричном Некоторые управляющие символы: \n \r \t \v \0 \xN
\N |
литера Z может быть представлена литералами 'Z' '\132' '\x5A' перевод строки возврат каретки горизонтальная табуляция вертикальная табуляция нулевой байт N -шестнадцатеричный код символа N- восьмеричный код символа |
|
“Это язык С” |
Типы данных в C
Основные типы |
char, int, float, double, void |
типы с модификаторами |
short (короткий), long(длинный), signed(cо знаком), unsigned (без знака) |
Производные |
Указатели и ссылки на какие-то типы, Массивы каких-то типов, Типы функций, Структуры, объединения, классы |
Целочисленные
Тип данных |
Байты |
Биты |
Min |
Max |
char |
1 |
8 |
- 128 |
127 |
unsigned char |
1 |
8 |
0 |
255 |
short |
2 |
16 |
-32 768 |
32 767 |
unsigned short |
2 |
16 |
0 |
65 535 |
int |
4 |
32 |
-2 147 483 648 |
2 147 483 647 |
unsigned int |
4 |
32 |
0 |
4 294 967 295 |
long |
4 |
32 |
-2 147 483 648 |
2 147 483 647 |
unsigned long |
4 |
32 |
0 |
4 294 967 295 |
Форматы с плавающей запятой
Тип данных |
Байты |
Биты |
Min |
Max |
float |
4 |
32 |
-3.4e-38 | |
3.40e+38 |
double |
8 |
64 |
-1.7e-308 |
1.7e+308 |
Long double |
10 |
80 |
-3.4e-4932 |
1.1e+4932 |
Логический тип bool
Особенность С++Builder |
Тип bool реализован как отдельный тип, а не как псевдоним целого |
Объявление переменных и их инициализация
Тип <список переменных>; |
int x,y,z; float xx; long double yy; |
Тип <переменная>=константа; |
int p=12; char ch=a; |
typedef определение типа идентификатор; (переопределение типа) |
typedef char symbol; |
#define имя макроса символы (директива вводит макроопределение) |
#define K 5 (K=5) |
Правила для автоматического приведения типов при вычислении арифметических выражений
Если выражение содержит операнды разных типов, то тип операнда “младшего” типа приводится к типу операнда “старшего” типа, т.е. менее точный тип приводится к более точному. |
|
Тип переменной |
Преобразуется в |
char, short int |
int |
float |
double |
В операторе присваивания конечный результат приводится к типу переменной в левой части оператора присваивания, причем тип может повышаться или понижаться |
Задача1. first=second ?
unsigned short int first = 60000;
signed short int second = 60000;
Задача 2
double a=5.4, b=2;
int c=a*b;
Ответ:1- 10.8 2- 10
Явное приведение типа
(тип) переменная
int m=1,n=2;
double a=(double)m/n;
Структура программы
// Заголовочные файлы
#include <conio.h>
#include <stdio.h>
//---------------------------------------------------------------------------
function1();// прототип функции обязателен
function2();
…
functionN();
main(void) // главная функция
{
function1(); // вызов функции
function2();
…
functionN();
}
function1() // Определение функции
{
… // тело функции
}
function2() // Определение функции
{
… // тело функции
}
…
functionN() // Определение функции
{
… // тело функции
}
Форматированный ввод-вывод в консольном приложении
Функции printf() и scanf()
Прототипы функций находятся в файле stdio.h.
Управляющая строка содержит:
Команда формата |
Обозначение |
%с |
символ |
%d или %i |
целое десятичное |
%e |
десятичное число в виде x.xx e+xx |
%E |
десятичное число в виде x.xx E+xx |
%f |
десятичное число c плавающей запятой xx.xxx |
%lf |
десятичное число c плавающей запятой двойной точности xx.xxx |
%o |
Восьмеричное число |
%s |
Строка символов |
%u |
Беззнаковое десятичное число |
%x |
Шестнадцатеричное число 5a5f |
%X |
Шестнадцатеричное число 5A5F |
%p или %n |
Указатель |
Пример1 Простой ввод-вывод в стиле С
#pragma hdrstop
#include <stdio.h>//библиотека содержит прототипы функций printf и
//scanf ,puts
#include <conio.h>//библиотека содержит прототип функции getch
//---------------------------------------------------------------------------
#pragma argsused
int main(int argc, char* argv[]) //заголовок основной функции
{
int year,month;// описание целых чисел
year=2008; // оператор присвоения
printf("Now %d year\n",year); // вывод на экран целого числа
printf("Input number of month:");// вывод на экран запроса
// puts("Input number of month:");// другой вариант вывода запроса;
//puts переводит курсор на другую строку
scanf("%d",&month);// чтение целого числа
printf("Now %d year, %d month \n",year,month);//вывод результата
printf(“Press <ENTER>”);
getch();
return 0;
}
Пример 2
Неправильно |
Правильно |
double a; scanf("%f",&a);// 2.5657 printf("Число=%f",a); |
double a; scanf("%lf",&a); // 2.5657 printf("Число=%lf",a); |
Результат Число=0 |
Результат Число=2.5657 |
Примеры форматного вывода в стиле C
#include <stdio.h>
#include <conio.h>
void main()
{
int a,b;
float x;
char c,d;
a=010; b=0xA; c='a'; d='\n'; x=10.1234;
printf("%d\n",a); //печать восьмеричного числа в десятичном формате
printf("%o\n",a); //печать восьмеричного числа в восьмеричном формате
printf("%d\n",b); //печать шестнадцатеричного числа в десятичном формате
printf("%X\n",b); //печать шестнадцатеричного числа в шестнадцатеричном формате
printf("%c",c); // печать символа, курсор остается на этой же строке
printf("%c",d); //печать управляющего символа перевода курсора на другую строку
printf("%5c\n",c);// печать символа, впереди 4 символа пробела
printf("%f\n",x);//печать действительного числа
printf("%10.2f\n",x);//печать действительного числа c заданным общим
//числом знаков и числом знаков после десятичной точки
printf("%e\n",x);//печать действительного числа в научном формате
printf("%20e\n",x);//печать действительного числа в научном формате
// в отведенном формате 20 символов
getch();
}
Пример 2 Окрашенный ввод-вывод в стиле С
#pragma hdrstop
#include <conio.h> //библиотека содержит прототипы функций clrscr,
/ / getch, textcolor, textbackground, cscanf, cputs
#include <math.h>// библиотека содержит математические функции и
//константы
//---------------------------------------------------------------------------
#pragma argsused
int main(int argc, char* argv[])//заголовок основной функции
{
float x,y;
textbackground(11);
clrscr();
textcolor(7);
cputs("Input x:");
cscanf("%f",&x);
cputs("\n\r");
y=M_PI*x;
textbackground(6);
textcolor(4);
cputs(" X | F(x) |\n\r");
cprintf("%10.2f %10.2f\n\r",x , y);// выравнивание по правому краю
cprintf("%-10.2f %-10.2f\n\r",x , y);//выравнивание по левому краю
cprintf(“Press <ENTER>”);
getch();
getch();
return 0;
}
Некоторые математические константы из библиотеки math.h
Математическая константа |
Константа в C/C++ |
Значение |
Е |
M_E |
2.71828182845904523536 |
|
M_PI |
3.14159265358979323846 |
/2 |
M_PI_2 |
1.57079632679489661923 |
/4 |
M_PI_4 |
0.785398163397448309616 |
1/ |
M_1_PI |
0.318309886183790671538 |
2/ |
M_2_PI |
0.636619772367581343076 |
M_SQRT2 |
1.41421356237309504880 |
|
0.5 |
M_SQRT_2 |
0.707106781186547524401 |
Часто употребляемые математические функции из библиотеки math.h
Функция |
Значение |
abs(x) |
Абсолютное значение x |
sqrt(x) |
Квадратный корень |
exp(x) |
Экспонента x |
sin() |
Синус выраженного в радианах угла |
cos() |
Коcинус выраженного в радианах угла |
tan() |
Тангенс выраженного в радианах угла |
asin(x) |
Угол (в радианах), синус которого равен x |
acos(x) |
Угол (в радианах), косинус которого равен x |
atan(x) |
Угол (в радианах), тангенс которого равен x |
Организация случайного числа (библиотека stdlib.h)
Функция |
Значение |
random(n) |
Случайное целое число в диапазоне от 0 до n-1. Перед первым обращением необходимо вызвать функцию randomize(), которая выполнит инициализацию программного генератора случайных чисел |
rand() |
Случайное число от 0 до RAND_MAX=32767 |
srand(time(NULL)) |
Для генерации различной последовательности случайных чисел. В качестве параметра передается временная метка, которую получют при помощи функции time() из библиотеки <time.h> |
Пример
#include <iostream.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
int main()
{ srand(time(NULL));
for (int i=0;i<10;i++)cout<<rand()<<”\n”;
getch();
return 0;
}