11822

Проектирование программ линейной структуры

Лабораторная работа

Информатика, кибернетика и программирование

Лабораторная работа №2. Проектирование программ линейной структуры 1 Цель и порядок работы Цель работы – изучить структуру программы на языке C операторы присваивания ввода и вывода данных используемые при составлении программ линейной структуры. Порядок вып...

Русский

2013-04-12

261 KB

18 чел.

Лабораторная работа №2. Проектирование программ линейной структуры

1 Цель и порядок работы

Цель работы – изучить структуру программы на языке C++, операторы присваивания, ввода и вывода данных, используемые при составлении программ линейной структуры.

Порядок выполнения работы:

  •  ознакомиться с описанием лабораторной работы;
  •  получить задание у преподавателя, согласно своему варианту;
  •  написать программу, отладить и решить ее на ЭВМ;
  •  оформить отчет.

2 Краткая теория

2.1 Структура программы на языке C++

Выполнение всех программ, написанных на языке C++, начинается с функции, именуемой main. При запуске программы прежде всего выполняется первое выражение функции main.

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

Структура программы выглядит следующим образом:

директивы_препроцессора

int main()

{

определения_объектов;

исполняемые операторы;

return 0;

}

директивы_препроцессора

void main()

{

определения_объектов;

исполняемые операторы;

return;

}

У функции есть имя (main), после которого в круглых скобках перечисляются аргументы или параметры функции (в данном случае у функции main аргументов нет). У функции может быть результат или возвращаемое значение. Если функция не возвращает никакого значения, то это обозначается ключевым словом void. В фигурных скобках записывается тело функции – действия, которые она выполняет. Оператор return 0; означает, что функция возвращает результат – целое число 0.

Вслед за заголовком функции main в фигурных скобках размещается тело функции, которое представляет последовательность определений, описаний и исполняемых операторов. Как правило, определения и описания  размещаются до исполняемых операторов. Каждое определение, описание и оператор завершается  «;».

Переменные используются для представления данных в программе. Например, если нужно запомнить имя пользователя, можно создать переменную Имя. Затем в любой момент, когда потребуется имя пользователя, можно просто сослаться на значение переменной Имя. В процессе выполнения программы значения переменных могут изменяться. Например, можно присвоить переменной Имя значение «Вася», а потом другим выражением присвоить этой же переменной значение «Степан». Но само по себе значение переменной никогда не меняется – в любом случае вы должны написать какое-нибудь выражение, меняющее одно значение на другое.

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

2.2 Алфавит языка

Множество символов используемых в языках C и C++  можно разделить на пять групп.

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

Таблица 1 – Символы, используемые для образования ключевых слов и идентификаторов

Прописные буквы латинского алфавита

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Строчные буквы латинского алфавита

a b c d e f g h i j k l m n o p q r s t u v w x y z

Символ подчеркивания

_

2. Группа прописных и строчных букв русского алфавита и арабские цифры.

Таблица 2 – Символы прописных и строчных букв русского алфавита и арабские цифры

Прописные буквы русского алфавита

А Б В Г Д Е Ж З И К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ы Ь Э Ю Я

Строчные буквы русского алфавита

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

Арабские цифры

0 1 2 3 4 5 6 7 8 9

3. Знаки нумерации и специальные символы. Эти символы используются с одной стороны для организации процесса вычислений, а с другой – для передачи компилятору определенного набора инструкций.

Таблица 3 – Знаки нумерации и специальные символы

Символ

Наименование

Символ

Наименование

,

запятая

)

круглая скобка правая

.

точка

(

круглая скобка левая

;

точка с запятой

}

фигурная скобка правая

:

двоеточие

{

фигурная скобка левая

?

вопросительный знак

<

меньше

'

апостроф

>

больше

!

восклицательный знак

[

квадратная скобка

|

вертикальная черта

]

квадратная скобка

/

дробная черта

#

номер

\

обратная черта

%

процент

~

тильда

&

амперсанд

*

звездочка

^

логическое не

+

плюс

=

равно

-

минус

"

кавычки

4. Управляющие и разделительные символы. К той группе символов относятся: пробел, символы табуляции, перевода строки, возврата каретки, новая страница и новая строка. Эти символы отделяют друг от друга объекты, определяемые пользователем, к которым относятся константы и идентификаторы. Последовательность разделительных символов рассматривается компилятором как один символ (последовательность пробелов).

5. Кроме выделенных групп символов в языках C и C++ широко используются так называемые, управляющие последовательности, т.е. специальные символьные комбинации, используемые в функциях ввода и вывода информации. Управляющая последовательность строится на основе использования обратной дробной черты (\) (обязательный первый символ) и комбинацией латинских букв и цифр.

Таблица 4 – Управляющие последовательности

Управляющая последовательность

Наименование

Шестнадцатеричная замена

\a

Звонок

007

\b

Возврат на шаг

008

\t

Горизонтальная табуляция

009

\n

Переход на новую строку

00A

\v

Вертикальная табуляция

00B

\r

Возврат каретки

00C

\f

Перевод формата

00D

\"

Кавычки

022

\'

Апостроф

027

\0

Ноль-символ

000

\\

Обратная дробная черта

05C

\0ddd

Символ набора кодов ПЭВМ в восьмеричном представлении

 

\xddd

Символ набора кодов ПЭВМ в шестнадцатеричном представлении

 

Последовательности вида \0ddd и \xddd (здесь d обозначает цифру) позволяет представить символ из набора кодов ПЭВМ как последовательность восьмеричных или шестнадцатеричных цифр соответственно. Например, символ возврата каретки может быть представлен различными способами:

\r - общая управляющая последовательность,

\015 - восьмеричная управляющая последовательность,

\x00D - шестнадцатеричная управляющая последовательность.

Следует отметить, что в строковых константах всегда обязательно задавать все три цифры в управляющей последовательности. Например, отдельную управляющую последовательность \n (переход на новую строку) можно представить как \010 или \xA, но в строковых константах необходимо задавать все три цифры, в противном случае символ или символы, следующие за управляющей последовательностью, будут рассматриваться как ее недостающая часть. Например:

"ABCDE\x009FGH" данная строковая команда будет напечатана с использованием определенных функций языка C++, как два слова ABCDE FGH, разделенные символом табуляции (по умолчанию 8-ю пробелами), в этом случае если указать неполную управляющую строку "ABCDE\x09FGH", то на печати появится ABCDE=|=GH, так как компилятор воспримет последовательность \x09F как символ "=+=".

Отметим тот факт, что, если обратная дробная черта предшествует символу не являющемуся управляющей последовательностью (т.е. не включенному в таблицу 4) и не являющемуся цифрой, то эта черта игнорируется, а сам символ представляется как литеральный. Например, символ \h представляется символом h в строковой или символьной константе.

Кроме определения управляющей последовательности, символ обратной дробной черты (\) используется также как символ продолжения. Если за (\) следует (\n), то оба символа игнорируются, а следующая строка является продолжением предыдущей. Это свойство может быть использовано для записи длинных строк.

2.3 Переменные и константы

2.3.1 Идентификатор

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

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

abc A12 NameOfPerson    BITES_PER_WORD

abc и Abc – два разных идентификатора, т.е. заглавные и строчные буквы различаются. Примеры неправильных идентификаторов:

23X  a-b

Ряд слов в языке C++ имеет особое значение и не может использоваться в качестве идентификаторов. Такие зарезервированные слова называются ключевыми.

Список ключевых слов:

asm          auto               bad_cast

bad_typeid   bool               break

case         catch              char

class        const              const_cast

continue     default            delete

do           double            dynamic_cast

else         enum              extern

float        for                friend

goto         if                 inline

int          long               mutable

namespace    new                operator

private      protected        public

register     reinterpret_cast  return

short        signed             sizeof

static       static_cast        struct

switch       template           then

this         throw              try

type_info    typedef            typeid

union        unsigned           using

virtual      void               volatile

while        xalloc

2.3.2 Понятие переменной

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

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

В языке C++ прежде чем использовать переменную, ее необходимо объявить. Объявить переменную с именем x можно так: int x;

В объявлении первым стоит название типа переменной int (целое число), а затем идентификатор x – имя переменной. У переменной x есть тип – в данном случае целое число. Тип переменной определяет, какие возможные значения эта переменная может принимать и какие операции можно выполнять над данной переменной. Тип переменной изменить нельзя, т.е. пока переменная x существует, она всегда будет целого типа.

Язык C++ строго типизированный язык. Любая величина, используемая в программе, принадлежит к какому-либо типу. При любом использовании переменных в программе проверяется, применимо ли выражение или операция к типу переменной. Довольно часто смысл выражения зависит от типа участвующих в нем переменных.

Например, если записать x+y, где x – переменная, то переменная y должна быть одного из числовых типов.

Соответствие типов проверяется во время компиляции программы. Если компилятор обнаруживает несоответствие типа переменной и ее использования, он выдаст ошибку (или предупреждение). Однако во время выполнения программы типы не проверяются. Такой подход, с одной стороны, позволяет обнаружить и исправить большое количество ошибок на стадии компиляции, а, с другой стороны, не замедляет выполнения программы.

2.3.3. Основные типы данных

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

 char  short  int  long  float  double

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

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

Тип       Размер памяти в байтах Диапазон значений

char     1   от -128 до 127

int     2   от -32768 до 32767

short     2   от -32768 до 32767

long     4   от -2 147 483 648 до 2 147 483 647

unsigned char 1   oт 0 до 255

unsigned int    2   от 0 до 65535

unsigned short 2   от 0 до 65535

unsigned long 4   от 0 до 4 294 967 295

Для переменных, представляющих число с плавающей точкой используются следующие модификаторы-типа: float, double, long double.

Величина с модификатором-типа float занимает 4 байта. Из них 1 байт отводится для знака, 8 бит для избыточной экспоненты и 23 бита для мантиссы. Отметим, что старший бит мантиссы всегда равен 1, поэтому он не заполняется, в связи с этим диапазон значений переменной с плавающей точкой приблизительно равен от 3.14E-38 до 3.14E+38.

Величина типа double занимает 8 бит в памяти. Ее формат аналогичен формату float. Биты памяти распределяются следующим образом: 1 бит для знака, 11 бит для экспоненты и 52 бита для мантиссы. С учетом опущенного старшего бита мантиссы диапазон значений равен от 1.7E-308 до 1.7E+308.

2.3.4 Понятие константы

В программе можно явно записать величину – число, символ и т.п. Например, выражение x + 4 – сложить текущее значение переменной   x и число 4. В зависимости от того, при каких условиях будет выполняться программа, значение переменной x может быть различным. Однако целое число четыре всегда останется прежним. Таким образом, явная запись значения в программе – это константа и в данном случае она задаётся своим изображением.

Гораздо чаще используются символические константы. Для определения  символической константы используется ключевое слово const. Например, если записать

const int BITS_IN_WORD = 32;

то затем имя   BITS_IN_WORD можно будет использовать вместо целого числа 32.

2.4 Операторы языка программирования

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

  •  простые (не содержат в себе других операторов);
  •  составные (включают в себя один или несколько дополнительных операторов).

2.4.1 Присваивание

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

int x;         // объявить целую переменную x

int y;         // объявить целую переменную y

x = 0;         // присвоить x значение 0

y = x + 1;     // присвоить y значение x + 1,   т.е. 1

x = 1;         // присвоить x значение 1

y = x + 1;     // присвоить y значение x + 1, теперь уже 2

2.4.2 Ввод-вывод данных с использованием библиотеки потокового ввода вывода

Механизм для ввода-вывода в C++ называется потоком, так как информация вводится и выводится в виде потока байтов – символ за символом.

Библиотека потоков ввода-вывода (iostream.h) определяет три глобальных объекта: cout, cin и cerr.

Для использования возможностей библиотеки необходимо в начале программы указать директиву using namespace std;

cout называется стандартным выводом, cin – стандартным вводом, cerr – стандартным потоком сообщений об ошибках. cout и cerr выводят на терминал и принадлежат к классу ostream, cin имеет тип istream и вводит с терминала.

Вывод осуществляется с помощью операции <<, ввод с помощью операции >>. Выражение

cout << "Пример вывода: " << 34;

напечатает на терминале строку "Пример вывода", за которым будет выведено число 34. Выражение

int x;

cin >> x;

введет целое число с терминала в переменную x. (Разумеется, для того, чтобы ввод произошел, на терминале нужно напечатать какое-либо число и нажать клавишу возврат каретки.)

#include <iostream> подключает библиотеку потокового ввода-вывода. Файл заголовков определяет глобальный объект этого класса cout. Объект называется глобальным, поскольку доступ к нему возможен из любой части программы. Этот объект выполняет вывод на консоль. В функции main мы можем к нему обратиться и послать ему сообщение:

#include "stdafx.h"

#include <iostream>

using namespace std;

int main()

{

  cout << "Hello world!" << endl;

  return 1;

}

Операция сдвига << определена как "вывести". Таким образом, программа посылает объекту cout сообщения "вывести строку Hello world!" и "вывести перевод строки" (endl обозначает перевод на новую строку). В ответ на эти сообщения объект cout выведет строку "Hello world!" на консоль и переведет курсор на следующую строку.

Подключение заголовочного файла #include "stdafx.h" не является обязательным с точки зрения языка C++, однако среда разработки Visual Studio 2008 требует его подключения для включения прекомпиляции заголовочных файлов. Данная возможность позволяет ускорить компиляцию и запуск программы.

2.4.3 Манипуляторы и форматирование ввода-вывода

Часто бывает необходимо вывести строку или число в определенном формате. Для этого используются так называемые манипуляторы.

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

Таблица 1 – Манипуляторы потокового ввода-вывода

Манипулятор

Назначение

endl

при выводе перейти на новую строку;

ends

вывести нулевой байт (признак конца строки);

flush

вывести и очистить все промежуточные буферы;

dec

выводить числа в десятичной системе (по умолчанию);

oct

выводить числа в восьмеричной системе;

hex

выводить числа в шестнадцатеричной системе счисления;

setw (int n)

установить ширину поля вывода в n символов (n – целое число);

setfill(int n)

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

setprecision(int n)

установить количество цифр после запятой при выводе вещественных чисел;

setbase(int n)

установить систему счисления для вывода чисел; n может принимать значения 0, 2, 8, 10, 16, причем 0 означает систему счисления по умолчанию, т.е. 10.

Использовать манипуляторы просто – их надо вывести в выходной поток. Выведем  одно и то же число в разных системах счисления:

int  x=53;

cout <<"Десятичный вид:   " << dec << x << endl 

<< "Восьмиричный вид:      " << oct << x << endl

 <<"Шестнадцатиричный вид:" << hex << x << endl;

Аналогично используются манипуляторы с параметрами. Вывод числа с разным количеством цифр после запятой:

double x;

// вывести число в поле общей шириной

// 6 символов (3 цифры до запятой,

// десятичная точка и 2 цифры после запятой)

cout << setw(6) << setprecision(2) << x << endl;

Те же манипуляторы (за исключением endl и ends) могут использоваться и при вводе. В этом случае они описывают представление вводимых чисел. Кроме того, имеется манипулятор, работающий только при вводе, это ws. Данный манипулятор переключает вводимый поток в такой режим, при котором все пробелы (включая табуляцию, переводы строки, переводы каретки и переводы страницы) будут вводиться. По умолчанию эти символы воспринимаются как разделители между атрибутами ввода.

int x;

// ввести шестнадцатеричное число

cin >> hex >> x;

4.3.4 Ввод вывод с использованием стандартной библиотеки ввода-вывода stdio.h

Все возможности организации ввода-вывода СИ реализованы в библиотечных функциях  стандартной библиотеки stdio.h.

Для  организации вывода используется функция

printf(форматная_строка,список_аргументов);

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

Список аргументов может отсутствовать.

#include "stdafx.h"

#include <stdio.h>

void main()

{

printf("\nhello!\n");

}

Препроцессорная директива #include <stdio.h> подключает стандартную библиотеку ввода-вывода. «\n» – перевод строки (управляющий символ).

При организации вывода данных на экран используются спецификации преобразования, которые имеют следующий обобщённый вид:

%флажки ширина_поля.точность модификатор спецификатор

Обязательными являются «%» и спецификатор.

Таблица 5 – Назначение флагов

Флаг

Назначение

-

Выравнивание результата по левому краю поля.

+

Результат всегда выводится с указанием знака «+» или «-».

Пробел

Если значение не отрицательное, то вместо плюса выводится пробел, для отрицательных значений выводится «-».

#

Аргументы могут быть преобразованы с использованием альтернативной формы

ширина_поля – целое положительное число, определяющее количество знакомест для вывода значения.

точность – целое положительное число, определяющее количество цифр после десятичной запятой для вывода значения с плавающей точкой.

Возможные модификаторы представлены в таблице 6.

Таблица 6 – Назначение модификаторов

Модификатор

Назначение

N

Для близкого указателя

F

Для дальнего указателя

h

Для значения short int

l

Для значения long

L

Для значения long double

Спецификаторы определяют тип выводимого значения и форму вывода.

Таблица 7 – Назначение спецификаторов

Спецификатор

Тип аргумента

Назначение

d

Целого типа

Для целых десятичных чисел (int)

i

Целого типа

Для целых десятичных чисел (int)

o

Целого типа

Для беззнаковых восьмеричных целых

u

Целого типа

Для беззнаковых десятичных целых

x

Целого типа

Для беззнаковых шестнадцатеричных целых (a,b,c,d,e,f)

X

Целого типа

Для беззнаковых шестнадцатеричных целых (A,B,C,D,E,F)

Спецификатор

Тип аргумента

Назначение

f

вещественный

Знаковое вещественное число в формате [+/-]ddd.dddd

e

вещественный

Знаковое вещественное число в формате [+/-]d.dddd или в экспоненциальной форме

g

вещественный

Знаковое вещественное число в формате или f, или e (в зависимости от выводимого значения)

E

вещественный

Такое же, как и e

G

вещественный

Такое же, как и g

s

строковый

ввод-вывод строковых данных

c

символьный

ввод-вывод символов

Например:

Printf(“|n summa=%f”,summa);

На экране будет выведено:

Summa=2102.3

После выполнения операторов:

float c=48.3, e=16.33;

int k=-83;

printf(“\nc=%f\tk=%d\te=%e”,c,k,e);

 на экране будет выведено

c=48.299999            k=-83                 e=1.63300e+01

Для тех же переменных:

printf(“\nc=%5.2f\tk=%5d\te=%8.2f\te=%11.4e”,c,k,e,e);

на экране будет выведено

c=48.30             k=  -83                 e=16.33                   e= 1.6330e+01   

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

\n’ – перевод строки;

\t’ – горизонтальная табуляция;

\r’ – возврат каретки к началу строки;

\\’ – обратная косая черта \;

\’’ – апостроф ‘;

\0’ – нулевой символ;

\a’ – сигнал-звонок;

\b’ – возврат на одну позицию;

\f’ – перевод строки;

\v’ – вертикальная табуляция;

\?’ – знак вопроса.

Для организации ввода данных с клавиатуры используется функция

scanf(форматная_строка, список_аргументов);

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

%*ширина_поля модификатор спецификатор

‘*’ в настоящее время не используется;

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

модификатор и спецификатор – аналогичны функции printf().

Аргументами функции ввода могут быть адреса переменных, которым будут присвоены вводимые значения. Они задаются при помощи операции взятия адреса “&имя_переменной

Например:

scanf(“%d%f%f”,&n,&z,&x);

При организации ввода-вывода данных используются также функции, описанные в стандартной библиотеке ввода-вывода(<stdio.h>):

puts(const char* Строка); Выводит на экран строку символов и переводит курсор в начало следующей строки экрана. В качестве параметра функции можно использовать строковую константу или строковую переменную.

char *gets(char* s);Вводит с клавиатуры строку символов. Вводимая строка может содержать пробелы.  

int putch(int с); Выводит на экран символ.

int getch(void);Возвращает код символа нажатой клавиши. Если нажата служебная клавиша, то функция getch возвращает 0. В этом случае, для того, чтобы определить, какая служебная клавиша нажата, нужно обратиться к функции getch еще раз. Замечание  Функция getch не выводит на экран символ, соответствующий нажатой клавише.

cputs(const char* Строка); Выводит на экран строку.

2.4.5 Математические функции

Для выполнения математических вычислений в стандартной математической библиотеке <math.h> описаны следующие функции:

int abs (int к) ; double fabs(double x); Возвращает целое (abs) или дробное (fabs) абсолютное значение аргумента, в качестве которого можно использовать выражение соответствующего типа.

double acos (double x);

double asin (double x);

double atan (double x);

long double acosl(long double x) ;

long double asinl(long double x);

long double atanl(long double x);

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

double cos (double x);

double sin (double x);

double tan (double x);

long double cosl(long double x);

long double sinl(long double x);

long double tanl(long double x);

 Возвращает синус, косинус или тангенс угла. Величина угла должна быть задана в радианах.

#include "stdafx.h"

#include <stdio.h>

#include <math.h>

int main(void)

{

  double result;

  double x = 0.5;

  result = cos(x);

  printf("Косинус числа  %lf –  %lf\n", x, result);

  return 0;

}

double exp(double x); long double exp(long double lx); Возвращает значение, равное экспоненте аргумента (е*, где еоснование натурального логарифма).

double pow (double x, double y); long double powl(long double (x), long double (y)); Возвращает значение, равное хУ.

#include "stdafx.h"

#include <stdio.h>

#include <math.h>

int main(void)

{

  double result;

  double x = 4.0;

  result = exp(x);

  printf("'e’  в степени  %lf (e ^ %lf) = %lf\n",  x, x, result);

  return 0;

}

double sqrt(double к);

Возвращает значение, равное квадратному корню из аргумента.

double log(double x);

double log10(double x);

long double logl(long double (x));

long double log10l(long double (x));

log, logl – возвращают значение натурального логарифма аргумента. log10, log10l– возвращают значение логарифма аргумента  по основанию 10.

В библиотеке <stdlib.h> описаны генераторы случайных чисел.  

int rand(void); Возвращает случайное целое число в диапазоне от 0 до RAND_MAX. Перед первым обращением к функции rand необходимо инициализировать генератор случайных чисел. Для этого надо вызвать функцию srand. void srand(unsigned к); Инициализирует генератор случайных чисел. Обычно в качестве параметра функции используют переменную, значение которой предсказать заранее нельзя, например это может быть текущее время.

3 Примеры программ

3.1 Программа нахождения среднего арифметического из двух целых чисел и одного вещественного числа:

#include "stdafx.h"

#include <iostream>

using namespace std;

void main()

{

 int a,b;

 float c;

 cout<<"Input 3 nambers"<<endl;

 cin>>a>>b>>c;

 cout<<"Rezult="<<(a+b+c)/3;

}

3.2 Программа перевода дюймов в сантиметры (1 дюйм = 2,54 см).

#include "stdafx.h"

#include <iostream>

using namespace std;

void main()

{

 float c;

 cout<<"Input  nambe"<<endl;

 cin>>c;

 cout<<"Rezult="<< c*2.54;

}

3.3 Программа вычисления значения выражения:

a = 12.4, b =1525, а w – вводится с клавиатуры. Для возведения в степень используется функция pow заголовочного файла math.h.

#include "stdafx.h"

#include <iostream>

#include <math.h>

using namespace std;

void main()

{

 const float pi=3.14159;

 const float a=12.5;

 const float b=(15+25/60)*pi/180;

 float w;

 cout<<"Input w"<<endl;

 cin>>w;

cout<<"Rezult="<<a*sin(b)/pow(w,15);

}

3 Контрольные вопросы

  1.  Опишите структуру программы на языке C++.
  2.  Какие группы символов входят в алфавит языка C++.
  3.  Какие  символы содержатся вы знаете.
  4.  Что такое управляющие последовательности, и каким образом они задаются?
  5.  Как задаются идентификаторы?
  6.  Перечислите ключевые слова языка C++.
  7.  Перечислите и опишите основные типы данных.
  8.  Как определить константу?
  9.  Опишите возможности ввода-вывода данных с помощью библиотеки потокового ввода вывода.
  10.  Опишите известные вам манипуляторы ввода-вывода.
  11.  Как производится ввод-вывод с использованием стандартной библиотеки ввода-вывода stdio.h.
  12.  Какие модификаторы и спецификаторы поддерживает функция printf.
  13.  Как осуществляется ввод при помощи стандартной библиотеки stdio.h.
  14.  Как подключить библиотеку с математическими функциями.
  15.  Какие стандартные математические функции содержит библиотека math.h.
  16.  Как получить случайное число.

4 Задание

  1.  Написать программу в соответствии с вариантом задания из пункта 5.
  2.  Проверить работоспособность программы.
  3.  Отладить и протестировать программу.
  4.  Оформить отчёт.

5 Варианты заданий

  1.  вычислить у=sin(x)*cos(x)-3x2;
    1.  определить время падения камня на поверхность Земли с высоты h.
    2.  вычислить y=|x-tg(x)|;
    3.  вычислить площадь треугольника по стороне и высоте;
    4.  вычислить площадь окружности по заданному радиусу;
    5.  даны значения a и b, найти их среднее арифметическое, среднегеометрическое;
    6.  вычислить y=tg(x)+5x3-4x2;
    7.  вычислить площадь квадрата;
    8.  вычислить высоту треугольника, зная две стороны треугольника и угол между ними;
    9.  вычислить y=|x-cos(x)|;
    10.  ввести сторону квадрата a. Вычислить радиус вписанной окружности;
    11.  Задается длина окружности.  Найти площадь  круга, ограниченного  этой окружностью.
    12.  вычислить углы треугольника, зная его стороны;
    13.  вычислить площадь трапеции;
    14.  вычислить y=cos|x3-x2|;
    15.  вычислить длину гипотенузы прямоугольного треугольника, зная длины двух катетов;
    16.  вычислить корень квадратный от (x5-x4+|x3|);
    17.  вычислить корень квадратный от (sin(x)+cos(x));
    18.  вычислить объем цилиндра, зная радиус основания и высоту;
    19.  вычислить объем конуса;
    20.  Определить время,через которое встретятся два тела, равноускоренно движущиеся друг к другу. Известны:  v1 и v2 - начальные скорости; a1 и a2 -  ускорения; s - расстояние между ними.
    21.  вычислить сторону треугольника, зная две другие стороны и угол между ними;
    22.  вычислить площадь ромба, зная длину стороны и угол;
    23.  вычислить площадь треугольника, зная длины всех сторон и радиус описанной окружности;
    24.  вычислить y= tg(x3)+|x2-x5|;
    25.  вычислить высоту равностороннего треугольника, зная длину всех сторон;
    26.  вычислить y = x2-sin(x)+cos(x);
    27.  вычислить y = x3-x5+|x-sin(x)|+x2;
    28.  вычислить гипотенузу треугольника, зная длины двух катетов;
    29.  Найти корни квадратного уравнения Ах^2-Вх+С=0 для А,В и С, вводимых с клавиатуры.
    30.  вычислить длину отрезка, зная координаты его концов;
    31.  Для А, вводимого с клавиатуры вычислить В=А^10 за четыре операции.
    32.  вычислить y = x/cos (x) + x2/sin (x);
    33.  вычислить среднее арифметическое четырех вводимых чисел;
    34.  вычислить среднее геометрическое пяти вводимых чисел.

5 Содержание отчета

  1.  Титульный лист.
  2.  Наименование и цель работы.
  3.  Краткое теоретическое описание.
  4.  Задание на лабораторную работу.
  5.  Схема  алгоритма.
  6.  Листинг программы.
  7.  Результаты выполнения программы.

PAGE  11


 

А также другие работы, которые могут Вас заинтересовать

7656. Человек в мире культуры 39.5 KB
  Человек в мире культуры Взаимоотношения культура - человек можно рассматривать сквозь призму трех уровней: практического, практически-духовного и теоретического. Первый уровень - реальное созидание человеком второй природы (предметов...
7657. Проблемы типологии культуры. Концепции культурно-исторических типов и линейная (стадиальная) схема периодизации культуры 88.5 KB
  Проблемы типологии культуры. Концепции культурно-исторических типов и линейная (стадиальная) схема периодизации культуры При изучении культур встает проблема их типологизации. Необходимость типологизации культуры следует из сложности и многогр...
7658. Культура как информационно-семиотическая система 61 KB
  Культура как информационно-семиотическая система. I. Новый поворот в понимании сущности культуры наметился в первой половине XX века, и причиной его стало появление новой науки - семиотики. Семиотика - это наука о знаках, знаковых си...
7659. Современная культура как культура масс-медиа 48 KB
  Современная культура как культура масс-медиа I. Сложность исследования особенностей современной культуры, определяется несколькими моментами. Во-первых, современный мир мультикультурен, так как, если ранее степень изоляции различный культур была зна...
7660. Історія української літератури (20 ст.) 59.5 KB
  Історія української літератури (20 ст.) Загальна характеристика українського літературного процесу 20 ст. Загальні особливості української культури 20 ст. Особливості розвитку української культури і літератури в 20-х рр. Трагедія україн...
7661. Комп’ютерний дизайн 30 KB
  Комп’ютерний дизайн Введення в комп’ютерну графіку Графічні редактори. Способи створення графічного зображення. Основи роботи із програмою векторного і растрового графіка. Литература: Вакал Е.С. - Основы роботы на ПК Глушаков С.В...
7662. Міжнародна інформація 48 KB
  Міжнародна інформація Знайти визначення: що таке інформаційний простір, які різновиди інформаційного простору, його поділ, інформаційна інтервенція, інформація та комунікація. Інформація як наука. Інформація - глобальна проблема. Інформаційний ...
7663. Новітня історія зарубіжних країн 80.5 KB
  Новітня історія зарубіжних країн Створення версальсько-вашингтонської системи Підсумки та наслідки першої світової війни. Плани великих держав щодо мирного врегулювання та післявоєнної організації світу. Паризька мирна конференція...
7664. Професійна етика журналіста 57.5 KB
  Професійна етика журналіста Мораль як предмет етики - це сукупність правил і норм поведінки, якими людина керується у своєму житті. Вони регулюють ставлення людей одне до одного в приватному спілкуванні, колективі, суспільстві. Співжиття за мор...