Въвеждане и извеждане. C++

  1. За въвеждането на данни е необходимо да се знае: за кои величини ще се въвеждат стойности, какъв е типът им и съответно кои са допустимите стойности, от кое устройство се извършва въвеждането на данни.
  2. За извеждането на резултати е необходимо да се знае: кои са величините(изразите) чиито стойности ще се извеждат(те задължително трябва да имат стойности), какъв ще бъде форматът на извеждане, чрез кое устройство ще се извърши извеждането.

В езика С++ входно-изходни операции не са непосредствени команди и затова те не са включени в списъка на ключовите думи. По-скоро входно-изходните потоци и командите за управлението им са библиотечни функции. Биоблиотеките са iostream.h и stdio.h. Класът istream обслужва операциите по въвеждане на данни, а видът ostream – тези по извеждане на данни. Двата вида заедно образуват iostream. Този вид обединява в себе си функциите на гореспоменатите видове така, че обслужва входно-изходните операции.

iostream.h – поддържа входно-изходните операции с монитора и клавиатурата

I. Вход на данни: Входът от клавиатурата е буфериран. Това означава, че всяка редица от натиснати клавиши се разглежда като пакет, който се обработва чак след като се натисне клавиша ENTER.

1. Синтаксис:

cin >> <променлива>; където:

  • cin е обект (променлива) от клас (тип) istream, свързан с клавиатурата,
  • <променлива> е идентификатор, дефиниран, като променлива от “допустим тип”, преди оператора за въвеждане. (Типовете int, long, double са допустими).

2. Семантика- Извлича (въвежда) от cin (клавиатурата) поредната дума и я прехвърля в аргумента-приемник <променлива>. Конструкцията cin >> <променлива> е израз от тип istream със стойност левия му аргумент, т.е. резултатът от изпълнението на оператора >> е cin.

Това позволява няколко думи да бъдат извличани чрез верига от оператори >>. Следователно, допустим е следният по-общ синтаксис на >>:

cin >> <променлива> { >> <променлива>};

Операторът >> се изпълнява отляво надясно. Такива оператори се наричат ляво асоциативни. Така операторът cin >> променлива1 >> променлива2 >> … >> променливаn; е еквивалентен на редицата от оператори:

cin >> променлива1;

cin >> променлива2;

cin >> променливаn;

II. Оператор за изход <<

1. Синтаксис: cout << <израз>; където:

  • cout е обект (променлива) от клас (тип) ostream и предварително свързан с екрана на компютъра;
  • <израз> е израз от допустим тип. Представата за израз продължава да бъде тази от математиката. Допустими типове са bool, int, short, long, double, float и др.

2. Семантика- Операторът << изпраща (извежда) към (върху) cout (екрана на компютъра) стойността на <израз>. Конструкцията cout << <израз> е израз от тип ostream и има стойност първия му аргумент, т.е. резултатът от изпълнението на оператора << в горния случай е cout.

Това позвалява чрез верига от оператори << да бъдат изведени стойностите на повече от един <израз>, т.е. допустим е следният по-общ синтаксис:

cout << <израз> { << <израз>}; Операторът << се изпълнява отляво надясно (ляво асоциативен). Така операторът cout << израз1 << израз2 << … << изразn е еквивалентен на редицата от оператори:

cout << израз1;

cout << израз2;

cout << изразn;

3. Форматиран изход: Необходимо е използването на библиотека iomanip.h

При извеждане на реални числа е необходимо да се познават начините за форматиране на изход. Дробните числа се представят по 2 начина: Напр: 0.00000023 и 2.3-10е7- експоненциален вид на числото. С оператора cout<<1.234567 ще се изведе 1.23456, защото стандартно се извеждат 6 значещи цифри. Точността може да се управлява със следните манипулатори за извеждане:

a)      Setprecision(<цяло число>), където <цяло число> е броя на цифрите след десетичната точка:

cout << setprecision (6)<< 1.23456789;

изход на екрана: 1.234567

b)      setw (<цяло число>), където <цяло число> е ширината на полето(минимална стойност), в което се извежда променливата:

cout << setw (12) <<123456;

изход на екрана: ––123456

с)      други символи за форматиране на изхода:

*    \n- нов ред

*    \t- табулация

3.Пример- да се разпечата следната фигура:

1
2 1 2
3 2 1 2 3
4 3 2 1 2 3 4
3 2 1 2 3
2 1 2
1

Програми. C++

Програмите реализират алгоритми. Алгоритмите от своя страна биват линейни, разклонени и циклични конструкции.

  1. Линейни контрукции- действията се изпълняват последователно. Обикновено този вод конструкции съдържат само оператор за въвеждане, оператор за присвояване и оператор за извеждане.

Операторът за присвояване се използва за присвояване на междинни и крайни стойности на променливи.

a)      Синтаксис- идентификатор= израз

b)      Семенатика- при изпълнение на оператора се изпълнява израза и след това се присвоява неговата стойност на идентификатора- променлива.

c)      В езика С++ за разлика от Pascal има допълнителни възможности за използване на оператора присвояване:

  • Верижно присвояване: а=в=с
  • х+=у <–>х=х+у
  • х-=у <–> х=х-у
  • х*=у <–> х=х*у
  • х/=у <–> х=х/у
  • х%=у <–> х=х%у
  • х=х+1<–> х++
  • х=х-1 <–> х—

*    Пример: Размяна стойностите на 2 променливи- осн. задача:

#include <iostream.h>

int main()

{

cin>>a>>b;

x=a;

a=b;

b=x;

cout<<”Новите стойности на a и b са:”<<а<<”,”<<b;

return 0;

}

*    Пример: Пресмятане на израз(без недопустими стойности)

*    Въвеждане на 3 цифрено число- извеждане на цифрите му.

2.  Разклонена конструкция- когато се изисква проверка на условие- избор на вариант. Оператор за избор:

a)      синтаксис:

if(<условие>)<оператор1>;   или

if(<условие>){<оператор1>;<оператор2>;…}   или

if(<условие>)<оператор1>;

else < оператор2>;    /*пълна форма*/

b)      семантика- Ако условието е изпълнено се изпълнява оператор1(или блока от оператори), ако не е изпълнено продължава със следващия оператор от програмата(при пълна форма- се изпълнява оператор2)

c)      Блок- когато е необходимо изпълнението на няколко оператора, те се заграждат в { }

d)     Демонстриране чрез блок- схема. Условните оператори могат да бъдат и вложени.

e)      Примери:

  • Изчисляване на S, P на квадрат, правоъгълник по зададени страни. Проверява се дали могат да са страни.
  • Намиране на най- малкото, най- голямото измежду 2,3 въведени числа.
  • Пресмятане на израз с допустими стойности(проверка за променливите, дали са допустими)
  • Решаване на квадратно уравнение, линейно уравнение, линейно неравенство.
  • Определяне дали т. от координатната система е от защрихована област.
  • Въвеждане на a,b,c, извеждане на 0, ако не могат да са страни на триъгълник или 1,2,3 в зависимост от вида на триъгълника.

3. Многовариантен избор

a)      Синтаксис:

Switch(<израз>)

{

case <израз1>:<оператор1>;<оператор2>;…[break;]

case <израз2>:<оператор1>;<оператор2>;…[break;]

……

[default: <оператор1>;<оператор2>;…]

}

b)      семантика- изчислява “израз” и го сравнява със стойностите на изброените изрази. Ако намери равенство изпълнява операторите след съответния израз. Ако е изписан break- прекъсва търсенето. Ако не е намерено съответствие на израза- изпълнява операторите след default.

  • Оператор break- предизвиква прекъсване на оператора switch(или в който участва) и продължава със следващия оператор.

c)      Пример- да се въведе число от 1 до 7 и да се изведе ден от седмицата:

Switch (a)

{

case 1:cout<<”Понеделник”;break;

case 2:cout<<”Вторник”;break;

….

Default:cout<<”Няма такъв ден”;

}

d)     Пример- да се въведат а и b и символ(+,-,*,/). Да се извърши въведената операция и да се изведе резултат.

4. Циклични конструкции- многократно повторение на 1 или няколко оператора(при повече от 1 оператор, то те прябва да се поставят в блок).

a)      Елементи на всеки цикъл: начални стойности, условие осигуряващо изход от цикъла, корекция(която влияе на условието за край), тяло на цикъла

b)      Видове цикли според броя на повторенията- с предварително известен брой повторения, с неизвестен брой повторения

c)      Видове цикли според условието- цикъл с предусловие, с постусловие, с управляваща променлива

d)     Описание:

  • С управляваща променлива- броя на повторенията е предварително известен:

*    Синтаксис:

for ([<тип на упр.пром.>]<упр.пром.>=<нач.стойност>;<условие за край>;<корекция >) <оператор>;

for(int i=1;i<=n;i++) cout>>i>>endl;

*    семантика- за упр.променлива от началната до крайната стойност повтори оператора

  • Цикъл с предусловие:

*    Синтаксис:

While(<условие>)<оператор>;

*    Семантика- докато условието има стойност True да се повтаря оператора

  • Цикъл с постусловие:

*    Синтаксис:

Do <оператор>While(<условие>);

*    Семантика- повтаряй оператора докато условието е със стойност True

  • Разлика между циклите с предусловие и с постусловие- мин. бр. изпълнения на цикъла с предусловие е 0, а на цикъла с постусловие-1. Възможно е броят на повторенията да не е предварително известен.

e)      Примери:

  • Да се въвежда число дотогава докато се въведе число >0 или друго условие. Да се намери сумата им, да се преброят четните измежду въведените. (със следусловие).
  • Да се сумират числата от 1 до n. Да се преброят тези от тях, които са >0. Да се преброят числата от 1 до n, които се делят на 3. Намиране на минимален/максимален елемент. (цикъл с упр. променлива)
  • Да се въведе N и да се изведат числата от редицата на Фибоначи < N.(всяко следващо се получава като суман от предходните 2: 1,1,2,3,5,8,13,21…)- неопределен брой повторения.
  • Да се въведе р и да се изведат всички числа- негови делители.
  • Намиране на НОК- алгоритъм на Евклид.
  • Вложени цикли- когато в тялото на един цикъл се съдържа друг цикъл.
  • Да се отпечата таблицата за умножение.
  • Да се пресметне S=1+1.2+1.2.3+1.2.3.4+…+1.2.3.4…N, където N се въвежда

Типове данни C++

Класификация:

Запознаване със скаларни ТД, операции с тях(C++):

1. Целочислен ТД- цели положителни и отрицателни стойности, както и 0.

a)  Дефиниране- Int, памет- 2В

b) Допустими стойности- ограничение на стойностите(според ограничението за запаметяване на числа от този тип)

  • за Int допустимите стойносоти са в интервала [-32768;32767]
  • величина от този тип заема 2В в паметта

Пр: Const int a=4 ;    int w,h=-2 ;

c) Допустими операции +, -, *, /,(целочислено деление), %(остатък от делението), сравнения(<, <=,>,>=, ==, !=)

d) Вградени функции(включване на библиотека math.h):

  • abs(х) –> |x|
  • рow(x,n) –> xn

2. Реален ТД- компютърът работи само с десетични дробни числа. Към реалния тип данни спадат дробните и целите положителни и отрицателни стойности, както и 0.

a) Дефиниране- float(4B), double(8B)

Пр: const float p=3.123 ;   double x,y=234.23 ;

b) Експоненциален вид: 1.456е+3= 1.456*103

c) Допустими операции: + – * / сравнения

d) Специфични числови операции ++  –, за увеличаване с 1, за намаляване с 1(напр. а=а+1 е идентично на а++, но второто се изпълнява по- бързо)

e) Вградени функции:

  • fabs(x) –> |x|
  • Pow(x,n) –> xn
  • Sin(x), cos(x), където x е в радиани
  • Sqrt(x)–>корен втори от х
  • Ceil(x) –>  най- близкото цяло число, по- голямо от х
  • Floor(х) –> най- близкото цяло число, по- малко от х

3. Логически тип:

a) Дефиниране- bool

Пр: bool a, c=true;

b) Допустими стойности- True, False, представят се като 1 и 0

c) Допустими операции

–   !- отрицание- едноаргументна функция

Ако Х=0, то !Х=1

Ако Х=1, то !Х=0

–  &&- логическо И, логическо умножение

Х У Х&&У
0 0 0
0 1 0
1 0 0
1 1 1

Свойства:

  • X&&Y=Y&&X
  • X&&X=X
  • X&&0=0
  • X&&1=X
  • X&&!X=0

–  || логическо ИЛИ, логическо събиране

Х У Х||У
0 0 0
0 1 1
1 0 1
1 1 1

Свойства:

  • Х||У= У||Х
  • Х||Х=Х
  • X||0=X
  • X||1=1
  • X||!X=1

–  приоритет: !, &&, |

4. Символен тип:

a)  Дефиниране- char

Пр: char а, b=’A’;

b) Допустими стойности- символи от ASCII- таблицата. На всеки символ съответства код [0;255]

c) Допустими операции

  • Аритметични +,- извършват действията с кодовете на символите
  • Преобразувания в символен тип или в числов тип:
  • (int) символ àкода на символа
  • (char) число є [0;255] –> символа с този код

5. Преобразувания между типовете:

a)  Неявно преобразуване- когато в израз участват различни типове данни

  • Логически –>числен(true–>1, false–>0)

символен(символи с код 0 и 1)

  • Числов –>логически(0–> false,число различно от 0–> true): 24&&0
  • Символен –>логически(‘’–>false, всички останали символи –> true)

числен(съответния код на символа): ’5’+2

  • Целочислен –> реален (без загуба на данни): 3*1.2
  • Реален –> целочислен (със загуба на данни) int c=1.23;

b)      Явно преобразуване (<тип>)<израз>;

Пр: (int) 2.5–>2, (bool)2–> true

Езици за програмиране C++

I. Формалните езици представляват изкуствено създадени езици, които имат следните елементи-

  1. азбука(допустимите за езика символи)
  2. синтаксис(правила за изграждане на изречения, изрази)
  3. семантика(смисъла на изреченията, изразите)

За такива формални езици могат да се приемат писането на ноти, изписването на химични формули, езика Есперанто(който също е изкуствено създаден) и др.

II. Езиците за програмиране от високо ниво също представляват формални езици за описание на данните и алгоритмите.

Програма– последователност от команди, реализиращи алгоритъм, записани на ЕП. Програмата става изпълнима от компютъра след като бъде преведена на машинен език. Това вършат транслаторите, които биват интерпретатори и компилатори, спред начина по който превеждат.

Средите за програмиране включват следните елементи: текстов редактор(за въвеждане текста на програмата), транслатор(ако е компилатор, след изпълнение на програмата следва…), превод на програмата в обектен код(obj), свързващ редактор(свързва всички необходими файлове за нашата задача, напр. библиотеките(файлове с готови програмни части))

ep1

III. Общо описание на езика С++:

  1. Предимства на езика С++, развитие на езика С:

a)      поддръжка на абстрактни типове данни

b)      поддръжка на обектноориентирано програмиране

c)      надграждащо програмиране

2. Елементи на езика С++:

a)      Азбука- малки и големи лат. букви, цифри, знаци

b)      Думи- запазени думи, стандартни думи- използват се с определена семантика.

c)      Идентификатори- потребителски имена на величини и конструкции- могат да започват с лат. Буква, да съдържат лат. букви, цифри, долна черта. Запазените думи не могат да се използват за идентификатори.

d)     Оператори- основни структурни единици, последователност от елементи, които водят до изпълнението на команди от процесора. Операторът е еквивалентен на изречение в говоримите езици(завършена конструкция). Операторите биват за:

  • Описание на програмни обекти
  • Аритметични и логически операции
  • Управление на изчислителния процес

3. Структура на програма:

str

Пример:

#include <iostream.h>

int main()

{

int a,b;

cout<<„Въведи страни на правоъгълник“<<„\n“;

/*Страните трябва да са цели положителни числа*/

cin>>a>>b;

cout<<„Лицето на правоъгълника е:“<<a*b;

return o;

}