Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Стадия 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
         
         
         
         

 

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

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

X Y XVY ⌐XVY ⌐X ⌐Y ⌐X&⌐Y
             
             
             
             

 

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 XàY
     
     
     
     

Пересечение 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 ^ YcX\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

Циклы

 

1) Цикл с предусловием

 

 

While (B) C;

Пустой цикл

 

Бесконечный цикл

 

 

While (B)

{

C1;C2;C3;

}

 

 

Цикл с постусловием

Do C while (B)

 

 

Пример 1

С помощью цикла while вычислить

y=1+2+3+..+n

y=∑in=1i

 

# include <iostream.h>

void main()

{ int i,y, n;

cout<<”Enter n=”;

cin>>n;

y=0;

i=1;

while (i<=n) { y=y+i;

i++;

}

cout<<”y=”<<y<<endl;

}

 

С помощью цикла do while вычислить

y=1+2+3+..+n

 

# include <iostream.h>

void main()

{ int i,y, n;

cout<<”Enter n=”;

cin>>n;

y=0;

i=1;

do { y=y+i;

i++;

}

while (i<=n);

cout<<”y=”<<y<<endl;

}

 

 

Пример 2

y=1/1!+1/2!+1/3!+…1/n!

y=y+1/f - тип double

 

 

# include <iostream.h>

void main()

{

 

int i,f, n;

double y;

cout<<”Enter n=”;

cin>>n;

y=0;

i=1;

f=1;

while (i<=n)

{f=f*i;

y=y+(double)1/f;

i++;

}

cout<<”y=”<<y<<endl;

}

 

Пример 3

Вычислить y=sin(x)

sin (x) =x -x3/3!+x5/5!-x7/7!+…

sin(x) = ∑0 (-1)i x2i+1 / (2i+1)!

 

1 способ

 

step=x

znak=1

fact=1

y=y+ step*znak/fact

 

# include <iostream.h>

# include <math.h>

void main()

{

int i, n, fact, znak;

double y,x,step;

cout<<”enter x=”;

cin>>x;

cout<<”enter n=”;

cin>>n;

y=x;

znak=1;

step=x;

factorial=1;

for (i=1;i<=n;i++)

{

znak=-znak;

step=step*x*x;

factorial=factorial*2*i*(2*i+1);

y=y+znak*stepen/fact;

}

cout<<”y=”<<y;

cout<<”sin(x)=”<<sin(x);

}

 

2 способ (универсальный для всех рядов)

y= x-x3/3!+x5/5!-x7/7!+…

y=∑0 (-1)i x2i+1 / (2i+1)!= ∑0ti

ti=ti-1*p

p= ti/ ti-1= ((-1)i x2i+1 / (2i+1)!)/ ((-1)i-1 x2i-1 / (2i-1)!)= -x2/2*i*(2*i+1)

 

# include <iostream.h>

void main()

{

double y, x, t;

int i, n;

cout << ”enter x=”;

cin >> x;

cout << ”enter n=”;

cin >> n;

y=x;

t=x;

for (i=1;i<=n;i++)

{

t= -t*x*x/((2*i+1)*2*i)

y=y+t;

}

cout << ”y=” << y;

}

Возможные варианты

 

while- вариант

 

# include <iostream.h>

# include <math.h>

void main()

{

const double eps=0.001;

double y, x, t;

cout << ”enter x=”;

cin >> x;

y=0;

t=x;

int i=1;

while (fabs(t)>eps)

{

y = y+t;

t = -t*x*x/((2*i+1)*2*i);

i++;

}

Cout << ”y=” << y;

}

 

2) При помощи цикла for

 

for (int i=1; fabs(t)>eps; i++)

{

t= -t*x*x/((2*i-1)*2*i)

y=y+t;

}

 

 

Пример 4

 

Вычислить косинус

Cos(x)=∑i (-1)i x2i / 2i!

p = -x2 / ((2*i+1)*2*i)

 

# include <iostream.h>

void main()

{double y, x, t; int n;

int n;

cout<<”enter x=”;

cin>>x;

cout<<”enter n=”;

cin>>n;

y=x;

t=x;

for (int i=1;i<=n;i++)

{

t= -t*x*x/((2*i-1)*2*i)

y=y+t;

}

cout<<”y=”<<y;

}

Лекция №5





Поделиться с друзьями:


Дата добавления: 2016-12-06; Мы поможем в написании ваших работ!; просмотров: 410 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Студенческая общага - это место, где меня научили готовить 20 блюд из макарон и 40 из доширака. А майонез - это вообще десерт. © Неизвестно
==> читать все изречения...

2320 - | 2275 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.011 с.