Програми. 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 се въвежда

Коментари: