Главная страница
Навигация по странице:

  • Тип данных Значение

  • Основные библиотеки и их основные функции и операторы: Библиотека iostream > для работы с консолью (экраном).

  • Библиотека математических функций math . h > .

  • Математическая функция Программная запись Описание

  • Библиотека iomanip > - для форматного вывода данных

  • Операция в С++ Описание Пример в программе

  • Сравнение в С++ Описание Пример в программе

  • Реализация линейного и разветвляющегося алгоритмов Пример 1.

  • Пример 4. Найти наибольшее (максимальное) из трех выражений.

  • Выполнение блок-схемы (при вводимом x=1)

  • линейный и разветвляющийся алгоритм. Лекция Линейный и Разветвл.алгоритм для ХТ, БИО_Примеры 1-4. Лекция Базовые знания о языке программирования С


    Скачать 0.58 Mb.
    НазваниеЛекция Базовые знания о языке программирования С
    Анкорлинейный и разветвляющийся алгоритм
    Дата27.09.2020
    Размер0.58 Mb.
    Формат файлаdocx
    Имя файлаЛекция Линейный и Разветвл.алгоритм для ХТ, БИО_Примеры 1-4.docx
    ТипЛекция
    #139780

    Лекция 1. Базовые знания о языке программирования С++

    Программа – это реализация алгоритма для выполнения задачи компьютером (ЭВМ).

    С помощью программы мы формулируем алгоритм на языке, понятном компьютеру. Таким языком служит язык программирования.

    На сегодняшний день распространенными языками программирования являются: С, С++, Pascal, Basic, Fortran и т.д. Язык программирования С++ является одним из самых востребованных на сегодняшний день. На языке С++ можно составлять программы для инженерных расчетов, также можно строить оконные проекты, имеющие пользовательский графический интерфейс.
    Существует несколько приложений для написания программ на языке С++. Мы будем рассматривать Microsoft Visual Studio.

    В языке программирования С++ определены некоторые стандартные типы данных, которые представлены в табл. 1.


    Таблица .1. Стандартные типы данных С++


    Тип данных

    Значение

    int

    целый тип, не определяется стандартом, а зависит от компьютера и компилятора, для 16-разрядного процессора под величины этого типа отводится 2 байта, для 32-разрядного — 4 байта. Примеры значений типа int: 5, 0, -1, 100.

    double

    вещественный тип с двойной точностью. Типы данных с плавающей точкой хранятся в памяти компьютера иначе, чем целочисленные. Внутреннее представление вещественного числа состоит из двух частей — мантиссы и порядка. Мантисса — это число, большее 1.0, но меньшее 10. Для величин типа double, занимающих 8 байт, под порядок и мантиссу отводится 11 и 52 разряда соответственно. Длина мантиссы определяет точность числа, а длина порядка — его диапазон. Примеры значений типа double: 5.0, -0.00001, 2.9987.

    float

    вещественный тип. В компьютерах величины типа float занимают 4 байта, из которых один двоичный разряд отводится под знак мантиссы, 8 разрядов под порядок и 23 под мантиссу. Тип float имеет меньшую точность, чем double. В большинстве случаев лучше использовать double.

    char

    символьный тип, под величину символьного типа отводится количество байт, достаточное для размещения любого символа из набора символов для данного компьютера, что и обусловило название типа. Как правило, это 1 байт. Каждый символ имеет свой собственный целочисленный код, согласно таблице ASCII (англ. American Standard Code for Information Interchange).Примеры значений типа char: "A" (код 65), "7" (код 55), "-" (код 189), "/" (код 191).

    fstream, ifstream, ofstream

    файловый поток. Используется для вывода данных в файл и считывания данных из файла.

    Программа на языке С++ имеет определенную структуру. Существует определенная последовательность заранее определенных строк кода, которая приведена в табл. 2.

    Таблица 2. Структура программы С++

    #include "stdafx.h"

    подключение заголовочного файла для сборки проекта. Обязательный пункт в Visual Studio

    #include <название_библиотеки>

    подключение библиотек. Необязательный пункт.

    using namespace std;

    использование пространства имен. Обязательный пункт в Visual Studio, в среде Borland C++ не используется.

    int main(){ или void main(){

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

    Тело_функции_main

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

    return 0;} или }

    конец программы. Самый последний оператор. Обязательный пункт.

    Библиотека – это файл, в котором описаны функции и операторы. Для каждой смысловой группы функций своя библиотека. Библиотек в языке C++ предусмотрено много, мы будем рассматривать только самые необходимые. Нам понадобятся функции для работы с экраном, математические функции.

    Основные библиотеки и их основные функции и операторы:

    1. Библиотека <iostream> для работы с консолью (экраном).

    cout – оператор вывода данных на экран.

    Пример использования:

    cout<<"fraza"; //выведет на экран слово fraza. Может вывести любой текст.

    cout<
    cin – оператор считывания с экрана.

    Когда у пользователя запрашивают число, программа ждет, пока пользователь не напечатает число и нажмет ENTER. Тогда оператор cin записывает это значение в переменную х.

    Пример использования:

    cin>>x; //присваивает переменной х значение, введенное с клавиатуры.

    cin>>x>>y; //присваивает переменной х первое введенное с клавиатуры значение, переменной у – второе.

    endl – оператор перевода каретки на экране на следующую строку. Самостоятельно не используется.

    Пример использования:

    cout<
    cout< , потом перейдет на новую строку. Выводимые далее данные будут печататься с новой строки.

    cout<
    precision(n) – функция для отображения на экране дробных чисел с n цифрами после запятой.

    Пример использования:

    cout.precision(3)<<7.897426; //число 7.897426 выведется на экран в виде 7.897.

    1. Библиотека математических функций <math.h>.

    Основные математические функции представлены в табл. 3.

    Таблица 3. Основные математические функции С++

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

    Программная запись

    Описание

    |x|

    fabs(x)

    Модуль числа.

    sin x

    sin(x)

    Синус числа, аргумент в радианах.

    cos x

    cos(x)

    Косинус числа, аргумент в радианах.

    tg x,

    cot x

    tan(x),

    1/tan(x)

    Тангенс (котангенс) числа, аргумент в радианах.

    ex ,

    е1

    exp(x),

    exp(1.0)

    Экспонента числа.

    ln x

    log(x)

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

    lg x

    log10(x)

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

    xy

    pow(x, y)

    х в степени y.

    10 x

    pow10(x)

    Степень десяти.



    sqrt(x)

    Квадратный корень из числа.

    arcsin x

    asin(x)

    Арксинус числа, в радианах.

    arccos x

    acos(x)

    Арккосинус числа, в радианах.

    arctan x

    atan(x)

    Арктангенс числа, в радианах.



    Выразить через арктангенс: 4*atan(1.0)

    Можно задать как константу (после строки объявления типа данных): сonst PI=3.141593;

    Число =3.141593


    Пример: специально некоторые пары скобок выделила цветом

    Математическая запись

    Запись в С++



    Z=(3*sqrt(x)*log(fabs(x)) ) / ( pow(tan(exp(1.0))) +exp(3*x)+ pow(x,1/5.0) )



    1. Библиотека <iomanip> - для форматного вывода данных

    setw(n) – для вывода на экран отводится ячеек.

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

    Пример использования:

    cout<
    На экране выведутся два числа: первое (1.5) в первых пяти ячейках, второе (-73) во вторых пяти ячейках. _ _ 1 . 5 _ _ - 7 3 .
    Переменные

    В программах используются переменные. Имя переменной выбирает составитель программы; имя переменной должно начинаться с буквы латинского алфавита и может содержать буквы латинского алфавита, цифры и символы подчеркивания. Заглавные и строчные буквы считаются разными. Примеры имен переменных: х, y, summa, s1, srednee_ar и т.д. Имена переменных не должны совпадать с ключевыми словами языка С++.

    Чтобы использовать в программе переменную, необходимо:

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

    Пример:

    double x; //вещественная переменная .

    int m; //целочисленная переменная .

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

    1. проинициализировать переменную, т.е. задать переменной значение. Пример:

    x=7.81;

    m=4; z=x+m;

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

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

    Таблица 4. Основные арифметические операции С++

    Операция в С++

    Описание

    Пример в программе

    =

    присвоение

    х=0.4;

    +

    сложение

    х=8+3;

    y=x+7.9;

    -

    вычитание

    x=8-3;

    y=x-7.9;

    *

    умножение

    x=4*2.5;

    y=x*4;

    /

    деление.
    Результатом деления целых чисел является целое число.

    x=7.5/3.2;

    y=x/2.6;

    z=1/3; //z=0 (округление до целого, т.к. делятся целые числа)

    z=1.0/3.0; //z=0.333(3)

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

    Таблица 5. Логические операции С++

    Сравнение в С++

    Описание

    Пример в программе

    >

    больше чем

    x>0

    <

    меньше чем

    y

    >=

    больше или равно

    y>=x

    <=

    меньше или равно

    z<=8.56

    ==

    проверка на равенство

    x==0.7

    !=

    не равно

    x!=y

    &&

    логическое И

    x>0 && x<1 // двойное неравенство 0

    ||

    логическое ИЛИ

    s<8 || s>10

    Реализация линейного и разветвляющегося алгоритмов

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



    Код программы (Visual Studio):

    #include "stdafx.h"

    #include

    #include

    using namespace std;

    int main(){

    double x, y, U, V;

    cout<<"vvedi x=";

    cin>>x;

    cout<<"vvedi y=";

    cin>>y;

    U=pow(x, 2.0)+(y+3.0)/(x-1.0);

    V=1.0/pow(y, exp(1.0))*pow(sin(sqrt(x)+1.5), 2.0);

    cout<<"pri x="<





    Для реализации разветвляющегося алгоритма в С++ используется условный оператор if. Приведем общий вид блок-схем и общий вид записи оператора if:



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


    Пример 2. Вычислить значение функции

    при различных значениях аргумента x (аргумент x считать с клавиатуры).

    Решение: Функция Z задана как кусочная функция, т.е. при разных значениях x она считается по-разному. Следует отметить, что при одном значении аргумента функция будет иметь лишь одно значение, т.е. функция однозначная.

    П римечание: При расчете кусочной функции так или иначе сначала проводится проверка условия, поэтому вычисление таких функций реализуется через разветвляющийся алгоритм. В данном примере будет один блок разветвления (соответственно один оператор if в программе). Условием будет служить проверка "x<1". Если условие верно, то функция считается по первой ветке, если ложно, то по второй ветке. Второе условие "x≥1" будет лишним, т.к. оно соответствует стрелке "нет" от первого условия "x<1".

    Посчитаем значение функции Z при x=0. Прежде всего необходимо проверить, какое условие верно: "x<1" или "x≥1". Условие для первой ветки функции верно, значит считаем Z=x+3=0+3=3.

    Посчитаем значение функции Z при x=4. Прежде всего необходимо проверить, какое условие верно: "x<1" или "x≥1". Условие для второй ветки функции верно, значит считаем Z=4x=4*4=16.


    Блок-схема для примера 2




    #include "stdafx.h"

    #include

    using namespace std;

    int main(){

    double x, Z;

    cout<<"x=";

    cin>>x;

    if(x<1){

    Z=x+3;

    }

    else {

    Z=4*x;

    }

    cout<<"Z="<
    return 0;

    }

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



    Пример 3. Вычислить значение функции при различных значениях аргумента x (аргумент x считать с клавиатуры).

    Решение: Функция Z задана как кусочная функция, определенная на трех промежутках. График функции Z представлен на рис. 4.9.


    Рис. 4.9. График кусочной функции

    В данной задаче будем использовать два условия для определения нужной ветви функции. Первое условие "x<0" определяет, следует ли рассчитывать по первой ветви функции. Второе условие "x≤5" определяет, следует ли рассчитывать по второй ветви. Если и первое, и второе условия оказались ложными (не выполнились), то следует рассчитывать по третьей ветви. Следовательно, в блок-схеме будем использовать два блока разветвления, а в программе два оператора условия if.

    Например, нужно вычислить Z при x = -2. Первое условие "x<0" выполняется верно, т.к. -2<0. Следовательно, считать следует по первой ветви, а именно: Z = x2 = (-2)2 = 4.

    Например, нужно вычислить Z при x = 2,5 Первое условие "x<0" выполняется неверно, т.к. 2,5>0. Проверяем второе условие "х≤5": 2,5≤5 – верно. Следовательно, считать следует по второй ветви, а именно: Z=|x|=|2,5|=2,5.

    Например, нужно вычислить Z при x = 10. Первое условие "x<0" выполняется неверно, т.к. 10>0. Проверяем второе условие "x≤5": 10≤5 – неверно. Следовательно, ни первое, ни второе условия не выполнились, и считать следует по третьей ветви, а именно: Z=5.



    Выполнение блок-схемы:
    Вариант 1( по 1 ветке)

    1. начало

    2. x=-2

    3. x<0 -2<0 да

    4. Z=x2 Z=(-2)2 = 4

    5. Печать Z=4

    6. конец


    Вариант 2 (по 2 ветке)

    1. Начало

    2. x=2.5

    3. x<0 2.5<0 нет

    4. x≤5 2.5≤5 да

    5. Z=|x| Z=|2.5|=2.5

    6. Печать Z=2.5

    7. конец


    Вариант 3 (по 3 ветке)

    1. Начало

    2. x=10

    3. x<0 10<0 нет

    4. x≤5 10≤5 нет

    5. Z=5

    6. Печать Z=5

    7. конец

    Программа на С++
    #include "stdafx.h"

    #include

    #include

    using namespace std;

    int main(){

    double x,Z;

    cout<<"x=";

    cin>>x;

    if(x<0) Z=pow(x, 2.0);

    else {if(x<=5) Z=fabs(x);

    else Z=5.0;

    }

    cout<<"Z="<
    return 0;

    }


    Результат выполнения программы (Visual Studio):



    Пример 4. Найти наибольшее (максимальное) из трех выражений.

    Задача: Найти значение функции при различных значениях аргумента (аргумент считать с клавиатуры).

    Решение. Функция считается как наибольшее из трех выражений. Введем обозначения: , х будем считывать с клавиатуры.

    Для нахождения наибольшего из трех выражений введем еще одну переменную Z, которая будет хранить наибольшее значение. Принцип нахождения наибольшего значения заключается в следующем. Сначала принимаем Z как первое значение. Потом поочередно сравниваем с оставшимися значениями и . Если окажется, что больше уже запомненного Z, то следует перезаписать Z, изменив его значение на значение . Если же b и Z. После двух сравнений в переменной Z будет лежать наибольшее из трех значений.



    Выполнение блок-схемы (при вводимом x=1)

    Начало

    ввод x=1

    a=3x=3·1=3

    b=10-x=10-1=9

    c=|x|=|1|=1

    Z=a=3

    b>Z 9>3 да

    Z=b=9

    c>Z 1>9 нет

    вывод Z


    Экран

    x=1

    Z=9

    Конец.

    Программа
    #include "stdafx.h"

    #include

    #include

    using namespace std;

    int main()

    {

    double x, a, b, c, Z;

    cout<<"x=";

    cin>>x;

    a=3.0*x;

    b=10.0-x;

    c=fabs(x);

    Z=a;

    if(b>Z) Z=b;

    if(c>Z) Z=c;

    cout<<"х="<<х<
    cout<<"Z="<
    return 0;

    }



    Лекция 1. Линейный и разветвляющийся алгоритм



    написать администратору сайта