Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Yazyki_programmirovania.docx
Скачиваний:
3
Добавлен:
10.07.2019
Размер:
107.5 Кб
Скачать

Людмила Антоновна Цурганова

34/34 ч

Введение. История развития программирования

- Процедурное программирование

-структурное программирование

-модульное программирование

-ООП (объектно-ориентированное программирование)

Язык C был разработан Денисом Ричи в начале 70-х годов прошлого столетия. Разрабатывался как язык системного программирования т.е для написания ОС, инструментальных сред и т.д. Первое описание языка С приведено в книге Кернигана и Ричи. Имеется стандарт языка C, принят в 1983 году, называется ANSI C. В начале 80-х годов Бьёрн Страуструп расширил язык С, создал язык C с классами. В 1983 году его переименовали в C++. Имеется также стандарт языка C++. Он был создан в 1998 году. Называется ISO\IEC 14882. Язык С++ полностью включает в себя язык С.

Примеры программ на C++:

  1. На языке C

Вычислить функцию: y=(x^3+1/(sin^2x+1))/(x^2+1/(1/(x^2+1))).

Х – вводимое значение.

& - операция взятия адреса.

X^n=pow(x,n)

  1. Форматный ввод\вывод:

#include<stdio.h>

#include <math.h>

void main ()

{ float x,y;

printf (“\n Введи X-“); (\n – переход на новую строку)

scanf(“%f”,&x);

y=pow(x,3)+1/(pow(sin(x),2)+1)/(x*x+1/(x*x+1));

printf("\n x=%6.2f y=%8,4f", x,y);

}

Функции ввода вывода:

Printf - вывод

Scanf - ввод

  1. На языке C++

#include <iostream.h>

#include <math.h>

Void main ()

{ float x,y;

cout<<"\n Введи X-";

cin>>x;

y=pow(x,3)+1/(pow(sin(x),2)+1)/(x*x+1/(x*x+1));

cout<< "x= " <<x;

cout<< "y= " <<y;

}

Язык C++ имеет богатую библиотеку функций, сведения об этих функциях приведены в заголовочных файлах (*.h),которые включают описание группы близких по смыслу функций. Процесс изготовления программы на C++:

  1. Пишется программа на языке C++ в любом редакторе, создаётся файл *.cpp, файл текстовый.

  2. Обработка препроцессором файла *.cpp. Вставка необходимых описаний библиотечных функций. Результат *.cpp.

  3. Компиляция. Транслятор обрабатывает программу. Создаётся файл *.obj. Добиться отсутствия ошибок.

  4. Компоновка (link) подсоединяются библиотечные функции. Результат компоновки *.exe.

  5. Запуск программы.

Инструментальные среды:

  1. BC++ 3.1

  2. Visual C

  3. C++ Builder

Основные средства C++

Алфавит – прописные, строчные буквы (различаются), знак подчеркивания, цифры, спецсимволы. Пробельные символы: пробел, символы Таб, символ перехода новую строку. Из символов алфавит формируются лексемы (идентификаторы, зарезервированные слова, константы, знаки операций, разделители).

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

Зарезервированные слова – слова, которые имеют смысл для компилятора.

Константы – неизменяемые величины, неименованные. Типы констант: целые, вещественные, строковые. Тип определяется формой её записи.

Целая константа может быть представлена в десятичной, восьмеричной, шестнадцатеричной и в двоичной системе. В восьмеричной системе целая константа начинается с нуля, за которым идут восьмеричные цифры от нуля до семи. В шестнадцатеричной системе константы начинаются с символов 0x за которыми идут шестнадцатеричные цифры (0..9, A..F).

Вещественные константы: [знак][цифры].[цифры]. – десятичный формат.

Экспоненциальный формат [+-][цифры].[цифры]E[+-]цифры

Символьная константа представляет собой один или более символов в апострофах (‘A’, ‘2’, ‘\n’).

Строковая константа – последовательность символов в кавычках.

Каждый вид константы имеет свой диапазон.

Символ обратной косой черты используется для преставления кодов не имеющий графического изображения. Для преставления апострофа, обратного наклонной черты, кавычки, вопроса. Для представления любого символа с помощью его 16-го кода в диапазоне от 0 до 255.

Вид

Код 16-й системе счисления

название

\a

7

Звуковой сигнал

\b

8

Возврат на позицию

\f

C

Перевод страницы

\n

A

Перевод строки

\r

D

Переход к началу строки

\t

9

Горизонтальная табуляция

\v

B

Вертикальная табуляция

\\

5C

Обратная косая черта

\’

27

апостроф

\”

22

кавычка

\?

3F

?

\0xddd

// Комментарии

/* большой комментарий */

Типы данных

Любая программа обрабатывает данные. Данные различного типа, хранятся и обрабатываются по-разному. Каждая константа, переменная, результат вычисления выражения или функции имеют определенный тип. Тип данных определяет внутреннее представление данных в памяти компьютера, множество значений, которые могут принимать данные, а также операции и функции которые можно применять к величинам этого типа. Тип данных выбирается программистом, в C++ различают базовые типы (основные) и производные (составные).

Базовые типы:

- int

- char символы

- float вещественный

- double двойной вещественный

- void пустой

- wchar_t расширенный символьный

- bool

Последние 2 типа в ВС++ не используются.

Производные типы образуются добавлением модификаторов к базовому типу.

Модификаторы (спецификаторы):

- short

- long

- signed знаковый

- unsigned незнаковый

Приведем все типы:

-int

- short int

- signed short int

- unsigned short int

- signed int

- unsigned int

- long int

- signet long int

- unsigned long int

- char

- unsigned char

- signed char

- float

- double

- long double

- signed short int

- unsigned short int

- signed long int

- unsigned long int

Название

Колчиество байт

Диапазон

-int

2

-32768 - +32767

- shortint

2

-32768 - +32767

- signed int

2

-32768 - +32767

- unsigned int

2

0 - +65535

- long int

4

- 2147483648 - +2147483647

- char

1

- 128 - +127

- unsigned char

1

0 – 255

- signed char

1

- 128 - + 127

- float

4

3.4*10-38 - +3.4*1038 положит

-3.4*10-38 - -3.4*1038 отриц

- double

8

От 1.7*10-308 до 1.7*10308 положит

От -1.7*10-308 до -1.7*10308отриц

- long double

10

От 3.4*10-4932 до 3.4*104932 положит

От -3.4*10-4932 до -3.4*104932 отриц

- signed short int

2

От - 32768 до 32767

- unsigned short int

2

От 0 до 62535

- signed long int

4

От - 2147483648 до +2147483647

- unsigned long int

4

От 0 до 4294967295

Задание типа константы

Для задания целочисленной константы производного типа используются специальные окончанияu(U), l(L), h(H).

Примеры: 100L, 10h, 100ul.

Для вещественных констант f(F), l(L).

По умолчанию вещественные константы считаются типом double. 22.2 - double

При необходимости указания типа floatнеобходимо дописать f. 22.2f - float

22.2l – longdouble.

Описание переменных

Переменная должна быть обязательно описана до места её использования. Описание может быть внутри функции или вне её.

Общий вид описания:

[класс памяти][const] тип идентификатор (имя) [=значение][,];

Где, класс памяти – может иметь одно из следующих значений:auto, static, register, extern.

По умолчанию auto.

Пример:

intx,y;

longint z=0;

float x=5, y=10

char k=’B’;

const float Pi=3.14159;

constintdl=100;

Внутренне представление данных

Название

Количество байт

Кол-во разрядов

Int

2

16

long int

4

32

Float

4

32

Doble

8

64

long double

10

80

Вещественные числа представляются в виде порядка и мантиссы.

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

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

Виды операций

Арифметические:

+- , -(унарный), * ,деление /.

floatx=4, y=3, z;

int a=4, b=3;

z=x/y; // z=1.33….

c=a/b; // c=1

z=a/b; // z=1

c=x/y; // c=1

z=a/y; // z=1/33….

Для целых величин берется целая часть от деления.

% - остаток от деления целых чисел.

C=a%b; // c=1;

++ - увеличение на единицу.

-- - уменьшение на единицу.

Поразрядно логические:

&поразрядное логическое И

¦ поразрядное логическое ИЛИ

~ инверсия

^ исключение ИЛИ

Операнд 1

Операнд 2

&

¦

~

^

0

0

0

0

1

0

1

0

0

1

0

1

0

1

0

1

1

1

1

1

1

1

0

0

a=1011102

b= 11002

c=a&b //c=11002

101110

1100

001100

C=aib; //c=1011102

Поразрядно логические используются для быстрого выделения остатка от деления целых беззнаковых чисел на числа являющихся степенью двойки. А также для выделения одного или нескольких разрядов числа. Для выделения остатка используется &со следующими масками.

Деление на 2: 0x01

На 4: 0x01

На8: 0x07

a=12;

c=a&0x01;

c=a&0x07;

11002 используя&

0111

01002 результат

Операции сдвига:

Влево <<

Вправо >>

Сдвиг влево производится сдвиг влево разрядов операнда стоящего слева от знака операции на число разрядов задаваемых операндом стоящем справа. Сдвиг вправо осуществляется сдвиг вправо битов операнда стоящего слева от знака операции на число битов заданного вторым операндом.

a=b<<2;

//b=10111012

//a=1011101002

a=b>>2;

//a=101112

Сдвиг влево на один два тир и более разрядов является наиболее быстрым способом умножения на 2, 4, 8 и т.д. Сдвиг вправо на один, два, три и более разрядов, есть быстрый способ деления на 2, 4 , 8 и т.д.

b=12

a=b<<2;

b=11002

a=1100002

a=48

Логические операции

&&логическое И

¦¦ логическое или

! логическое не

В C++ 0 – ложь, а не равное нулю истина.

d=a&&b;

Еслиa<>0 иb<>0, то d=1

Если a=0 или b=0, то d=0

d=a¦¦b

Еслиa<>0 иb<>0 то d=1

Если a=0 или и=0 то d=0

Если a=0 bb=0 то d=0

d=!a

Еслиa<>0 тоd=0

Еслиa=0 тоd=1

Операции отношения

<

<=

>

>=

==

!= не равно

Результат операции отношения 0 и 1.

Если верно то 1 иначе 0.

D=A>C

Если A>Cто D=1

Если A<=Cто D=0

Операция присваивания

= может быть применена в любом выражении.

If ((t=2*a)) z=K+2

Формат записи: переменная=выражения

D=2*X;

В C++ разрешено множественное присваивание.

x=y=z=0

выполняется справа налево.

Для рекуррентных выражений присваивания можно использовать сокращенную запись.

Z=Z+5; Z+=5;

Y=Y*2; Y*=2;

Операция условия

?:

Условие ? выражение 1 если условие верно, : выражение 2 если условие не верно

x>2 ?z=5*x :z=-2 или z=x>2 ? 5*x : -2

z=5*xесли ч>2

z=-2 если x<=2

Операция определения размера переменной.

Sizeof можно определять размер переменной или типа

Int c,k;

K=sizeof c;

K= sizeofdouble;

Эта операция чаще всего используется для определения размера массива или структуры.

Операция преобразования типа.

(Тип) переменная или выражение

Int a=5 , b=b;

Float d

d=a/b; //d=2

d=(float)a/b; //d=2.5

Преобразования типов операндов при вычеслении выражения

Вычисление может содержать операнды различных типов. Перед вычислением результата применения конкретной операции происходит преобразование операндов к одному типу. А именно к более длинному.

intk;

floatz,y;

char p;

doublew,d;

w=p*k+k*(z+1);

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

Приоритет операций в выражениях без скобок

  1. Вызов функции ()

  2. Выделение элемента массива[]

  3. Выделения поля структурной переменной .

  4. Выделения поля структурной переменной через указатель ->

  5. Логическое отрицание !

  6. Поразрядно логическое отрицание ~ (инверсия)

  7. Унарный минус – (изменение знака переменной)

  8. Инкримент увеличение на единицу ++

  9. Декремент уменьшение на единицу –-

  10. Взятие адреса переменной &

  11. Выбор значения переменной через указатель *

  12. Преобразование типа (тип) перед переменной или выражением

  13. Определение размера переменной sizeof

14)-33) заполнить самостоятельно

34) операция запятая

35) дополнительные операции C++

36) команды препроцессора

Структура программы на C++

Программа состоит из одной или нескольких функций. Все функции внешние по отношению друг к другу. Одна из функций должна иметь имя main(). Эта функция определяет точку входа т.е. начало выполнения программы. Каждая функция состоит из заголовка и тела заключенного в фигурные скобки. Заголовок содержит тип функции, имя, круглые скобки в которых может содержаться список аргументов.

Примеры функций:

intmain ()

{тело }

float F1 (float x)

{ return (2*x+1)/(x*x+1); }

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

Общий вид структуры программы

//директивы препроцессора

#include …

#defineимя значение

//описание функций из которых состоит программа или описание прототипов

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]