Категория ‘С/С++’
* Класове Памет, Разделно Компилиране
Публикувано на 24 октомври 2008 в раздел С/С++.
Класове Памет, Разделно Компилиране
Всяка променлива в С се характеризира с три атрибута:
1. Тип на променливата - определя стойностите, които променливата може да приема и съответно необходимото количество памет, което трябва да се задели
2. Област на действие - мястото в програмата, където тя е "видима", например разгледаните вече глобални променливи имат по-широка област на действие от локалните
3. Период на активност - част от времето за изпълнение на програмата, през което ще се съхранява последната текуща стойност Прочети още...
* Преобразуване на типове, размер на данни
Публикувано на 24 октомври 2008 в раздел С/С++.
I. Преобразуване на типове:
Гъвкавостта на езика С се подсилва от възможността за преобразуване на един тип данни в друг:
(тип) операнд
Пример:
double x = 15.5; // Следното ще доведе до: // warning C4244: 'initializing' : conversion from // 'double' to 'int', possible loss of data int y = x; // Когато укажем преобразуването явно този warning изчезва: int z = (int)x; Прочети още...
* Предпроцесор
Публикувано на 24 октомври 2008 в раздел С/С++.
Езикът за програмиране С има едно рядко срещано при езиците от високо ниво преимущество - възможност за управление на процеса на компилация. Предпроцесорът дава на програмиста следните допълнителни средства:
- Използуване на макроопределения
- Включване на първични файлове към програмата
- Условно компилиране Прочети още...
* Допълнителни задачи към упражнение №1
Публикувано на 14 октомври 2008 в раздел С/С++.
Задача 1. Компютърът си “намисля” едно число в даден интервал. От потребителят се изисква да “познае намисленото” число. За да бъде сходяща играта, всеки път се намалява интервала, в който трябва да се намира намисленото число (компютърът ще "казва" дали числото е по-голямо или по-малко от предположеното). Накрая се разпечатва оригинала и броя пъти, необходими за познаването му.
* Произволно число "randomNumber" в интервала [0, 100] може да зададете по следния начин:
srand( (unsigned) time (NULL) );
int randomNumber = (int) ( 101.0 * (double) rand() / ( (double) RAND_MAX+1.0) ); Прочети още...
* Указатели, Адресна аритметика
Публикувано на 11 октомври 2008 в раздел С/С++.
Всеки обект в езика (променлива, константа, масив, елемент на масив, структура, ...) се съхранява в определени клетки на паметта. Прието е да се казва, че тези клетки се намират на определен "адрес". Променлива, чиято стойност е адрес в паметта, се нарича указател. Стойността на указателя посочва местоположението на дадена променлива и позволява косвен достъп до стойността й. Прочети още...
* Структури
Публикувано на 11 октомври 2008 в раздел С/С++.
Като първа стъпка при структуриране на информация в дадена програма ние се стремим да групираме логически свързаните данни в едно цяло. Пример за такова групиране са масивите. При тях обаче има едно съществено ограничение: всички елементи трябва да са от един и същи тип. Когато се налага да групираме данни от различни типове можем да използваме специалния тип данни struct:
struct име { описание на първия елемент; ... описание на последния елемент; };
Променливите от тип struct могат да се изброят като списък след затварящата скоба на блока в дефиницията на структурата, или допълнително на произволно място в програмата. Прочети още...
* Функции, Глобални променливи
Публикувано на 11 октомври 2008 в раздел С/С++.
Функцията е основната програмна единица. Можем да разглеждаме функциите като логическа част от по-голяма програма. Този фрагмент може да се изпълнява многократно в различни части на програмата.
Функциите се дефинират по следият начин:
тип_на_функцията име(входни_параметри) { оператори; return резултат; }
Типа на връщания резултат трябва да съвпада с типа на самата функция. Когато няма нужда от връщане на резултат се използва тип на функцията void. Прочети още...
* Опрератор за цикъл for
Публикувано на 28 септември 2008 в раздел С/С++.
Това е най-сложният като синтаксис оператор:
for(<израз1>; <израз2>; <израз3>) { оператори; }
Тук изразите в условието на цикъла са следните:
- израз1 се нарича "начално условие" или "израз за инициализация. Изпълнява се само веднъж преди започването на цикъла.
- израз2 е "условие за проверка". Цикъла ще бъде изпълняван дотогава, докогато това условие връща резултат различен от нула.
- израз3 изменя текущите стойности на параметрите на цикъла. Прочети още...
* Цикли while и do-while
Публикувано на 25 септември 2008 в раздел С/С++.
Условните оператори за цикли позволяват многократното повторение на един или група от оператори, т.е да се организира цикъл. Пролжителността на цикъла се управлява от "условие за цикъл". Условието е доустим за езика израз. Когато условието даде резултат 0 цикъла се прекратява.
Цикъла while има следния синтаксис:
while(<условие>) { оператори; }
Операторът do-wile има анарлогичен синтаксис:
do { оператори; } while(<условие>); Прочети още...
* Условен оператор Switch
Публикувано на 25 септември 2008 в раздел С/С++.
Оператоът switch позволява разклонение на програмата (както беше в if-else), но към повече от два клона:
switch(<израз-тест>) { case израз1: оператори; break; case израз2: оператори; break; ... default: оператори; break; }
<израз-тест> е условие за преход и може да бъде допустим израз за С със стойност от тип int или char. Ако стойността на този израз съвпадне със стойността на някой от изразите след case:, то ще се изпълнят операторите след него до достигане на оператор break. Ако няма съвпадение ще се изпълнят операторите след default. Прочети още...