
- •Министерство образования Республики Беларусь
- •1. Что такое программа на языке программирования
- •2. Общее знакомство с языком с
- •3. Структура простой программы на языке с
- •4. Что такое программа на языке с
- •5. Представление информации и типы данных в языке с
- •6. Константы
- •7. Переменные
- •8. Элементарный вВод и вывод информации
- •9. Выражения и операции
- •9.1. Арифметические операции
- •9.2. Операция изменения знака
- •9.3. Операции инкремента и декремента
- •9.4. Операция присваивания
- •9.6. Поразрядные логические операции
- •9.8. Логические операции и операции отношения
- •9.9. Условная операция «? :»
- •9.10. Операция последовательного вычисления
- •9.11. Операция определения требуемой памяти в байтах sizeof
- •9.12. Операция приведения типа (type)
- •10. Операторы управления вычислительным процессом
- •10.1. Операторы ветвления if и else
- •10.2. Оператор switch
- •10.3. Оператор цикла while
- •10.4. Оператор цикла do…while
- •10.5. Оператор цикла for
- •10.6. Бесконечные циклы
- •10.7. Другие управляющие средства языка с
- •10.8. Стандартные математические функции
- •11. Вычисление выражений и побочные эффекты
- •11.1. Преобразования типов при вычислении выражений
- •11.2. Побочные эффекты при вычислении выражений
- •12. Массивы
- •12.1. Описание массива
- •12.2. Инициализация массива
- •12.3. Ввод-вывод массива
- •12.4. Двумерные массивы (массивы массивов)
- •13. Указатели
- •14. Адресная арифметика
- •15. Массивы и указатели
- •15.1. Указатели и одномерные массивы
- •15.2. Указатели и двумерные массивы
- •16. Строки
- •17. Массивы строк
- •18. Функции
- •18.1. Определение функции в языке с
- •18.2. Возвращение значений из функции
- •18.3. Формальные и фактические параметры функции
- •18.4. Вызов функции
- •18.5. Объявление и определение функции: прототип функции
- •19. Передача параметров в функции
- •19.1. Способы передачи параметров в функции
- •19.2. Передача параметров в функции в языке с
- •19.3. Передача указателей в функции
- •20. Классы хранения и видимость переменных
- •20.1. Общие положения
- •20.2. Спецификаторы класса памяти
- •20.3. Область видимости функций
- •20.4. Глобальные переменные
- •20.5. Глобальные статические переменные
- •20.6. Локальные переменные
- •20.7. Статические локальные переменные
- •20.8. Регистровые переменные
- •20.9. Выводы
- •21. Организация памяти программы
- •22. Многофайловая компиляция (проекты)
- •23. Передача в функции массивОв
- •23.1. Передача одномерных массивов в функции
- •23.2. Передача двумерных массивов в функции
- •23.3. Передача в функции символьных строк
- •23.4. Возвращение указателей из функций
- •24. Функции с переменным количеством аргументов
- •24.1. Соглашения о вызовах: модификаторы функций
- •24.2. Объявление списка параметров переменной длины
- •25. Передача параметров в функцию main()
- •26. Указатели на функцию
- •27. Стандартные функцИи языка с
- •27.1. Функции для работы со строками
- •27.2. Функции для проверки символов и преобразования данных
- •27.3. Функция быстрой сортировки – gsort()
- •27.4. Функция двоичного поиска – bsearch()
- •28. Работа с файлами
- •28.1. Основные понятия
- •28.2. Основные функции для работы с файлами
- •28.3. Открытие и закрытие файлов
- •28.4. Ввод/вывод символов
- •28.5. Ввод/вывод строк
- •28.6. Форматированный ввод/вывод
- •28.7. Ввод/вывод блоков данных
- •28.8. Другие средства для работы с файлами
- •28.9. Ввод/вывод низкого уровня (префиксный доступ к файлам)
- •29. Типы, определяемые пользователем: Перечисления, структуры и объединения
- •29.1. Переименование типов – оператор typedef
- •29.2. Перечисления (enum)
- •29.3. Основные сведения о структурах
- •29.4. Структурные переменные в памяти компьютера
- •29.5. Доступ к полям структуры
- •29.6. Массивы структур
- •29.7. Структуры и функции
- •29.8. Объединения (union)
- •30. Динамическая память
- •30.1. Понятие динамического объекта
- •30.2 Создание и уничтожение динамических объектов
- •30.3 Динамическое размещение одномерных массивов и строк
- •30.4 Динамическое размещение двумерных массивов
- •30.5. Функции для работы с блоками памяти
- •31. Динамические структуры данных
- •31.1. Понятие структуры данных
- •31.2. Структуры, ссылающиеся на себя
- •31.3. Связанные списки
- •31.5. Очереди
- •Ниже приводятся примеры функций для очереди (структура элемента очереди совпадает со структурой элемента стека в примере выше):
- •32. Препроцессор языка с
- •32.1 Директива включения файлов
- •32.2. Директива определения макрокоманд (макросов)
- •32.3 Директива условной компиляции
- •32.4 Дополнительные директивы препроцессора
Министерство образования Республики Беларусь
Учреждение образования
«Гомельский государственный университет
имени Франциска Скорины»
Математический факультет
Кафедра математических проблем управления
Л.И. Короткевич
ПРОГРАММИРОВАНИЕ
Тексты лекций для студентов 1 курса (2 семестр) специальности 1-31 03 03-01 «Прикладная математика (научно-производственная деятельность)»
2011
СОДЕРЖАНИЕ
1. ЧТО ТАКОЕ ПРОГРАММА НА ЯЗЫКЕ ПРОГРАММИРОВАНИЯ 5
2. ОБЩЕЕ ЗНАКОМСТВО С ЯЗЫКОМ С 5
3. Структура простой программы на языке с 6
4. ЧТО ТАКОЕ ПРОГРАММА на языке с 10
5. Представление информации И ТИПЫ ДАННЫХ в языке С 12
6. КОНСТАНТЫ 19
7. переменные 21
8. элементарный вВод и вывод информации 22
9. выражения и операции 30
9.1. Арифметические операции 31
9.2. Операция изменения знака 32
9.3. Операции инкремента и декремента 32
9.4. Операция присваивания 33
9.5. Арифметические операции с присваиванием: +=, -=, *=, /=, %= 33
9.6. Поразрядные логические операции 33
9.7. Операции сдвига: >> и << 35
9.8. Логические операции и операции отношения 35
9.9. Условная операция «? :» 36
9.10. Операция последовательного вычисления 37
9.11. Операция определения требуемой памяти в байтах sizeof 37
9.12. Операция приведения типа (type) 37
10. операторы управления вычислительным процессом 38
10.1. Операторы ветвления if и else 39
10.2. Оператор switch 41
10.3. Оператор цикла while 42
10.4. Оператор цикла do…while 46
10.5. Оператор цикла for 47
10.6. Бесконечные циклы 49
10.7. Другие управляющие средства языка С 50
10.8. Стандартные математические функции 53
11. вычисление выражений и побочные эффекты 53
11.1. Преобразования типов при вычислении выражений 53
11.2. Побочные эффекты при вычислении выражений 55
12. массивы 58
12.1. Описание массива 58
12.2. Инициализация массива 59
12.3. Ввод-вывод массива 59
12.4. Двумерные массивы (массивы массивов) 61
13. указатели 63
14. адресная арифметика 74
15. массивы и указатели 77
15.1. Указатели и одномерные массивы 78
15.2. Указатели и двумерные массивы 81
16. строки 85
17. МАССИВЫ строк 95
18. функции 98
18.1. Определение функции в языке С 98
18.2. Возвращение значений из функции 99
18.3. Формальные и фактические параметры функции 101
18.4. Вызов функции 102
18.5. Объявление и определение функции: прототип функции 103
19. ПЕРЕДАЧА ПАРАМЕТРОВ В ФУНКЦИИ 105
19.1. Способы передачи параметров в функции 105
19.2. Передача параметров в функции в языке С 105
19.3. Передача указателей в функции 106
20. КЛАССЫ ХРАНЕНИЯ И видимость ПЕРЕМЕННЫХ 108
20.1. Общие положения 108
20.2. Спецификаторы класса памяти 109
20.3. Область видимости функций 109
20.4. Глобальные переменные 110
20.5. Глобальные статические переменные 112
20.6. Локальные переменные 112
20.7. Статические локальные переменные 115
20.8. Регистровые переменные 117
20.9. Выводы 117
21. ОРГАНИЗАЦИЯ ПАМЯТИ ПРОГРАММЫ 118
22. МНОГОФАЙЛОВАЯ КОМПИЛЯЦИЯ (ПРОЕКТЫ) 121
23. ПЕРЕДАЧА В ФУНКЦИИ МАССИВОв 123
23.1. Передача одномерных массивов в функции 123
23.2. Передача двумерных массивов в функции 127
23.3. Передача в функции символьных строк 129
23.4. Возвращение указателей из функций 130
24. ФУНКЦИИ С ПЕРЕМЕННЫМ КОЛИЧЕСТВОМ АРГУМЕНТОВ 131
24.1. Соглашения о вызовах: модификаторы функций 131
24.2. Объявление списка параметров переменной длины 134
25. ПЕРЕДАЧА ПАРАМЕТРОВ В ФУНКЦИЮ MAIN() 136
26. УКАЗАТЕЛИ НА ФУНКЦИЮ 139
27. стандартные ФУНКЦИи языка с 142
27.1. Функции для работы со строками 142
27.2. Функции для проверки символов и преобразования данных 148
27.3. Функция быстрой сортировки – gsort() 149
27.4. Функция двоичного поиска – bsearch() 152
28. работа с файлами 154
28.1. Основные понятия 154
28.2. Основные функции для работы с файлами 156
28.3. Открытие и закрытие файлов 156
28.4. Ввод/вывод символов 158
28.5. Ввод/вывод строк 159
28.6. Форматированный ввод/вывод 160
28.7. Ввод/вывод блоков данных 162
28.8. Другие средства для работы с файлами 164
28.9. Ввод/вывод низкого уровня (префиксный доступ к файлам) 167
29. типы, определяемые пользователем: Перечисления, структуры и объединения 168
29.1. Переименование типов – оператор typedef 168
29.2. Перечисления (enum) 169
29.3. Основные сведения о структурах 170
29.4. Структурные переменные в памяти компьютера 173
29.5. Доступ к полям структуры 174
29.6. Массивы структур 175
29.7. Структуры и функции 178
29.8. Объединения (union) 179
30. Динамическая память 181
30.1. Понятие динамического объекта 181
30.2 Создание и уничтожение динамических объектов 182
30.3 Динамическое размещение одномерных массивов и строк 185
30.4 Динамическое размещение двумерных массивов 187
30.5. Функции для работы с блоками памяти 189
31. ДИНАМИЧЕСКИЕ структуры данных 191
31.1. Понятие структуры данных 191
31.2. Структуры, ссылающиеся на себя 191
31.3. Связанные списки 192
31.4. Стеки 201
31.5. Очереди 203
32. препроцессор языка с 205
32.1 Директива включения файлов 205
32.2. Директива определения макрокоманд (макросов) 206
32.3 Директива условной компиляции 209
32.4 Дополнительные директивы препроцессора 211
«...НАУЧИТЬ НЕВОЗМОЖНО... можно только [помочь] НАУЧИТЬСЯ!»
«Программистом можно назвать только того,
кто умеет устранять ошибки, ведь написать
неработающую программу может каждый!»