Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Мои лекции по С++.doc
Скачиваний:
2
Добавлен:
14.04.2019
Размер:
340.48 Кб
Скачать

30

ЛЕКЦИЯ 1

РАЗРАБОТКА И ВЫПОЛНЕНИЕ ПРОГРАММ

В СРЕДЕ BUILDER C ++

1.1 Разработка консольного приложения в среде BUILDER C ++

BUILDER C ++ - это инструмент профессионального программирования в среде Windows. Основная сила пакета – использование библиотек классов. Специальные программы-мастера пишут за пользователя значительную часть проекта – программы. Интегрированная среда BUILDER C ++ дает возможность создавать и использовать самые сложные проекты. Программа в этой среде – это проект, который состоит из набора файлов, размещенных в рабочих областях. В среде можно также реализовывать обычные (без использования стандартных классов) программы на языке С++. Для этого используется консольный режим.

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

  1. Запустить среду BUILDER C ++;

  2. Выполнить команду File/Close all.

  3. Выполнить команду File/New, появится окно New, в нем выбрать Other.

  4. Переходим на вкладку New Items и выбираем из списка строку Consol Wizard с установками

Sourсe Type

Use VCL

C++ Console Application

И подтверждаем их нажатием ОК.

В окне разрабатываемого приложения появится имя Unit1.cpp.

5. Для записи файла со своим именем на диск выполняем File/Save project as или File/Save all.

Далее, используя меню, выбираем или формируем свой каталог, в котором будем работать с проектом. Формирование отдельной папки для проекта обязательно! При этом название модуля Unit1.cpp лучше не изменять. Далее выбираем название своего проекта, например Pro1, который будет создан в виде файлов Pro1.bpr, Pro1.res, Unit1.cpp .

6. Если мы продолжаем работу над программой, с которой работали раньше, используем команду File/Open Projects и открываем соответствующий файл с расширением .bpr.

7. Если необходимый файл с расширением .сpp находится на дискете, следует вначале создать проект и в нем внутри заменить его файл (.cpp) на файл с расширением .cpp, который находится на дискете. Для этого можно использовать программу работы с файлами Windows Comander или Far .

8. Набираем текст программы на С++, откомпилируем и выполним его командой Run нажатием соответствующих иконок или клавишами F9, Alt+F9.

    1. Структура программы

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

Общая структура простой программы на языке С++ имеет вид:

#include<имя заглавного файла.h>

void main()

{тело главной функции;}

Спецификатор типа void главной функции показывает, что она не возвращает никакого результата.

Фигурные скобки означают начало и конец блока вычислений, и могут быть вложены сколько угодно раз.

Комментарии. В процессе создания программы используются комментарии. Текст комментариев игнорируется компилятором, но позволяет программисту описывать значение той или иной части программы. В языке С++ используются две разновидности комментариев:

/* текст */ - многострочный комментарий, который не может быть вложенным и

// текст - одно строчный комментарий до конца строки.

Переменные и типы данных. Для того, чтобы программа могла на протяжении своего выполнения сохранять определенные данные, используются переменные и константы. Одним из базовых понятий свойств программы есть идентификатор – имя переменной, имя функции или метка. В программе идентификатор может содержать латинские буквы, цифры, символ подчеркивание и обязательно начинается с буквы или символа подчеркивание. Идентификатор не должен совпадать с ключевыми словами. Ключевые слова – это зарезервированные языком идентификаторы, которые непосредственно используются для написания программ.

Для использования переменной в программе она должна быть объявлена. Создание идентификаторов осуществляется про таком объявлении.

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

Ниже приведен перечень базовых типов переменных и их размер в байтах.

Таблица 1.1.

Основные типы данных для ПК на базе платформы Intel

Тип

Размер, байт

Значение

Bool

1

true (1) или false(0)

unsigned short int (неподписанный короткий)

2

от 0 до 65 535

short int (короткий)

2

от –32 768 до 32 767

unsigned long int (неподписанный длинный)

4

от 0 до 4 294 967 295

long int (длинный)

4

от –2 147 483 648 до 2 147 483 647

int (16 разрядов)

2

от –32 768 до 32 767

int (32 разряда)

4

от –2 147 483 648 до 2 147 483 647

unsigned int (16 разрядов)

2

от 0 до 65 535

unsigned int (32 разряда)

4

от 0 до 4 294 967 295

Char (символ)

1

от 0 до 256

Float (плавающий тип)

4

от 1.2е-38 до 3.4е38

Double (двойной)

8

от 2.2е-308 до 1.8е308

long double

10

от 3.4е-4932 до 3.4е 4932

Void (пустой, не имеет значения)

2 или 4

Например,

bool dd = true; - логическая переменная dd=1;

bool dd1 = 1; - логическая переменная dd1=true;

int a = 1, b = 0; - целые переменные a = 1, b = 0;

сhar sim =’A’; - символическая переменная sim =’A’;

float Age = 18.5; - десятичная переменная Age = 18.5 плавающего типа;

void MyFunction(); - функция не возвращает никакого значения;

double Pi; - переменная удвоенной точности.

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

сonst [тип] идентификатор = значение;

Например:

const double Pi = 3.1415; // константа Pi принимает значение 3.1415;

const a=1; // по умолчанию тип int.

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

#include <iostream.h> .

По умолчанию стандартный ввод, вывод и вывод сообщений об ошибке относятся к консоли пользователя (клавиатура и экран). Это означает, что всякий раз, когда программа ожидает ввода со стандартного потока, данные должны поступать с клавиатуры, а если программа выводит, то на экран.

Наиболее часто в С++ используется потоковый ввод данных, операции которого включены в состав классов istream (stream – поток) или iostream. Он может осуществляться с определенным в этих классах входным потоком cin или выходным потоком, который определен пользователем. Для чтения символов из этого потока указывается операция выбора из потока, которая обозначается с помощью символов “ >> “. Это перегруженная операция, которая определена для всех простых типов и показателя на char.

Формат записи оператора cin имеет вид:

cin >> values ; (values – значения)

Например, для ввода значений переменных х и у можно написать:

cin >> x >> y;

Вывод данных может быть неформатированным и форматированным. Чаще всего для вывода используется определенная операция <<, которая записывается вместе с именем выходного потока cout. Таким образом, запись:

cout << x;

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

Формат записи cout :

cout << data [ << data << "\n"];

где data – это переменные, константы или выражения, "\n" (то же самое, что и endl) – управляющий символ перехода на начало новой строки.

Для дополнительного управления выходными данными используются манипуляторы setw(n) и setprecision(k) (precision – точность). Манипулятор setw(n) служит для указания длины поля, которое выделяется для вывода следующих данных (здесь n – количество позиций в строке), setprecision(k) предназначен для указания количества позиций в дробной части действительных чисел. Для использования этих манипуляторов нужно подключать заглавный файл <iomanip.h>.

Для форматированного ввода данных используется функция scanf из заглавного файла <stdio.h>. Функция scanf имеет изменяющееся число параметров, но как фактические параметры она использует адреса переменных, а не их значения. При этом перед соответствующим параметром ставится знак & - символ выбора адреса переменной. Например, &x обозначает «адрес переменной х», а не значение, которое эта переменная имеет в данный момент. Строка форматов функции scanf указывает, какие данные ожидаются на входе. Если функция встречает в форматной строке знак %, за которым всплывает знак преобразования, то она будет пропускать на входе символы до тех пор, пока не встретит какой-нибудь непустой символ. Таким образом, функция scanf изменяет значение переменных в программе.

Форма записи этой функции имеет вид:

scanf ( "строка форматных кодов", список имен переменных ); .

Для форматированного вывода данных используется функция из того же заглавного файла <stdio.h>. Чаще всего функция printf используется для вывода значений переменных. Первым аргументом в обращении к функции ставится строка форматов, а последующими, если они есть, выводимые объекты.

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

printf ("Значение а, b, с равны: %d %d %d \n", a, b, c);

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

При выводе используются те же спецификации, что и при вводе:

% с для отдельного символа;

% s для символьной строки;

% x – для шестнадцатеричной буквы;

% 0 – для восьмеричных чисел;

% f для чисел в плавающей форме.

Использование математических функция в языке С++ требует подключение заглавного файла #include <math.h>

Таблица 1.2

Математические функции заглавного файла <math. h>

Прототип функции

Имя

Содержание

double acos (double _x);

acos (x)

Арккосинус

double asin (double _x);

asin (x)

Арксинус

double atan (double _x);

atan (x)

Арктангенс

double atan2 (double _y, double _x);

atan2 (y, x)

Арктангенс от y/x

double ceil (double _x);

ceil (x)

Округление в большую сторону

double cos (double _x);

cos (x)

Косинус x, в радианах

double cosh (double _x);

cosh (x)

Косинус, гиперболический

double exp (double _x);

exp (x)

eх, e в степени x

double fabs (double _x);

fabs (x)

Абсолютное значение |x| типа double

double floor (double _x);

floor (x)

Возвращает ближайшее целое, не больше x

double fmod (double _x, double_y);

fmod (x)

Остаток от деления x на y

double log (double _x);

log (x)

Натуральный логарифм

double log10 (double _x);

log10 (x)

Десятичный логарифм

double pow (double _x, double_y);

pow (x, y)

xу, x возведенные в степень y

double sin (double _x);

sin (x)

Синус x, в радианах

double sinh (double _x);

sinh (x)

Синус, гиперболический

double sqrt (double _x);

sqrt (x)

Корень их x, x>0

double tan (double _x);

tan (x)

Тангенс x, x в радианах

double tanh (double _x);

tanh (x)

Тангенс, гиперболический

int abs (int _x);

abs (x)

Модуль x типа int

double atof (const char*_s);

atof (s)

Преобразует строку символов в число с плавающей запятой

double hypot (double_x, double_y);

hypot (x, y)

Корень из (x2+y2)

long labs (long _x);

labs (x)

Абсолютная величина типа long |x|

double pow10 (int _p)

pow10 (p)

Возвращает 10р

В скобках функции в первой колонке указаны типы значений, которые приобретает функция.

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

#include <iostream.h>

void main()

{ const double Pi = 3.1415;

float Rad; double Square=0;

cout<<”Input radius, radius =”; cin>>Rad;

Square=Pi*Rad*Rad;

cout<<"Square = "<<Square<< endl; }

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

#include<iostream.h>

//расчет накопительного вклада

void main()

{

int i,j,let;

double proce,mes,sum=0.0,vsnos=0.0;

cout<<"vvedite mes vklad"<<endl;

cin>>mes;

cout<<"vvedite godovoy proce"<<endl;

cin>>proce;

cout<<"vvedite kol-vo let"<<endl;

cin>>let;

for(i=1;i<let;i++)

{

for(j=1;j<12;j++)

{sum=sum+mes;

vsnos=vsnos+mes*1.0;}

sum=sum+proce*sum*0.01;

}

cout<<"resultat nakoplenia"<<endl;

cout<<" za "<< let<<" let "<<" vsnos= "<<vsnos <<endl;

cout<<"summa pensia = "<<sum<<endl;

}

1.3. Контрольные вопросы и задания

1. Расскажите о структуре программы на языке С++.

2. Какие типы данных вам известны?

3. Чем отличаются переменные от констант?

4. Как можно ввести информацию в компьютер?

5. Как можно вывести информацию?

6. Что такое консоль?

7. Дайте определение понятиям «операционная система», «компилятор», «система программирования».

8. Назовите среду для реализации программ языком С++.

Лекция 2 вычисление значений функций

2.1. Использование оператора условного перехода.

Оператор условного перехода имеет такой формат записи:

If (а) оператор 1 ; еlse оператор 2 ;

где А – выражение. Если значение этого выражения «истина» (не нуль), то выполняется оператор 1, если оно «неправда», выполняется оператор 2; в случае, когда отсутствует ветка еlse – выполняется следующий оператор.

2.2. Операторы цикла.

В языке С++ используются три оператора цикла: while, do, for.

Оператор цикла while (А) оператор 1 ; с предусловием оператор 1 – какой-либо простой, сложный или пустой оператор, А – любое допустимое выражение.

Выполняется этот оператор так: если результат выражения А не равен нулю («истина»), то выполняется цикл (т.е. оператор 1), а если равен нулю («неправда»), то цикл не выполняется и управление передается следующему за while оператору.

Оператор цикла for имеет такую форму записи:

for ( [выражение1]; [выражение2]; [выражение3] ) оператор;

где выражение1 – выражение инициализации, которое обычно используется для установки начального значения; это оператор присвоения; выражение2условие, которое определяет при каком условии цикл повторяется; выражение3 – итерации, которое определяет шаг изменения для переменных, которые управляют циклом после каждого выполнения.

Оператор реализуется так:

- сначала выполняется выражение инициализации (эта рекомендация может использоваться до оператора for);

- вычисляется значение условного выражения;

- если результат – «истина» (не равен нулю), то выполняется оператор цикла;

- снова проверяется условие;

- как только условное выражение становится равным нулю («неправда»), управление передается оператору, который размещается в программе после оператора цикла for.

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

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

do

оператор

while (А);

где А – условное выражение.

Выполняется оператор do так: сначала выполняется вход в тело цикла и выполняется оператор (он может быть простой или сложный), после этого проверяется условие и, если оно выполняется, т.е. «истина» (не равно нулю), то цикл повторяется, а если «неправда» - происходит выход из цикла.

Пример:

Вычислить значение функции , найти ее максимальное значение и соответствующее значение аргумента на отрезке с шагом .

#include <iostream.h>

#include <math.h>

void main()

{ double x,xm,x1=0.0,x2=3.2,y,ym,

hx=0.2;

cout<<" znachenia funkcii"<<endl;

xm=x1;

ym=fabs(pow(xm,1.0/3)*sin(xm));

for(x=x1;x<=x2;x+=hx)

{ y=fabs(pow(x,1.0/3)*sin(x));

if(y>ym)

{ym=y; xm=x;}

cout<<"x="<<x<<"\t"<<"y="<<y<<endl;

}

cout<<"xmax="<<xm<<"\t"<<"ymax="<<ym<<endl;

cin>>xm;

}

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

Задача домой:

Вычислить функцию:

При каком значении х функция будет минимальной?