Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы си++.pdf
Скачиваний:
54
Добавлен:
09.04.2015
Размер:
455.01 Кб
Скачать

Технология подготовки и решения задачи на компьютере включает в себя не только «изготовление» программы, но и доказательство ее правильности:

ознакомление с поставленной задачей– анализируются исходные данные, условия и цели решения задачи, формулируются требования к программе, разрабатывается точное описание того, что онадолжна делать и каких результатов необходимо достичь с ее помощью;

составление плана решения– определение структуры данных, состава и последовательности

требуемых преобразований, выбор способа решения, разработка алгоритма;

осуществление решения – переработка согласно составленному плану входной информации

ввыходную, разработка программы с использованием той или иной технологии программирования;

проверка правильности решения задачи – отладка, тестирование,

счет, интерпретация

результатов, получение выводов. Полученный вариант программы подвергается

систематическому

тестированию.

Нельзя

делать вывод, что

программа работает

правильно, лишь

на том основании, что

она выдала результаты (результаты не

обязательно будут правильными, в программе может оставаться большое количество

логических ошибок). Для каждой программы обязательно проводятся работы по

обеспечению ее качества и эффективности, анализируются и улучшаются временные

характеристики.

 

 

 

 

Как правило, под программой на С++ подразумевают исходный т екст , написанный на С++, набранный в текстовом редакторе и сохраненный в текстовом файле (одном или

нескольких). Текстовый файл с названием вида имя_файла.cpp (cpp – принятое расширение для программ на С++) – основная программная единица. Программа имеет также кодовое представление – готовый к исполнению двоичный машинный код, полученный при трансляции (компиляции или интерпретации) исходного текста программы.

Функция как компонент структуры программы

Функция в программировании — это поименованная часть программы, которая может вызываться из других частей программы нужное количество раз. Логически программа на С++ представляет собой набор функций, одна из которых, главная, имеет имя main (в простейшем случае функция main() является единственной). Программа начинает работу с функции main(), являющейся точкой входа в программу и получающей управление первой после запуска программы на выполнение.

Обычно программа на С++ состоит из большого числа небольших функций. Рассмотрим примеры программ, демонстрирующих вывод в стиле С и в стиле С++:

/*proba_1_1.cpp*/

//для printf()

//proba_1_2.cpp

#include1 <stdio.h>

#include <iostream.h>2//для ввода/вывода

#include <conio.h>

//для _getch()

#include <conio.h>

int main()

 

int main()

{ printf ("Ivanov Ivan\n");

{ cout

3

<< "Ivanov Ivan\n";

printf ("Ok\n");

 

 

 

cout << "Ok\n";

_getch(); //ожидает ввод символа,

_getch();

//что позволит увидеть результат вывода

 

 

 

1# – знак номера (произносим «sharp»); #include произносим sharp инклуд;

2мнемоника заголовка с именем iostream.h: i (input) – ввод; o (output) – вывод ; stream – поток; h (header) – заголовок;

произносим «ай оу стрим дот – эйч»;

3 сout – произносим «си аут», – объект, обеспечивающий вывод на экран (в стандартный поток вывода)

Программирование – лекция 1 (лекции Стрикелевой Л.В.)

5

 

}

return 0;

return 0;

//MS Visual C++ 2005

}

 

 

 

//MS Visual C++ 6.0

//proba_1_3.cpp

 

//proba_1_4.cpp

#include <iostream> //для ввода/вывода

#include <iostream>

#include <conio.h> //для _getch()

#include <conio.h>

int main()

 

using namespace std3;

{

 

int main()

 

std1::cout << "Ivanov Ivan\n";

{ cout << "Ivanov Ivan\n";

std::cout <<

"Ok"<< std::endl2 ;

cout <<

"Ok"<< endl;

_getch();

//функция _getch()

_getch();

 

//приостанавливает выполнение программы

return 0;

//MS Visual C++ 2005

// и ожидает «нажатие любой клавиши»

}

}return 0;

//MS Visual C++ 2005

 

 

Результат выполнения любой из программ в

режиме консольных приложений:

Ivanov Ivan

 

 

 

Ok

 

 

 

Пояснения к примерам:

Для удобства работы целесообразно в начало каждого текстового файла программы помещать строку комментария с именем файла. Во второй и третьей строках программ – директивы препроцессора, обеспечивающие включение в программу средств связи со стандартными потоками ввода и вывода данных и прототипа функции _getch(). В строке,

содержащей заголовок функции main(), служебное слово int указывает, что функция возвращает целое значение. Круглые скобки после main()соответствуют синтаксису заголовка любой функции. В них помещается, при необходимости, список параметров.

В фигурных скобках представлено тело функции (последовательность описаний, определений и операторов, каждое из которых заканчивается символом «точка с запятой»). В наших примерах тело функции содержит только операторы вывода текста. С++ обеспечивает

выполнение вывода в стандартный поток std::cout с использованием оператора << , а ввода из

стандартного потока std::cin – с использованием оператора >>. В то же время, в С++ доступны, как и в С, функции вывода printf() и ввода scanf().

Одна из принципиальных особенностей С++ – расширение действия стандартных операций, или перегрузка. Конструкция (лексема) <<, при условии, что слева от нее находится имя объекта std::cout ( std::cout << ) означает операцию «поместить в поток». В противном случае, пара

символов << означает, как и в языке С, операцию сдвига влево двоичного представления значения левого операнда (например, x << 2 означает сдвиг значения переменной x на 2 р азряда

1 Префикс std:: – это указание на обращение к имени из этого стандартного пространства имен. Имена, используемые

в стандартной библиотеке С++ (такие, как cout), объявлены в пространстве имен std и невидимы в нашей программе до тех пор, пока мы явно не сделаем их видимыми. Обозначения заголовочных файлов программ до введения стандарта языка имели расширение “.h”, а имена объектов библиотек и программы помещались в единственное глобальное пространство имен и никакого префикса при обращении к ним не требовалось. Стандарт языка С++ поместил имена из стандартной библиотеки классов и функций в пространство имен std, отделив их тем самым от глобального пространства имен.

2манипулятор std::endl равносилен esc-последовательности \n и означает «конец строки», т.е перевод курсора в начало новой строки консольного окна экрана ; endl – произносим «энд эл».

3Для упрощения обращения к библиотечным именам в современных компиляторах используется директива using namespace std;, позволяющая обращаться к именам без префикса std::. Для старых компиляторов вторая и третья строки этой программы заменяются на одну строку #include <iostream.h> . Разработчики современных компиляторов встраивают в них возможность применения в программах старых заголовков (с расширением .h).

Программирование – лекция 1 (лекции Стрикелевой Л.В.)

6

 

влево, т.е. умножение на 4).

Оператор return – оператор возврата, завершающий выполнение программы и передающий в точку ее вызова значение выраж ения (return выраж ение;). Для функции main() это значение должно быть равно нулю (return 0;), если исполнение программы прошло успешно. Так как программа «запускается» на исполнение по команде операционной системы, то и возврат будет выполнен к операционной системе (точнее, в стандартный модуль, который автоматически «прикомпоновывается» к программе и из которого осуществляется ее вызов). Стандарт С++ предусматривает, что функция main() возвращает 0 по умолчанию, если оператор return не использован явно.

Заголовок функции – имя (идентификатор) функции, за которым в круглых скобках может следовать список описаний формальных параметров и перед которым указывается тип функции (тип возвращаемого функцией значения).

Формат заголовка функции:

тип_функции имя_функции (список_параметров)

тип_функции имя_функции ( )

//если нет параметров

void имя_функции (список_параметров)

//если есть параметры и нет возвращаемого значения

void имя_функции ( )

//если нет ни параметров, ни возвращаемого значения

Прототип функции – это заголовок функции, заканчивающийся символом «;» : char* strcpy(char*, const char*);

Объявление функции – указание ее прототипа.

Сигнатура функции – часть заголовка функции, позволяющая средствам трансляции идентифицировать функцию среди других. В С++ простая функция однозначно опознаётся компилятором по её имени и последовательности типов её параметров, что составляет сигнатуру функции в этом языке: заголовок функции, за вычетом типа_функции:

имя_функции (список_параметров)

Если функция является методом некоторого класса, то в сигнатуре будет участвовать и имя класса.

Тело функции – группа операторов, реализующая алгоритм решения некоторой части задачи. Тело функции должно быть заключено в фигурные скобки:

{ описание данных операторы;

return [выраж ение]; // [выраж ение ] может отсутствовать

}

Если функция не должна возвращать результат, управление возвращается либо просто при достижении правой фигурной скобки, завершающей функцию, либо при выполнении оператора return. Оператор return записываемый без выраж ения означает, что функция не имеет возвращаемого значения. Если функция возвращает результат, то оператор return выраж ение; возвращает выражение в точку вызова функции.

return; //функция не возвращает значения; return 3; //возвращаемое функцией значение = 3;

return (a + b); //возвращаемое значение = значению выражения (а + b);

//скобки необязательны, используются для улучшения читаемости кода

Программирование – лекция 1 (лекции Стрикелевой Л.В.)

7