- •Понятие программы и языка программирования
- •Функция как компонент структуры программы
- •Примеры простых программ
- •Вычисление значения функции в заданной точке
- •Вычисление суммы и количества целых чисел, введенных пользователем с клавиатуры
- •Демонстрация работы со строками на основе использования класса string
- •Представление программы и данных
- •Процесс компиляции программы
- •Классическая схема подготовки исполняемой программы
- •Технологический цикл обработки программы
- •Особенности внутреннего представления программы и ее исполнения
- •Организация памяти компьютера
- •Сегментация программы
- •Процесс исполнения программного кода
- •Структура текстового файла программы
- •Структура программы из двух текстовых файлов
Определение функции – это совокупность ее заголовка и тела.
Вызов функции |
– указание имени функции и в круглых скобках списка факт ических |
парамет ров (аргумент ов), которые необходимо ей передать (если они есть): |
|
_getch(); |
//вызов функции ожидания нажатия клавиши на клавиатуре |
strcpy(s, "aaaaa"); |
//вызов функции копирования строки "aaaaa" в строку s |
Если в теле программы встречается имя функции, то происходит ее вызов (обращение к ней), т.е. функции передается управление. После завершения работы функции управление возвращается в точку ее вызова. Функция, которая вызывает какую-либо другую функцию, называется вызывающей функцией, а функция, которую вызывают на выполнение, называется вызываемой функцией.
Вызвать функцию можно после ее объявления или определения. Объявление функции из стандартной библиотеки выполняется подключением соответствующего файла директивой препроцессора #include.
Если функция возвращает значение некоторого типа, то необходимо принять это значение в переменную этого типа, либо вывести на экран, либо использовать в составном выражении. Например, в библиотеке math.h определена функция, извлекающая квадратный корень sqrt(), которая принимает как аргумент значение, из которого следует извлечь корень, и возвращает значение этого корня. Ее можно использовать:
double x=2.0;
double dbl = sqrt(x);
cout << dbl << " " << sqrt(5.0);
С++ не позволяет определять функции внутри других функций. Связь между функциями осуществляется с помощью передаваемых функции фактических параметров (аргументов) и возвращаемых значений или через глобальные (внешние) переменные. Определение «внешние» используется главным образом для того, чтобы подчеркнуть отличие от «внутренних» информационных объектов – аргументов и переменных, определяемых внутри функции.
Примеры простых программ
Вычисление значения функции в заданной точке
0, |
x < −2 |
|
|
|
−2 ≤ x <1 |
y = x, |
||
|
- x +2, x ≥1 |
|
|
Представленные варианты программы используют разные средства ввода-вывода:
//proba_2_1.cpp |
|
//proba_2_2.cpp |
|
|
#include <iostream> |
#include <stdio.h> |
|
||
#include <conio.h> |
#include <conio.h> |
|
||
int main() |
|
//нет директивы using namespace std; |
int main() |
|
|
|
{ |
|
|
{ |
|
|
|
|
y; |
|
double x, y; |
|
|
double x, |
|
|
||
std::cout |
<< "vvedite x" << std::endl; |
printf ("vvedite x\n"); |
||
std::cin >> x; |
y=0; |
scanf ("%lf", &x); |
y=0; |
|
if (x <= -2) |
if (x <= -2) |
|||
else if ( |
x < 1) y=x; |
else if (x < 1) y=x; |
|
|
else |
y= -x+2; |
else y= -x+2; |
|
|
std::cout |
<< "x= " << x << " y=" << y << std::endl; |
printf("x= %lf, y= %lf\n",x, y); |
Программирование – лекция 1 (лекции Стрикелевой Л.В.) |
8 |
|
_getch(); |
|
_getch(); |
return 0; |
|
return 0; |
} |
|
} |
|
|
|
|
Результат выполнения программ в среде Microsoft Visual C++ 2005 |
|
|
в режиме консольных приложений: |
|
//proba_2_1.cpp |
|
//proba_2_2.cpp |
vvedite x |
|
vvedite x |
3 |
|
3 |
x= 3 y=-1 |
|
x= 3.000000 y= -1.000000 |
Вычисление суммы и количества целых чисел, введенных пользователем с клавиатуры
//proba_3.cpp
#include <iostream> #include <conio.h>
using namespace std; |
//директива есть!!!, std:: перед cout далее отсутствует |
int main() |
|
{ |
//вводимое число |
int x; |
|
int summa=0; |
//накапливаемая сумма |
int counter=0; |
//количество просуммированных чисел |
cout << "Enter integer x (0 if the end)" << endl;
// ввод и проверка чисел в цикле while (cout << "x" << counter+1 << "=", cin >> x, x!=0) {
counter++;
summa+=x;
}
cout << "counter= " << counter << ", sum=" << summa << endl; // вывод _getch();
return 0;
}
Результаты выполнения программы:
Enter integer x (0 if the end) x1=10<enter>
x2=20<enter>
x3=30<enter>
x4=0<enter> counter=3, sum=60
Демонстрация работы со строками на основе использования класса string
//proba_4.cpp #include <iostream> #include < string > #include <conio.h> using namespace std; int main() {
string response="Enter Your name: "; //определение строки response класса string cout << response;
string name; |
//определение объекта-строки name класса string |
|
cin >> name; |
//ввод значения объекта-строки name |
|
string greeting ="Hello, "; //определение строки greeting класса string |
||
greeting = greeting + name + "!"; |
//конкатенация (сцепление) строк |
|
cout << greeting << endl; |
|
|
Программирование – лекция 1 (лекции Стрикелевой Л.В.) |
9 |
|