- •Министерство образования Республики Беларусь
- •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. Что такое программа на языке программирования
Программу можно представить как набор последовательных команд (алгоритм) для определенного исполнителя, который должен их выполнить для достижения той или иной цели. Например, условно запрограммировать можно человека, если составить ему инструкцию «как сварить суп», и он примется ее исполнять. Очевидно, что инструкция будет на естественном языке (русском, английском или др.). Программисты программируют не людей, а вычислительные машины. Трудность заключается в том, что такие машины не в состоянии понять наш язык. Для «инструктирования» вычислительных машин разработаны и разрабатываются специальные языки, называемые языками программирования.
Любую программу выполняет центральный процессор. Для того, чтобы процессор мог программу выполнить, она должна быть загружена в оперативную память. Т.е. и код программы и ее данные при выполнении программы процессором находятся в оперативной памяти.
Что такое память? По сути, это ряд пронумерованных ячеек. Номер ячейки является адресом этой ячейки памяти. Ячейки памяти реального компьютера – это набор из нескольких переключателей, каждый из которых находится в одном из двух состояний: включено (его обозначают 1) или выключено (его обозначают 0). В ячейке памяти таких переключателей, как правило, 8. Каждый переключатель называют битом и говорят, что в ячейке 8 бит или 1 байт. Т.е. одна ячейка памяти является байтом. Содержимое любой ячейки памяти выглядит всегда как последовательность нулей и единиц, независимо от того, что в них находится: число, символ или адрес другой ячейки памяти.
Процессор может выполнять программу, написанную только на машинном языке. Машинный язык – это «язык процессора». Программа на машинном языке состоит из машинных команд, записанных в двоичном коде (с помощью 0 и 1). Каждая машинная команда имеет две составляющие: код операции и адресную часть. Код операции определяет, какую команду должен исполнить процессор (элементарное действие, которое может выполнить процессор, например, «переслать байт из одного места в памяти в другое»). Адресная часть указывает, где в памяти компьютера хранятся операнды и куда поместить результат выполнения операции.
2. Общее знакомство с языком с
Язык C (Си) является языком программирования высокого уровня общего назначения, который в то же время позволяет сделать многое из того, что свойственно языкам низкого уровня (ассемблерам). Был разработан в начале 70-х годов Кеном Томпсоном и Денисом Ритчи, сотрудниками компании Bell Labs. Язык С изначально был создан для программирования под операционную систему UNIX. Задумывался как альтернатива ассемблеру для написания системных программ. Сама ОС UNIX написана на С. В последствии был перенесён на множество других операционных систем и стал одним из самых популярных языков программирования.
Язык С имеет массу достоинств. В первую очередь, С ценится за эффективность. Элементы языка С (массивы, функции, указатели) максимально приближены к архитектуре компьютеров. Язык С позволяет программисту полностью контролировать компьютер средствами самого же языка. Изначально язык С был придуман, чтобы заменить ассемблер в написании операционных систем. В настоящее время большинство ОС написано на С. Но применение языка С не ограничивается только написанием операционных систем. Язык С удобен для написания очень и очень многих программ (не web-приложений).
Также язык С широко используется для подготовки специалистов, хотя изначально разрабатывался не для новичков, как тот же Паскаль. Многие языки взяли за основу синтаксис языка С. Язык С не только важен сам по себе, но и открывает дорогу к другим современным и очень популярным языкам, таким как C++, Java, C#, Perl, JavaScript и т.п.
Среды разработки для языка С: в настоящее время используется несколько интегрированных сред разработки программ на языке С. В среде профессиональных разработок наибольшей популярностью пользуются различные версии Visual C++ фирмы Microsoft. В учебных организациях предпочитают продукцию фирмы Borland: Borland C++ и Borland C++ Builder. Эти системы более просты в освоении. Это наиболее часто используемы среды – но есть и другие платные и бесплатные среды, а также компиляторы (например, Dev-C++).