на тему рефераты Информационно-образоательный портал
Рефераты, курсовые, дипломы, научные работы,
на тему рефераты
на тему рефераты
МЕНЮ|
на тему рефераты
поиск
Язык прораммирования С++

Язык прораммирования С++

Лекция 1. Структура программы

1. Простейшая программа на языке С++

Программа на языке С++, как и на уже знакомом вам Паскале, содержит две основные части:

объявление данных, с которыми будут производиться некоторые действия (вычисления, вывод на экран и т.п.);

операторную часть, которая задает последовательность действий, выполняемых с этими данными.

Объявление переменной содержит описание ее типа и имя переменной. Приведем примеры объявления.

Cтрока объявления

int R;

состоит из имени переменной R и служебного слова int, которое указывает, что в переменной R можно хранить целые числа.

В строке

float S;

тип данных задается служебным словом float, который указывает, что в переменной с именем S могут храниться вещественные числа - то есть числа, которые могут содержать как целую, так и дробную часть. При записи вещественных чисел на Си целую и дробную часть можно разделять точкой (например, 1.25 - это одна целая двадцать пять сотых), а можно, как и в Паскале, использовать экспоненциальную форму записи.

Операторная часть программы обязательно содержит так называемую «главную функцию»:

void main(void)

{

}

Функция начинается с заголовка void main(void), вид которого пока можно просто запомнить. Между фигурными скобками находятся операторы программы, каждый из которых обязательно заканчивается точкой с запятой. Оператор задает действия, которые надо выполнить с одной или несколькими переменными.

Объявления переменных могут размещаться как до главной функции, так и внутри нее, после фигурной скобки.

Рассмотрим пример первой программы на языке С++:

int R1;

int R2;

int Sum;

void main(void) {

R1=5;

R2=230;

Sum=3*R1+R2;

}

Можно считать, что при запуске программы ее работа начинается с выполнения первого из этих операторов - оператора присваивания R1=5; При его выполнении в переменную R1 записывается число 5. Это число будет храниться в R1 до тех пор, пока какой-нибудь другой оператор не запишет туда другое число. Операторы выполняются один за другим в порядке их записи:

второй оператор занесет число 230 в R2;

при выполнении оператора Sum=3*R1+R2; вычислится арифметическое выражение 3*5+230 и полученное значение 245 запишется в переменную Sum. При записи арифметических выражений используются общепринятые обозначения операций: + сложение,- вычитание, * умножение и / деление как целых, так и вещественных чисел.

Рассмотрение первого примера закончим следующими замечаниями.

1. Язык С++ создан в результате развития языка С. Эти языки настолько близки, что рассмотренная выше программа выглядит одинаково на обоих языках. Для перехода от языка С++ к С достаточно изменить в исходном файле расширение СPP на C. Приведенный пример скомпилируется без ошибок тем же компилятором, но как программа на C. В дальнейшем мы будем считать, что изучаем язык C++, но будем указывать, какие из изучаемых элементов и синтаксических правил различны для С и С++.

2. Имя переменной - это последовательность букв и цифр, начинающаяся с буквы. Таким образом, Ab32 - это допустимое имя языка, а 1А - недопустимое, т.к. начинается не с буквы. В С и С++ прописная и строчная буквы считаются различными, поэтому Ab32 и ab32 это разные имена двух разных переменных.

3. Несколько переменных одинакового типа можно объявить одной строкой, перечислив их через запятую, например,

int R1,R2;.

При объявлении переменных им можно сразу присваивать начальные значения:

int R1=10,R=21;.

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

4. Как и в языке Паскаль, вещественные и целочисленные переменные имеют различное представление в памяти машины, но данные вещественных и целых типов совместимы по присваиванию. Это означает, что применение в программе оператора R1=2.51; не будет считаться ошибкой. Если в программе объявлена вещественная переменная

float V,

то можно выполнить присваивание R1=V1.

Замечание. Компилятор Visual С++, разработанный фирмой Microsoft, выводит в таких ситуациях предупреждение

warning C4244: '=': conversion from 'float' to 'int', possible loss of data

Компилятор BC.exe фирмы Borland не выводит даже предупредительных сообщений.

Если оператор присваивания

R1=V1

записывает в целочисленную переменную вещественное число, то компилятор автоматически организует вызов функции преобразования представления числа, которая получает целое число отбрасыванием дробной части вещественного. Таким образом, значение V1 равное 3.1, преобразуется в 3. Из 3.9 также будет получено число 3.

2. Вывод данных на экран

Рассмотренная выше первая программа производит вычисления, но не предусматривает задания человеком исходных данных с клавиатуры и вывода результатов на экран дисплея.

Для ввода исходных данных в программе можно использовать оператор вызова функции форматного ввода scanf(), а для вывода - оператор вызова функции форматного вывода printf().

В следующем примере при запуске программы на экран выводится приглашение «Ведите два числа», в ответ на которое человек должен набрать на клавиатуре два целых числа, разделив их пробелом или нажатием клавиши Enter. Программа вычисляет сумму и произведение этих чисел и выводит их на экран:

#include <stdio.h>

int Sum, Mul, R1,R2;

void main(void)

{ printf("Введите два числа ");

scanf(“ %d %d”, &R1,&R2);

Sum=R1+R2;

Mul=R1*R2;

printf(“Сумма равна %d Произведение равно %d”, Sum,Mul);

}

Рассмотрим пример более подробно.

Оператор printf("Введите два числа "); выводит на экран заключенную в кавычки строку текста. Эта строка задает формат вывода данных. Кроме обычного текста в строке формата могут присутствовать записанные после знака % латинские буквы d, f, i, s и другие.

В последнем операторе программы

printf(“Сумма равна %d Произведение равно %d”, Sum,Mul);

знаками % в строке отмечаются те места, где программа вставит в строку значения переменных, причем записанная после процента буква d указывает, что это будут целые числа. В этом же операторе после строки формата перечислены через запятую выводимые переменные. На месте первого процента будет выведено значение из переменной Sum, а на месте второго - из переменной Mul.

Кстати, то же самое средствами языка С++ можно записать компактнее с использованием операции вывода в поток:

cout<<“Сумма равна=”<< Sum <<”Произведение равно=”<<Mul;

Если в программе объявлена вещественная переменная, пусть

float fVar=3.5;,

то при выводе значения fVar на экран в строке формата после процента указывают букву f: printf(“ %f”,fVar);.

При вводе данных, как и при выводе, указывают строку формата и имена переменных, в которые занесутся введенные с клавиатуры значения. В операторе

Scanf (“ %d %d”, &R1,&R2);

из строки формата “ %d %d” видно, что далее будут указаны имена двух переменных целого типа. Следует только заметить, что перед именами переменных нужно записывать значки & - операции получения адреса.

Замечание.

Если в программе используются вызовы функций ввода-вывода (таких, как scanf() или printf()) то для их правильной обработки компилятором в программу надо включить строку #include <stdio.h>.

Для использованием операции ввода и вывода в поток необходимо вставить в программу следующую строку:

#include <iostream.h>

В интегрированной среде Си есть подкаталог include, в котором находятся текстовые файлы с расширением h. Они называются заголовочными файлами, среди них находится и файл stdio.h. Перед компиляцией исходный текст программы на языке Си просматривается специальной программой, которая называется препроцессором.

Встретив строку #include <stdio.h> препроцессор находит на диске файл stdio.h и включает его целиком в нашу программу вместо этой строки. А уже после этого файл обрабатывается компилятором и переводится в машинные коды.

Если просмотреть содержимое файла stdio.h, в нем можно найти строки

int _Cdecl printf(const char _FAR *__format,...);

int _Cdecl scanf (const char _FAR *__format,...);,

ради которых stdio.h был включен в исходный текст программы.

Это так называемые прототипы функций, которые нужны компилятору, чтобы правильно сформировать вызовы функций printf() и scanf(). Кроме них stdio.h содержит константы, описания типов данных, прототипы других функций, применяемых при стандартном вводе или выводе данных. (Потому он так и называется - сокращение от standard input output).

3. Стандартные функции

При составлении выражений в языке Си используется много разнообразных стандартных функций. Как мы помним, функция - это записанная отдельно от основного текста часть программы, которая вызывается оператором вызова функции - записывается имя функции, после которого в скобках записываются фактические параметры (значения аргументов функции). Так, если в программе объявлены переменные

float Res,V1=9;

то в арифметических выражениях можно использовать вызов функций вычисления синуса sin(V1), косинуса cos(V1) квадратного корня sqrt(V1) и пр. При выполнении оператора

Res = 2*sqrt(V1);

вычисляется квадратный корень изV1 - вещественное число 3, умножится на два и результат запишется в переменную Res. То есть, при вызове функции вычисляется ее значение (принято говорить, что функция возвращает вычисленное значение в ответ на вызов) и это значение используется в выражении как обычная переменная.

При составлении программы можно использовать вызовы:

log(V1) - вычисления натурального логарифма,

log10(V1) - вычисления десятичного логарифма,

exp(V1) - вычисления показательной функции с основанием e,

asin(V1), atan(V1) - вычисления арксинуса и арктангенса.

При использовании прямых и обратных тригонометрических функций угол задается и получается в радианах.

Функция может иметь несколько параметров. Например, функция atan2(y,x), которой передается два вещественных аргумента, вычисляет арктангенс угла, лежащего в прямоугольном треугольнике с катетами x,y против стороны y, причем второй аргумент x может быть равным нулю (при этом арктангенс будет равен р/2).

Прототипы математических функций находятся в заголовочном файле math.h. Если программа использует вызовы стандартных математических функций, то для их правильной обработки компилятором в программу надо включить строку

#include <math.h>.

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

R1=floor(V1); или с избытком r=ceil(S);.

Для округления до ближайшего целого нет стандартной функции, но можно выполнить оператор

R1=floor(V1+0.5);

Как и в Паскале, можно узнать, сколько байтов требуется для хранения переменной, применив к ней операцию sizeof(). Объявим переменные

int A,B;

Страницы: 1, 2, 3, 4, 5



© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент.