C, PHP, VB, .NET

Дневникът на Филип Петров


Категория ‘С/С++’

* Класове Памет, Разделно Компилиране

Публикувано на 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. Прочети още…

.