- •Первый семестр
- •1) Цикл с предусловием
- •2) Цикл с постусловием
- •Преобразование типа переменной в программе
- •Continue
- •Вычислить сумму произведений элементов
- •Найти максимальную из построчных сумм
- •Умножение матриц
- •Void create(int**X, int n)
- •Void show(int**X, int n)
- •Void mult ( int **X, int**y, int**z)
- •Void add ( int **X, int**y, int**z)
- •Исходные данные
- •За приближенное значение интеграла принимается такое, при котором .
- •Strcpy()
- •Strncpy()
- •Strcat()
- •Strcmp()
- •Strclen()
- •Int** create(ifstream &f , int n )
- •Int** subtr (int** X, int**y, int n)
- •Int** mult (int** X, int**y, int n)
КУРС ЛЕКЦИЙ ПО ЯЗЫКУ ПРОГРАММИРОВАНИЯ C++
Первый семестр
Литература
Герберт. Шилдт. С++ руководство для начинающих
Т.А. Павловская. С/С++ Программирование на языке высокого уровня
Никлаус Вирт. Алгоритмы и структуры данных
Т.А. Павловская, Ю.А. Щупак С/C++ Структурное программирование. Практикум
В.В. Лаптев , А.В. Морозов , А.В.Бокова. С++ объектно-ориентированное программирование. Задачи и упражнения
Н. Культин . С/С++ в задачах и примерах
Л.З. Шауцукова. Информатика 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; //вывод данных(объема заданного конуса)
}
Рассмотрим каждую строчку отдельно.
#include<iostream.h>
В языке С++ определены ряд заголовочных файлов
( с расширением .h) , которые содержат информацию , необходимую для программы.
В данном случае #include<iostream.h> - директива препроцессора. include – включить
h файл с именем iostream в исходный текст программы. Файл iostream.h используется для поддержки С++ системы ввода и вывода. В данном случае компилятору необходимо знать описание объектов cin и cout
const double pi=3.14;
Объявление вещественной константы pi
3/ void main()
void – тип функции (без значения.т.е. функция не фозвращает значения)
main- имя функции. Выполнение С++- программы начинается и заканчивается выполнением функции main()
4. {
Фигурная открывающая скобка { - начало блока
Блок
{
операторы
}
double V, h, R;
Объявление вещественных переменных
cout<<”Enter R= ”;
Это инструкция вывода символьной константы
<<”Enter R= ” на консоль. При выполнении этой инструкции на экране компьютера появится сообщение Enter R=. В этой инструкции используется оператор вывода <</
Он обеспечивает вывод выражения, стоящего с правой стороны , на устройство, стоящего с левой. Слово cout представляет собой встроенный идентификатор ( consol output ),
который означает экран компьютера.
cin>>R;
cin – встроенный идентификатор, в данном случае он связан с клавиатурой.
>> - оператор ввода в С++
Иденитификатор R принимает символы , вводимые с клавиатуры.
V=R*R*h*pi/3
Это выражение представляет собой оператор присваивания.
Вычисляется выражение R*R*h*pi/3 и его значение устанавливается для переменной V (говорят , что переменной V присваивается значение вырыжения R*R*h*pi/3)
}
Закрывающая фигурная скобка } означает конец блока.
Примечание : все инструкции долдны завершаться символом ;
Типичная среда разработки С++
Давайте разберем, поэтапно, создание и исполнение приложения С++ в типичной среде разработки С++. Системы С++ обычно состоит из трех частей: среды разработки, языка и Стандартой библиотеки С++.
Инструменты среды обработки 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. Создание программ
Первая стадия состоит в редактировании файла с помощью программ редактора.
С помощью редактора вы вводите программу на С++ ( которую обычно называют исходным кодом) вносите необходимые исправления и сохраняете программу на вторичном запоминающем устройсте , например ,на жестком диске. Файлы исходного кода С++ часто имеют расширение .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
Доказательство:
p € X\Y=(p € X)&(p € ⌐Y )= p € X ^ ⌐Y
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 байта
▄1 ▄2 ▄3 ▄4 - мантисса
Порядок
Примечание
int x=100; double y=2.5;
y-y+x- тип double
Циклы
