- •Введение
- •Тема 1.1.Лексические основы языка программирования Общие сведения о программах, лексемах и алфавите
- •Тема 1.2.Концепция типа данных Понятие переменной
- •Основные типы данных
- •Указатели
- •Перечисления (перечислимый тип)
- •Массивы
- •Тема 1.3.Основные управляющие структуры программирования Понятие алгоритма
- •Свойства алгоритма:
- •С помощью языка программирования. Управляющие структуры и основные конструкции языков программирования
- •Тема 1.4.Основы модульного программирования
- •Подпрограммы
- •Рекурсивные функции
- •Раздел 2.Технология создания программ Тема 2.1.Интегрированная среда программирования
- •Трансляторы
- •Тема 2.2.Жизненный цикл программного обеспечения (Этапы подготовки и решения задач на эвм)
- •Анализ требований (постановка задачи, обследование)
- •Определение спецификаций
- •Кодирование
- •Тестирование, отладка и оптимизация
- •Внедрение и сопровождение
- •Раздел 3.Основные парадигмы программирования Тема 3.1.Генезис языков программирования.
- •Основные вехи в истории развития языков программирования
- •Классификация языков программирования
- •Уровни языков программирования
- •Поколения языков программирования
- •Тема 3.2.Основные парадигмы (технологии) программирования
- •Структурное программирование
- •Функциональное программирование
- •Логическое программирование
- •Объектно-ориентированное программирование (ооп)
- •Основные свойства ооп
- •Структуры (записи)
- •Объединения (запись с вариантами)
- •Как массив символов
- •Как указатель на строковую константу
Рекурсивные функции
Рекурсивные функции делят на собственно рекурсивные и косвенно рекурсивные. Функция называется косвенно рекурсивной в том случае, если она содержит обращение к другой функции, содержащий вызов данной функции. Если же в теле функции имеется вызов самой этой функции, то речь идет о прямой рекурсии, а такую функцию называет рекурсивной. Рекурсивные алгоритмы эффективны в тех задачах, где рекурсия используется в определении данных. Если у задачи есть очевидное итерационное решение, то рекурсии следует избегать. Поэтому серьезное изучение рекурсивных методов нужно проводить, вводя динамические структуры данных. Классический пример
long factorial (int k)
{
if (k<0) return 0;
if (k==0) return 1;
return k*factorial(k-1);
}
При наличии прототипов вызываемые функции не обязаны размещаться в одном файле с взывающей функцией и могут оформляться в виде отдельных модулей, либо могут находиться уже в оттранслированном виде в библиотеке объектных модулей. Прототипы функций и описания внешних объектов помещают в отдельный заголовочный файл, который препроцессорной командой
# include “имя файла”
включают в начало каждого из модулей программы.
Раздел 2.Технология создания программ Тема 2.1.Интегрированная среда программирования
В общем случае для создания программ на выбранном языке программирования нужно иметь следующие компоненты.
1. Текстовый редактор. Сформатированный в любом текстовом редакторе текст называется исходным текстом программы. Лучше использовать специализированные редакторы, которые ориентированы на конкретный язык программирования и позволяют в процессе вода текста выделять ключевые слова и идентификаторы разными цветами и шрифтами. Подобные редакторы созданы для всех популярных языков программирования и дополнительно могут проверять правильность синтаксиса программы непосредственно во время ее ввода.
2. Транслятор. Это программа, которая переводит исходный текcт программы в машинный код, осуществляя синтаксический разбор текста. На этом этапе уже возможно получение готовой программы, но чаще всего в ней не хватает некоторых компонентов, поэтому транслятор обычно выдает промежуточный объектный код (двоичный файл со стандартным расширением .OBJ). Если же в исходном тексте программы обнаружены ошибки, то результирующий файл не создается, а выдается сообщение об ошибках.
3. Редактор связей (компоновщик, сборщик, линковщик). Если текст программы состоит из нескольких модулей, то каждый их них транслируется в отдельный файл с объектным кодом, которые затем необходимо объединить в единое целое. Кроме того, к ним нужно добавить код подпрограмм, реализующих различные стандартные функции, которые содержатся в библиотеках, поставляемых вместе со стандартным транслятором. Сгенерированный код модулей и подключенные к нему стандартные функции нужно не просто объединить в одно целое, а выполнить такое объединение с учетом требований операционной системы, то есть получить на выходе программу, отвечающую определенному формату. Это задача редактора связей. На выходе редактор связей формирует исполняемый код для конкретной программы. Если один из объектный модулей или библиотека не обнаружены, то редактор связей выдает сообщение об ошибке. Как правило, итоговый файл имеет расширение .EXE или .COM.
Интегрированная система программирования – это программная система, содержащая транслятор, редактор связей, и библиотеки функций. В нее также обычно входит специализированный текстовый редактор и отладчик, который позволяет анализировать работу программы во время ее выполнения. При помощи отладчика можно выполнять отдельные блоки операторов пошагово, наблюдая, как меняются при этом переменные.
В интегрированной среде программирования этапы создания программы автоматизированы - после того, как исходный текст введен, его трансляция и сборка выполняются одним нажатием клавиши. Процесс трансляции обычно демонстрируется на экране: показывается, сколько исходных строк текста оттранслировано или выдается сообщение об ошибках.