L – описание глобального массива строк Line, спецификатор extern указывает на то, что определение массива сделано в другом месте (в данном случае в файлеmain.cpp).
M – определение функции bblsort(). Функция вызывает функции сравнения – lexcmp() и обмена – swap() строк. Функция не описывается как static, потому что она вызывается функцией main(), которая определена в другом файле.
N – определение функции lexcmp(). Возвращаются значения Истина (1) или Ложь (0), кодируемые целыми значениями. Поэтому функция определена как имеющая тип int. Глобальная переменная Revflg описана как внешняя, так как она определена в другом файле. Прототип функция стандартной strcmp() содержится в заголовочном файле string.h.
O – определение функции swap(). Функция определена как имеющая тип void. Прототип стандартной функция strcpy() содержится в заголовочном файле string.h. Локальная переменная стокового типа temp предназначена для временного хранения строки при выполнении обмена.
Результат выполнения программы в средеMicrosoft Visual С++ 2005в режиме консольных приложений:
При аргументе ”+” | При аргументе ”-”: |
qwertyui wertyuio ertyuio rtyuiop rtyu tyui asdfghjk sdfghjkl dfgh fghj ---------------------- asdfghjk dfgh ertyuio fghj qwertyui rtyu rtyuiop sdfghjkl tyui wertyuio | qwertyui wertyuio ertyuio rtyuiop rtyu tyui asdfghjk sdfghjkl dfgh fghj ---------------------- wertyuio tyui sdfghjkl rtyuiop rtyu qwertyui fghj ertyuio dfgh asdfghjk |
В результате изучения материала лекции необходимо знать
· содержание понятий:
o программирование
o язык программирования
o компоненты языка программирования
o программа
o алгоритм
o данные
o структура данных
o структурная схема компьютерной программы
o жизненный цикл программного средства
o технология подготовки и решения задачи на компьютере
o заголовок функции
o тип функции
o тело функции
o прототип функции
o объявление функции
o сигнатура функции
o определение функции
o блок, составной оператор
o вызов функции, запоминание результатов вызова
o представление программы
o представление данных
o процессы трансляции программы (интерпретация, компиляция)
o классическая схема подготовки исполняемой программы
o препроцессор
o объектный модуль
o компоновщик, загрузчик
o технологический цикл обработки программы
o лексема
o синтаксис языка программирования
o семантика языка программирования
o лексический анализ программы
o синтаксический анализ программы
o семантический анализ программы
· Структуру текстового файла программы
· Структуру программы из двух файлов
Дополнительно* (на оценку выше 5 баллов):
· особенности внутреннего представления программы и ее исполнения
o организацию памяти компьютера
o сегментацию программы
o процесс исполнения программного кода
· структуру программы сортировки строк
[1] Язык программирования C++ был разработан Бьерном Страуструпом, сотрудником AT&T Bell Laboratories. Непосредственным предшественником C++ является С with Classes, созданный тем же автором в 1980 году. Язык С with Classes, в свою очередь, был создан под сильным влиянием С и Simula. В 1998 г. вышел международный стандарт языка ISO/IEC 14882. С 2003г.действует вторая редакция этого стандарта ISO/IEC/ANSI/ITI. Стандарты языков программирования разрабатываются для того, чтобы компиляция одной и той же программы различными компиляторами давала одинаковый результат. Существует ряд организаций, целенаправленно занимающихся вопросами стандартизации. Это Американский национальный институт стандартов ANSI (American National Standards Institute), Институт инженеров по электротехнике и электронике IEEE (Institute of Electrical and Electronic Engineers), Организация международных стандартов ISO (International Organization for Standardization).
В процессе развития языка некоторые его конструкции и функции устаревают. Однако с целью обратной совместимости новые версии должны поддерживать и все устаревающие возможности. Это ведет к «разбуханию» компиляторов. В последнее время в реализациях введено понятие нерекомендуемой и устаревшей возможности. В первом случае следующий стандарт еще будет поддерживать нерекомендуемую возможность, но может перевести ее в категорию устаревшей. Во втором случае стандарт может исключить поддержку возможности, объявленной ранее как устаревшая. Введение нерекомендуемых и устаревших возможностей предоставляет разработчикам временной интервал, в течение которого они могут модифицировать код в соответствии с новыми требованиями стандарта.
[2] «программирование с использованием типов в качестве параметров» ( Б.Страуструп)
[3] Под представлением данных понимается их описание на языке программирования в виде констант и переменных разной структуры.
1 #– знак номера (произносим «sharp»); #include произносим sharp инклуд;
[5] Оператор return явно может и не использоваться (стандарт С++ предусматривает, что функция main()по умолчанию возвращает 0).
[6]Префикс std:: – это указание на обращение к имени из этого стандартного пространства имен. Имена, используемые в стандартной библиотеке С++ (такие, как cout), объявлены в пространстве имен std и невидимы в нашей программе до тех пор, пока мы явно не сделаем их видимыми. Обозначения заголовочных файлов программ до введения стандарта языка имели расширение “.h”, а имена объектов библиотек и программы помещались в единственное глобальное пространство имен и никакого префикса при обращении к ним не требовалось. Стандарт языка С++ поместил имена из стандартной библиотеки классов и функций в пространство имен std,отделив их тем самым от глобального пространства имен.
[7]манипулятор std::endl равносиленesc-последовательностиn и означает «конец строки», т.е перевод курсора в начало новой строки консольного окна экрана; endl – произносим «энд эл».
[8] Для упрощения обращения к библиотечным именам в современных компиляторах используется директива using namespace std;, позволяющая обращаться к именам без префиксаstd::. Для старых компиляторов вторая и третья строки этой программы заменяются на одну строку #include <iostream.h> . Разработчики современных компиляторов встраивают в них возможность применения в программах старых заголовков (с расширением .h).
[9]* Для углубленного изучения (на оценку выше 5 баллов)
[10]*Для углубленного изучения (на оценку выше 5 баллов)