Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекции 1 семестр.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.21 Mб
Скачать

КУРС ЛЕКЦИЙ ПО ЯЗЫКУ ПРОГРАММИРОВАНИЯ C++

Первый семестр

Литература

  1. Герберт. Шилдт. С++ руководство для начинающих

  2. Т.А. Павловская. С/С++ Программирование на языке высокого уровня

  3. Никлаус Вирт. Алгоритмы и структуры данных

  4. Т.А. Павловская, Ю.А. Щупак С/C++ Структурное программирование. Практикум

  5. В.В. Лаптев , А.В. Морозов , А.В.Бокова. С++ объектно-ориентированное программирование. Задачи и упражнения

  6. Н. Культин . С/С++ в задачах и примерах

  7. Л.З. Шауцукова. Информатика 10-11

Методическая литература

1. В.С. Кугураков, Р.К. Самитов, В.В. Кугуракова

Практикум на ЭВМ. Методические указанияи задачи для программирования

по теме : Основные структуры управления

2. В.С. Кугураков, Р.К. Самитов, В.В. Кугуракова

Практикум на ЭВМ. Методические указанияи задачи для программирования \

по теме : Циклическая структура управления. Массив как стуктура данных

3. В.С. Кугураков, Р.К. Самитов, Р.Б. Ахтямов, В.Р. Байрашева

Практикум работы на ЭВМ.

Задание 1. Структуры управления и массивы – числовые задачи

4. В.С. Кугураков, Р.К. Самитов, Р.Б. Ахтямов, В.Р. Байрашева

Практикум работы на ЭВМ.

Задание 2. Процедуры и функции

5. В.С. Кугураков, Р.К. Самитов, Р.Б. Ахтямов, В.Р. Байрашева

Практикум работы на ЭВМ.

Задание 3. Представление данных и методы разработки алгоритмов

6. В.С. Кугураков, Р.К. Самитов, Р.Б. Ахтямов, В.Р. Байрашева

Практикум работы на ЭВМ.

Задание 4. Синтаксический анализ простых формальных языков

Лекция№1

Введение в C++

Пример задачи

(Методическое пособие.

Задание 1,структура уравнений и массивно-числовые задачи)

Вычисление объема конуса

Формула:1/3*π*R2*h

π =pi=3.14 определяется как константа

Листинг программы

#include<iostream.h> //описание объекта cin и cout

const double pi=3.14;

void main() //основная функция функция не имеет параметров.

{

double V, h, R; // объявление переменных

cout<<”Enter R= ”; //просьба ввести радиус конуса

cin>>R; //ввод данных

cout<<”Enter h= ”; //просьба ввести высоту конуса

cin>>h; //ввод данных

V=R*R*h*pi/3;// оператор присваивания

сout<<”V=”<<V<<endl; //вывод данных(объема заданного конуса)

}

Рассмотрим каждую строчку отдельно.

  1. #include<iostream.h>

В языке С++ определены ряд заголовочных файлов

( с расширением .h) , которые содержат информацию , необходимую для программы.

В данном случае #include<iostream.h> - директива препроцессора. include – включить

h файл с именем iostream в исходный текст программы. Файл iostream.h используется для поддержки С++ системы ввода и вывода. В данном случае компилятору необходимо знать описание объектов cin и cout

  1. const double pi=3.14;

Объявление вещественной константы pi

3/ void main()

void – тип функции (без значения.т.е. функция не фозвращает значения)

main- имя функции. Выполнение С++- программы начинается и заканчивается выполнением функции main()

4. {

Фигурная открывающая скобка { - начало блока

Блок

{

операторы

}

  1. double V, h, R;

Объявление вещественных переменных

  1. cout<<”Enter R= ”;

Это инструкция вывода символьной константы

<<”Enter R= ” на консоль. При выполнении этой инструкции на экране компьютера появится сообщение Enter R=. В этой инструкции используется оператор вывода <</

Он обеспечивает вывод выражения, стоящего с правой стороны , на устройство, стоящего с левой. Слово cout представляет собой встроенный идентификатор ( consol output ),

который означает экран компьютера.

  1. cin>>R;

cin – встроенный идентификатор, в данном случае он связан с клавиатурой.

>> - оператор ввода в С++

Иденитификатор R принимает символы , вводимые с клавиатуры.

  1. V=R*R*h*pi/3

Это выражение представляет собой оператор присваивания.

Вычисляется выражение R*R*h*pi/3 и его значение устанавливается для переменной V (говорят , что переменной V присваивается значение вырыжения R*R*h*pi/3)

  1. }

Закрывающая фигурная скобка } означает конец блока.

Примечание : все инструкции долдны завершаться символом ;

Типичная среда разработки С++

Давайте разберем, поэтапно, создание и исполнение приложения С++ в типичной среде разработки С++. Системы С++ обычно состоит из трех частей: среды разработки, языка и Стандартой библиотеки С++.

Инструменты среды обработки C++

- Borland C++ Builder,

- Microsoft Visual Studia C++ 6

- Microsoft Visual Studia 2010 Express

- Microsoft Visual C++ .NET

( работают под операционной системой Windows)

- GNU C++ в Linux (общее название Unix – подобных операционных систем)

Программы на С++ проходят шесть стадий:

  1. редактирования

  2. препроцессорной обработки

  3. компиляции

  4. компоновки

  5. загрузки

  6. исполнения

Типичная среда

1. Программа создается редактором и сохраняется на диске

Редактор ↔Диск

2. Программа предварительно обрабатывается. Преобразование кода

Препроцессор Диск

3. Объектный код и сохранение его на диске

Компилятор↔ Диск

4. Компоновщик связывает объектный код с библиотеками (редактор связи)

Компоновщик↔Диск

5. Загрузчик создает исполняющий файл и сохраняет на диске. Размещение программы в памяти

Загрузчик Диск

ОЗУ

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

Процессор↔ ОЗУ

Стадия 1. Создание программ

Первая стадия состоит в редактировании файла с помощью программ редактора.

С помощью редактора вы вводите программу на С++ ( которую обычно называют исходным кодом) вносите необходимые исправления и сохраняете программу на вторичном запоминающем устройсте , например ,на жестком диске. Файлы исходного кода С++ часто имеют расширение .cpp, .cxx, .C , показывающие, что файл содержит исходный код С++

Стадия 2. Препроцессорная обработка программы

На второй стадии программист дает команду скомпилировать программу. В системе С++ перед началом компиляции автоматически исполняется программа- препроцессорю.

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

Стадия 3. Компиляция программы

На третьей стадии компилятор транслирует программу на С++ в код машинного языка

( называемый также объектным кодом )

Стадия 4. Компоновка.

Четвертая стадия называется компоновкой (linking). Программы С++ обычно содержат ссылки на функции и данные , определяемые в другом месте (или проект содержит несколько cpp файлов) , например , в библиотеках или частных библиотеках группы программистов, работающих над конкретным проектом. Из-за отсутствия этих частей в программах С++ имеются “дыры”. Компоновщик (linker) присоединяет к объектному коду код отсутствующих функций, чтобы создать исполняемый образ. Если программа успешно компилируется и компонуется , образуется исполняемый файл.

Стадия 5. Загрузка

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

Стадия 6. Исполнение

Наконец , компьютер под управлением центрального процессора, исполняет программу одиночными инструкциями.

Переменные

Тип Диапазон Размер

bool true 1; false 0 1байт

char

signed -128 до 127 1байт

unsigned 0 до 255 1 байт

Int

signed mod 232-1 4 байтa

unsigned 0 до 4 294 967 295 4 байтa

Double 3.4e-308-1.7e+308 8 байов

Лекция№2

Алгебра логики

Bool a,y,z

True-истина

False-ложь

Операции

Конъюнкция

&&- *, ^.& -and

Дизъюнкция

||-v-or

Отрицание

!- ⌐X-not

X

Y

X&Y

XVY

X

0

0

0

0

1

0

1

0

1

1

1

0

0

1

0

1

1

1

1

0

Правило де Моргана

⌐XvY= ⌐X&⌐Y ⌐ X&Y= ⌐Xv ⌐Y

X

Y

XVY

XVY

X

Y

X&⌐Y

0

0

0

1

1

1

1

0

1

1

0

1

0

0

1

0

1

0

0

1

0

1

1

1

0

0

0

0

X&(Y v Z)=X&Y v X&Z

X v (Y&Z) =(X v Y) & (X v Z)

X v ⌐X =1

X & ⌐X =0

Импликация

Из X следует Y

X

Y

XY

0

0

1

0

1

1

1

0

0

1

1

1

Пересечение X ^ Y

Объединение X v Y

Пример

D=D1^D1^D2^D3^D4

(X,Y) € D →((X,Y) € D1)& ((X,Y) € D2)& ((X,Y) € D3)& ((X,Y) € D4)

На языке С

(X,Y) € D →(Y>=X-1)&& (Y<=X+1)& & (Y<= -X+1)&& (Y >= -X-1)

D=D1vD1vD2vD3vD4

(X,Y) € D→(Y>=X-1) || (Y<=X+1)|| (Y<= -X+1)|| (Y >= -X-1)

A € X\Y=X ^ Y

X\Y c X ^ Y

X ^ Y c X\Y

Доказательство:

  1. p € X\Y=(p € X)&(p € Y )= p X ^ Y

  2. p X ^ Y= (p € X)&(p € Y )= p € X\Y

D1\D2

(X,Y) € D1\D2 =(X,Y) € D1^ D2

((X,Y) € D1)&&((X,Y) € D2)↔ ((X,Y) € D1)&&!(( X,Y) € D2)

Лекция№3

Операторы

Условный оператор

Полный

If ( B) C1; else C2;

если условие В истинно, то выполнится действие C1;

если условие В ложно, то выполнится действие C2;

Неполный

If ( B) C1;

Блочный оператор

if (B) {c1;c2;}

else c3;

*{c1;c2;}-блок операторов

Примеры

1)Вычисление max

x, y

max=max{x, y}

if (x<y) max=y;

else max=x;

max=max{x, y, z}

1)

if (x<y)

if (y<z) max=z;

else max=y;

else if (x<z) max=z;

else max=x;

2)

max=x;

if (max<y) max=y;

if (max<z) max=z;

3)

if (1) {if (2) 1;}

else 2;

4)

if (1)

if (2) 1;

else 2;

5)

if (1)

{

1;

if (2) {2;3;}

else {4;5;}

6;

}

else

{

if (3)

{

if (4) {3;4;}

}

else 9;

10;

}

6) Решение квадратного уравнения ax2+bx+c=0

# include <iostream.h>

# include <math.h>

void main()

{

int a ,b, c;

double x, d, x1, x2;

cout<<”Enter a, b, c”;

cin>>a, b, c;

if (a==0)

{

if (b==0)

{

if (c==0) cout<<”x-любое число”;

else cout<<”“нет решений”;

}

else {x= -c/b;}

}

else

{

D=b*b-4*a*c;

if (D>=0)

{

x1=( -b+ sqrt(D))/(2*a);

x2= (-b- sqrt(D))/(2*a);

}

else cout<<”нет действительных корней”;

}

cout<<endl;

}

Примечание

Возведение в степень

b2=paw(b,2)

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

void main()

{

int i;

i=5;

{

int i;

i=10;

cout<<i; //на экран будет выведено 10

}

cout<<i; //на экран будет выведено 5

}

Лекция №4

Системы счисления

Циклы

Десятичная 0,1,2,3,4,5,6,7,8,9

904=9*102+0*10+4*100

Двоичная 0,1

1012=1*22+0*2+1*20=510

Троичная 0,1,2

1013=1*32+0*3+1*30=1010

Шестнадцатеричная 0,1,2,3,4,5,6,7,8,9,A, B, C, D

ABBA16=10*163+11*162+11*16+10*160=40960+2816+176+10=4396210

Перевод вещественных чисел из одной системы в другую

904,90410=1110001000,1112

Перевод целой части

904/2=452 остаток 0

452/2=226 остаток 0

226/2=113 остаток 0

113/2=56 остаток 1

56/2=28 остаток 0

28/2=14 остаток 0

14/2=7 остаток 0

7/2=3 остаток 1

3/2=1 остаток 1

Перевод дробной части

0,904*2=1,808

0,808*2=1,616

0,616*2=1,232

0,232*2=0,464

Перевод из двоичной системы в четверичную, восьмеричную, шестнадцатеричную.

0110111011100011=123232034

= 673438

=6ЕЕ316

10 16 2

0 0 0000

1 1 0001

2 2 0010

9 9 1001

10 А 1010

11 B 1011

12 C 1100

13 D 1101

14 E 1110

15 F 1111

10010=11001002=12104=1448=6416

int x =100

количество байтов=4 байт

1 байт=8 бит 4 байта=32бит

Инверсия битов

0→1

1→0

Прибавляя к коду 1, получаем число в дополнительном коде

0,25*1010-порядок

Мантисса

Double 4 байта

1234 - мантисса

Порядок

Примечание

int x=100; double y=2.5;

y-y+x- тип double

Циклы