Управление на изчислителния процес

Основни структури за управление на изчислителния процес. Оператори за разклонение и оператори за цикъл.

Операции
Езикът С поддържа операции за реализиране на аритметични изчисления, логически операции, операции за отношение и др. Основните операции се означават със съответни символи (набор от символи).
Броят на операндите (величините върху които действа операцията) определя операциите като:

  1. Унарни операции – които действат върху една величина;
  2. Бинарни операции – които действат върху две величини;
  3. Тернарни операции – които действат върху три величини.


Според формата на запис операциите биват:

  • Инфиксни – операцията се записва между операндите, например  А + В
  • Префиксни – операцията се записва пред операндите, например  +АВ
  • Постфиксни – операцията се записва след операндите, например  АВ+

Като операнди в операциите могат да участват константи, променливи и стоиности, които са от съответния допустим за операцията тип.
Операция за присвояване – позволява присвояване на стойност на променлива. Означава се с “=”.
<идентификатор на променлива> = операнд
където операнд може да бъде стойност или израз, валиден за езика.

пример:  а = 5;
с = а+6;
В С е допустимо обединяването на операциите за присвояване (операцията за присвояване има стойност), което позволява вмъкването и в оператори.

пример:

х1 = х2 = 10;
while (( y1 = y2 / 10 ) != 0 ) y2 – - ;

Присвояването на стойности от тип, различен от типа на променливата също е допустимо в С, тъй като езика позволява автоматично преобразуване на типовете, но е възможна загуба на информация. Операнда получава типа на променливата.
Аритметични операции – събиране (+), изваждане (-), умножение (*), деление (/) и деление по модул (%). Те са бинарни операции. Използват се в аритметични изрази. Могат да участват и символите ( ) , които определят реда на изчисляване на изразите. За най-често използваните аритметични опперации, в С съществува така наречения съкратен запис:
инкрементиране:     + + а
а + +
декрементиране:    а – -
- – а
При постфиксната форма, резултатът от израза се взема преди да се извърши изменението с 1, а при префиксната – след извършване на операцията. Тези операции се извършват с една машинна инструкция, което повишава бързодействието на алгоритъма.
Езика позволява и следните конструкции да бъдат записани с помоща на съкратен запис:

  • а = а + b    еквивалентна на     a += b
  • а = а – b    еквивалентна на     a -= b
  • а = а * b    еквивалентна на     a *= b
  • а = а / b    еквивалентна на     a /= b

Операции за отношение – използват се за сравняване на стойности. Означават се със символите: “>” , “>=” , “<” , “<=” , “= =” и “! =”. Резултатът от сравнението може да бъде “истина” (TRUE) или “лъжа” (FALSE ). В С FALSE има стойност 0, а TRUE – стойност, различна от 0.
Логически операции – използват се за свързване на операции за отношение и за оценяването им от гледна точка на логиката. Символите на логическите операции в С са:
&& – логическо И ( AND )
| |- логическо ИЛИ (OR )
! – логическо НЕ ( NOT )
Тези операции също имат стойност различна от 0 или 0 в зависимост от това дали условието е вярно или не. Първите две операции са бинарни, а третата – унарна.
Поразредни операции – операции за обработка на отделни битове. Позволяват проверяване, установяване или преместване на отделни битове на стойността на променлива от тип int (short, long, unsigned) или char.
& – поразредно  логическо И – използва се за нулиране на отделни битове в числената стойност на резултата.
|  – поразредно  логическо ИЛИ – използва се за задаване на 1 на отделни битове в числената стойност на резултата.
^ – поразредно логическо изключващо ИЛИ – отделни битове в числената стойност на резултатасе установяват равни на 1 само ако съответните им битове в операндите са различни.
~ – побитова инверсия – всеки бит на операнда се променя в обратната си стойност, т.е. 1 -> 0 и 0 -> 1.
>> – изместване в дясно
<< – изместване в ляво
Обикновенно >> и << се използват за осъществяване на много бързо умножение или деление. Всяко << с 1 позиция напрактика е умножение по 2, а >> с 1 позиция е деление на 2.
С помощта на аритметичните операции, операциите за сравнение и логическите операции могат да се конструират изрази, които позволяват реализиране на изчисления. Израз е всяка валидна за езика комбинация от символи за операции, операнди и ( ). Редът за изчисляване на израз в С се определя от приоритета на съставящите го операции.
Допълнителни операции:
Операция за условен израз – ?  :
Синтаксис:      операнд1 ? операнд2 : операнд3
Операнди са всички валидни за езика изрази. Операнд1 се изчислява и ако има стойност различна от 0 (TRUE ) се изчислява операнд2 и неговата стойност е резултат от операзията. Ако операнд1 има стойност 0 (FALSE ), се изчислява операнд3.

Пример:     z = ( a > b ) ? a : b ;    //  z ще приеме по-голямото от a и b
Операция за последователно изпълнение -  ,
Синтаксис:      операнд1 , операнд2
Изчисляват се последователно операнд1 и операнд2, като резултат на операцията е стойността на операнд2.

Пример:     for ( a = 0 , i = a ; i < 100 ; i + + ) a + = i ;

Операция за преобразуване на типове – дава допълнителна възможност за преобразуване на типа на операнд до указания явно в кръглите скоби тип.
Синтаксис:      (тип) операнд
Операция за размер на обект – връща размера байтове, необходим за съхраняването на операнда, който може да бъде променлива, израз или ключова дума за тип на данни.

Управляващи оператори

Чрез управляващите оператори се задава реда на изпълнение на действията, участващи в алгоритъма.  Всички оператори с изключение на съставния оператор завършват с “ ; “.
Съставен оператор (блок) – представлява фрагмент от програма разположен между две фигурни скоби { }. Напрактика той е обединение на множество оператори, които са логически неделими и се третират като един оператор. Участва в програмите, когато синтаксисът на оператор ( if, while, for ) изисква запис само на един оператор, а логиката на алгоритъма налага запис на повече от един.

Оператори за разклонение
Оператор if – използва се за реализиране на разклонен алгоритъм. Позволява избор на един от два възможни клона в програмата. Синтаксисът позволява да се използва кратка и пълна форма на if.
Синтаксис:      if (условен израз) оператор;

if (условен израз) оператор1;
else ) оператор2;
В зависимост от стойността на условния израз се изпълнява оператор1 (за стойност различна от 0) или оператор2 (за стойност = 0), но никога и двата оператора едновременно за една проверка. Алгоритъма продължава със следващия оператор в програмата. Оператори в if могат да бъдат кои да е валидни за езика оператори, вклщчително и if. Трябва да се има предвид, че всяко else се отнася синтактично и логически за последния незатворен if.
Оператор switch – осъществява избор на един от няколко възможни варианта.
Синтаксис:  switch ( израз) { case константен израз1 : оператор1;
case константен израз2 : оператор2;
case константен израз3 : оператор3;

case константен израз n : оператор n;
[default : оператор;]
}
изчислява се стойността на израз, след което тя последователно се сравнява с константните изрази изброени след всяко case. При равенство се изпълнява съответния оператор и всички останали оператори следващи в изброяваните case. Частта default се изпълнява в случай, че няма съвпадение. Тя не е задължителна в синтаксиса на опедатора  switch. Когато се налага да бъде изпълнена само една алтернатива от switch се използва оператор break, за прекъсване и изход от switch.

Оператори за цикъл

Многократното изпълнение на едни и същи действия се нарича цикъл. Едно изпълнение на цикъла е итерация. Основната структура на цикъла има 4 части: инициализация, тяло, стъпка (актуализация) и проверка (условие за край). Редът на изпълнение на елементите на цикъла определя вида му: цикъл с предусловие и цикъл с постусловие.
Тялото на цикъла е оператор – прост или съставен, който изпълнява желаните действия в цикъла.
Проверката е логически израз, чиято стойност определя завършването или повтарянето на цикъла. Ако тази стойност е равна на 0, цикълът се прекратява и управлението се предава на първия оператор следващ цикъла. Ако стойността е различна от 0 се продължава със следващата итерация на цикъла.
Инициализацията се прави еднократно в началото на изпълнение на цикъла и служи за начално установяване на стойностите на някои променливи, използвани в цикъла.
Актуализацията е за – промяна на съдържанието на променлива, служеща за управление на цикъла.

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

Синтаксис:     while  (условен израз) оператор;
Проверява се условния израз, ако има стойност различна от 0 – се изпълнява тялото на цикъла оператор. Действията се повтарят докато условието е вярно. От цикъла се излиза, когато условието стане равно на 0 (невярно). Алгоритъма продължава със следващия оператор в програмата.
Цикъл с постусловие
Синтаксис:     do оператор; while  (условен израз);
Изпълнява се оператора след do, след което се проверява условието. Ако то е вярно, отново се изпълнява оператора, формиращ тялото на цикъла. Цикълът се повтаря докато условието е вярно. цикъла се излиза, когато условието стане равно на 0 (невярно). Алгоритъма продължава със следващия оператор в програмата.
Двата цикъла си приличат по това, че броя на повторенията е предварително неизвестен. Изход от цикъла не е гарантиран по синтаксис, той е грижа на програмиста. Като разлика може да се посочи това, че при while е възможно тялото му да не се изпълни нито веднъж (когато условието не е вярно преди първата итерация), докато при do – while  задължително има една итерация преди проверката за край.

Цикъл for

Синтаксис:     for  (израз1 ; израз2; израз3)  оператор;
израз1 е оператор, който се изпълнява еднократно в началото на цикъла. израз2 (условен израз) се използва за проверка за край на цикъла. Той се изчислява в началото на всяка итерация. Ако стойността му е равна на 0, изпълнението на цикъла се прекратява. Ако е различна от 0, се изпълнява тялото на цикъла – оператор, а след това и израз3. Някои от тези компоненти могат да бъдат празни.
Когато  цикъл се съдържа в тялото на друг цикъл казваме, че той е вложен цикъл. В този случай алгоритъма се изпълнява като за една итерация на външния цикъл, вложения цикъл изпълнява всичките си итерации.
В много случаи има повече от една ситуация, когато един цикъл трябва да завърши. Може да се използва изчисляване на сложно условие и въвеждане на логически променливи.

Спомагателни оператори

Оператор break предизвиква прекъсване изпълнението на цикъла и предаване на управлението на оператора, следващ цикъла. При вложени цикли break прекъсва изпълнението само на цикъла, в чието тяло се намира ( е записан).
Оператор сontinue, включен в тялото на цикъл предизвиква начало на нова итерация, без да бъдат изпълнени операторите от тялото на цикъла, разположени след него.
Оператор goto предизвиква безусловен преход на определено място в програмата, маркирано чрез етикет.

Няма подобни статии.

  1. Няма все още коментари в тази публикация в Ипотпал БГ.

  1. No trackbacks yet.

Трябва да сте регистрирани потребители в ipotpalbg.com, за да пишете коментари. Вход.