Ако искате да станете истински софтуерен инженер, не може да не минете през школата на С. Езикът С е прост, лаконичен, широкообхватен и най-важното – изключително ефективен. Той лежи в основата на голямото семейство на С-езиците, към което принадлежат С++, С#, PHP, JAVA и др.
Тази книга е за тези, които биха искали не само да се научат да програмират на С, но биха искали да започнат своето развитие като програмисти, стъпвайки на солидни основи от фундаментални знания за програмирането.
Най-добре и най-лесно програмиране се учи с примери. Може дълго да разсъждаваме върху принципите, концепциите и подходите при съставянето на програми, но ако всичко това не е подкрепено с практически навици, резултатите няма да бъдат задоволителни. Материалът в книгата е подбран и съставен като е взето предвид именно това обстоятелство.
Ето защо в началото на всяка глава се разглеждат съответните теоретични основи, след които се представят примери, свързани с обсъждания аспект на проблема. В края на главата ще намерите примерни решения на конкретни задачи, както и резюме, чиято цел е да помогне на читателя да затвърди разгледания материал. Пак там са поместени и задачи за самостоятелна работа, предполагащи написването на програмен код. Условията на задачите са аналогични на представените в съответната глава и в много отношения са техни вариации.
Така ще усвоите работата с променливи, типове данни, указатели, оператори, видове масиви, изброявания, битови полета и файловия вход/изход. Особено внимание е отделено на управляващите инструкции, структурите и обединенията, динамичното заделяне на памет и работата с функции.
Съдържание
Езикът С и процедурното програмиране
Езици и стандарти…9
Парадигми на програмирането…13
Структура и концепция на книгата…16
Компилатори и среди за разработка…19
Компилатори…19
Среда за разработка Dev-C++…21
Среда за разработка Code::Blocks…27
Среда за разработка NetBeans…32
Компилация от команден ред…46
Обратна връзка…51
За автора…52
Глава 1. Запознаване с езика С
Първа програма…54
Принципи на създаване на програма…54
Код на първата програма…58
Използване на променливи и на базови типове данни…61
Основни типове данни…61
Използване на променливи…67
Модификатори на типове…73
Литерали…74
Управляващи символни инструкции…78
Запознаване с указатели…79
Указатели и променливи…79
Деклариране на указател…80
Използване на указатели…82
Оператори…85
Аритметични оператори…85
Оператори за сравнение…88
Логически оператори…89
Побитови оператори…93
Тернарен оператор…97
Особености на оператора за присвояване…97
Съкратени форми на оператора за присвояване…98
Запознаване с условните оператори…99
Стандартна форма на условния оператор…99
Опростена форма на условния оператор…102
Използване на тернарен оператор…104
Запознаване с оператори за цикъл…106
Оператор за цикъл while…106
Оператор за цикъл do-while…110
Оператор за цикъл for…112
Запознаване с функции…117
Дефиниране на функция…117
Използване на функции…119
Създаване на макрос…122
Запознаване с масиви…126
Числов масив…126
Символен масив и реализация на текст…129
Конзолен вход и изход…134
Вход и изход на символи…134
Вход и изход на низове…135
Форматиран вход и изход на данни…135
Примерни решения на задачи…143
Енергия на електрон…143
Степени на двойката…146
Изчисляване на корен от комплексно число…147
Изчисляване на дохода от паричен депозит…151
Изчисляване на дължина на текст…153
Скорост на електрона при фотоефект…154
Изчисляване на косинус…157
Битов състав на число…162
Резюме…166
Задачи за самостоятелна работа…168
Глава 2. Управляващи инструкции
Условен оператор if…171
Схема за изпълнение на условния оператор…171
Проверяемо условие…174
Вложени условни оператори…176
Използване на условен оператор…178
Оператор за избор…191
Дефиниране на оператор за избор…191
Използване на оператор за избор…194
Прилики и разлики между условния оператор и оператора за избор…199
Оператори за цикъл while и do-while…207
Оператор за цикъл while…207
Особености и използване на оператор while…209
Оператор за цикъл do-while…219
Оператор за цикъл for…224
Дефиниране на оператор за цикъл for…224
Използване на оператор за цикъл for…226
Инструкция за безусловен преход goto…234
Примерни решения на задачи…237
Решаване на квадратно уравнение…237
Решаване на квадратно уравнение в множеството на комплексните числа…240
Решаване на алгебрично уравнение по метода на допирателните…243
Решаване на алгебрично уравнение по метода на хордите…247
Резюме…252
Задачи за самостоятелна работа…254
Глава 3. Масиви, указатели и динамично заделяне на паметта
Указатели…258
Адресация на паметта…258
Указател като променлива…260
Деклариране на указател…261
Операции с указатели и адресна аритметика…263
Използване на адреси и указатели…265
Указатели с общо предназначение…275
Многоравнищна адресация…282
Динамично заделяне на памет…286
Заделяне и освобождаване на памет…286
Използване на динамично заделяне на памет…288
Едномерни масиви…295
Създаване на статичен едномерен масив…297
Инициализация на масив…302
Масиви и указатели…303
Създаване на масив с променлива дължина…306
Създаване на динамичен масив…308
Двумерни масиви…311
Статични двумерни масиви…311
Инициализация на двумерен масив…313
Двумерен масив с променлива дължина…315
Двумерен динамичен масив…317
Символни масиви…321
Едномерни символни масиви…321
Функции за работа с текст…325
Двумерни символни масиви…328
Разни операции с масиви…330
Триъгълен масив…330
Масив с редове с променлива дължина…332
Указател към масив…334
Използване на анонимни масиви…340
Примерни решения на задачи…346
Сортиране на масив по метода на мехурчето…346
Събиране по „колонки“…348
Обединение на числови множества…351
Произведение на полиноми…354
Създаване на квадратна матрица с единици по двата диагонала…357
Завъртане на матрица…358
Изтриване на стълб от матрица…360
Умножение на матрици…362
Записване на текст в обратен ред…364
Резюме…366
Задачи за самостоятелна работа…368
Глава 4. Функции
Създаване на функция…372
Прототип на функция…372
Локални и глобални променливи…374
Статични локални променливи…378
Аргументи на функция…382
Механизъм за предаване на аргументи…382
Предаване на указател като аргумент…385
Предаване на едномерен масив като аргумент…388
Предаване на двумерен масив като аргумент…394
Предаване като аргумент на текст…402
Резултат от функция…405
Механизъм и особености на връщането на резултат от функция…405
Указател като резултат от функция…407
Динамичен масив като резултат от функция…410
Указател към статична локална променлива като резултат от функция…415
Рекурсия…421
Указател към функция…426
Деклариране на указател към функция…426
Предаване на указател към функция като аргумент…433
Главна функция на програмата…442
Функция с променлив брой аргументи…449
Примерни решения на задачи…455
Реализация на полином…455
Интерполационен полином…457
Решение на уравнение по метода на допирателните…461
Решаване на диференциално уравнение…464
Матрична експонента…468
Детерминанта на матрица…475
Резюме…480
Задачи за самостоятелна работа…483
Глава 5. Структури и обединения
Запознаване със структури…488
Дефиниране на структура…488
Създаване на екземпляр на структура…489
Пример за използване на структура…491
Операции с екземпляри на структура…493
Инициализация на структура…493
Присвояване на структура…495
Структури и функции…498
Предаване на екземпляр на структура като аргумент на функция…498
Екземпляр на структура като резултат от функция…501
Структури и масиви…505
Масив от екземпляри на структура…505
Масив като поле на структура…509
Динамични масиви и структури…513
Структури и указатели…519
Указател към екземпляр на структура…519
Указател като поле на структура…521
Вложени структури…529
Екземпляр на структура като поле на структура…529
Дефиниране на структура в структура…532
Някои особени свойства на структурите…535
Структури с масиви с произволен размер…535
Анонимен екземпляр на структура…539
Анонимна структура…542
Обединения…544
Запознаване с обединения…544
Използване на обединения…549
Примерни решения на задачи…558
Указател към функция като поле на структура…558
Операции с вектори…560
Комплексна експонента…563
Изчисляване на производна на полином…567
Резюме…573
Задачи за самостоятелна работа…575
Глава 6. Заключителни бележки
Директиви на предпроцесора…578
Директива за макроопределение…578
Директива за включване на файлове и заглавия…585
Оператори на предпроцесора…588
Други директиви на предпроцесора…590
Оператор typedef…593
Изброявания…599
Битови полета…601
Файлов вход и изход…604
Общи принципи за работа с файлове…604
Четене и записване на символи…609
Четене и записване на текст от файл…612
Форматиран вход и изход във файл…617
Резюме…622