Лекции по увод в програмирането



страница7/16
Дата25.07.2016
Размер0.96 Mb.
#5224
ТипЛекции
1   2   3   4   5   6   7   8   9   10   ...   16

29 октомври

9. Преобразуване на тип.


Синтаксис на операция: операнд1 операция операнд2

Преди изпълнението на почти всички операции се извършва уеднаквяване на типовете на операндите, които участват в операцията; уеднаквяването става към по-старшия от двата операнда; един операнд е по-старши, ако се представя с повече байтове или в случай на равенство, който може да приема по-големи стойности; числовите типове сортирани по приоритета в уеднаквяването:


  1. long double – 10 байта;

  2. double – 8 байта;

  3. float – 4 байта;

  4. unsigned long int – 4 байта;

  5. long int – 4 байта;

  6. unsigned int – 2 байта;

  7. signed int – 2 байта;

  8. unsigned char – 1 байт;

  9. signed char – 1 байт;

Особеност – char винаги се преобразува към int;



  1. Преобразуване на int в int – без увеличение на паметта (от signed в unsigned); променя се интерпретацията, а не самите байтове; тъй като става въпрос за допълнителен код, трябва да се внимава, защото ако едно отрицателно число го третираме като число без знак, то не приема стойността на абсолютната му стойност (например –1 преобразувано към unsigned int връща 32765, тъй като в допълнителен код се представя само с единици);

  2. Преход от int към long int – добавят се два старши байта; в тези два байта се размножава знаковият бит (1 ако е signed, 0 ако е unsigned); при този преход се запазва стойността на операнда;

  3. От int към float, double – преобразуването запазва стойността;

  4. От long int към int – отрязват се двата старши байта;

  5. Между типовете float, double преобразуването е със запазване на стойността;

  6. От тип с плаваща точка към целочислен тип – дробната част се отрязва

Преобразуването към по-младши тип може да се случи в операцията за присвояване, където типа на израза задължително се преобразува към типа на променливата;
11. Оператори за цикъл while и do while.
Чрез оператор за цикъл се описва последователно изпълнение на един или няколко оператора; тези оператори се наричат тяло на цикъла.
Синтаксис на while:
while (израз)

оператор

Блок-схема:

Край


Начало

false

true

Израз

Оператор

Синтаксис на do while:


do

оператор


while (израз);


Оператор

Блок-схема:

Израз


Край

Начало

false

true


Принципна разлика – в това кога се прави проверка дали да се прекъсне цикъла (при while преди да се изпълни тялото на цикъла, при do while след това); следствие – възможно е при while тялото да не се изпълни нито веднъж, докато при do while то се изпълнява поне веднъж;
Особености: променливите, които се променят в цикъла трябва да се инициализират преди това; поне една променлива, която участва в израза трябва да се променя в тялото на цикъла, в противен случай рискуваме да получим зацикляне;
Пример за зацикляне:

int x, a;

x = 15;

while (x < 25)



a = 2*x;
Задача: От клавиатурата се въвежда текст, който завършва със ‘ *’; да се определи колко пъти даден символ се среща в текста;
#include

void main ()

{ int i, symbol, r;

printf (“ Въведете символа: “);

symbol = getchar();

r = getchar(); //премахване на Enter от буфера на getchar

printf (“ Въведете текста: “);

i = 0;


while ( ( r = getchar() ) != ‘ *’ )

if (r = symbol) i++;

printf ( “ Честотата на символа в текста = %d\n”, i);

}
Пример:

int i;

float x;


i = 1;

x = 0.005;

while (x != 0.995)

{ printf ( “i = %d, x=%f\n”, i, x);

i++; x+ = 0.01;

}
Този фрагмент води до безкрайно зацикляне, въпреки че то не е явно; строго математически цикълът би трябвало да завърши, защото след 99 итерации на тялото на цикъла x приема стойност 0.995; проблемът е в грешките при закръглянето на числата с плаваща запетая; поради тази причина x никога не приема стойност точно 0.995, а някое друго число съвсем близко до него; ако сменим израза на цикъла while с x<=0.995, тогава цикълът със сигурност ще приключи;






Сподели с приятели:
1   2   3   4   5   6   7   8   9   10   ...   16




©obuch.info 2024
отнасят до администрацията

    Начална страница