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

  • Краткие

  • Пример

  • Контрольные

  • Варианты

  • Лаб.раб. Министерство образования и науки российской федерации пензенский государственный


    Скачать 0.8 Mb.
    НазваниеМинистерство образования и науки российской федерации пензенский государственный
    Дата05.09.2022
    Размер0.8 Mb.
    Формат файлаdocx
    Имя файлаЛаб.раб.docx
    ТипМетодические указания
    #662566
    страница2 из 8
    1   2   3   4   5   6   7   8

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


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

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

    Краткие теоретические сведения:

    Алгоритм – это последовательность действий, выполняемых по строго определенным правилам, однозначно определяющая процесс решения задачи и заведомо приводящая к её решению за некоторое количество шагов. Алгоритмизация – разработка формального метода решения практической задачи с возможностью реализации в виде программы для ЭВМ.

    Изображение алгоритма в виде схемы выполняется в соответствии с ГОСТ 19.701–90 Единой системы программной документации «Схемы алгоритмов, программ, данных и систем».

    Структура программ для Microsoft Visual Studio.


    1

    2

    3

    4

    5

    6

    // struct_program.cpp: определяет точку входа для консольного приложения.

    #include "stdafx.h"

    //здесь подключаем все необходимые препроцессорные директивы

    int main() { // начало главной функции с именем main

    //здесь будет находится ваш программный код

    }

    В строке 1 говорится о точке входа для консольного приложения, это значит, что данную программу можно запустить через командную строку Windows указав имя программы, к примеру, такое struct_program.cpp. Строка 1 является однострочным комментарием, так как начинается с символов //. В строке 2 подключен заголовочный файл "stdafx.h". Данный файл похож на контейнер, так как в нем подключены основные препроцессорные директивы (те, что подключил компилятор, при создании консольного приложения), и вспомогательные (подключенные программистом).

    include директива препроцессора, т. е. сообщение препроцессору. Строки, начинающиеся с символа # обрабатываются препроцессором до компиляции программы.

    заголовочные файлы:

    Библиотека cmath определяет набор функций для выполнения общих математических операций и преобразований. Математические функции:

    1. тригонометрические функции:

    cos-вычисление косинуса угла, переведенного в радианы; sin-вычисление синуса угла, переведенного в радианы; tan-вычисление тангенса угла, переведенного в радианы;

    acos-вычисление арккосинуса, результат будет в радианах; asin-вычисление арксинуса, результат будет в радианах;

    atan-вычисление арктангенса, возвращаемый результат будет в радианах; atan2-вычисление арктангенса и квадранта по координатам x и

    y, возвращаемый результат будет в радианах;

    1. гиперболические функции:

    cosh-вычисление гиперболического косинуса; sinh-вычисление гиперболического синуса; tanh-вычисление гиперболического тангенса;

    1. экспоненциальные и логарифмические функции: exp-вычисление экспоненты;

    frexp-получить мантиссу и показатель степени двойки;

    ldexp-генерация числа по значению мантиссы и показателю степени; log-натуральный логарифм;

    log10-десятичный логарифм;

    modf-разделение вещественного значения на дробную и целую части;

    1. функции степени:

    pow-возведение числа в степень. Пример использования функции; sqrt-корень квадратный;

    1. округление, модуль и другие функции ceil-округление до наименьшего целого значения; fabs-вычислить модуль значения;

    floor-округление до наибольшего целого значения; fmod-остаток от деления числителя на знаменатель.

    Пример использования функций:

    #include // для оператора cout #include // для функции pow
    int main()

    {

    std::cout << "5.0 ^ 4 = " << pow (5.0, 4) << std::endl;

    std::cout << "2.77 ^ 9 = " << pow (2.77, 9) << std::endl;

    std::cout << "12.01 ^ 11.54 = " << pow (12.01, 11.54) << std::endl; std::cout << "sqrt(" << param << ") = "

    << sqrt(param) // вычисляем корень квадратный

    << std::endl;

    double param = 60.0; // угол 60 градусов std::cout << "Косинус " << param

    << " градусов = " << cos(param * PI / 180) // вычисляем косинус угла,

    //переведённого в радианы

    << std::endl; double param = 0.5;

    std::cout << "Арксинус " << param

    << " = " << (asin (param) * 180.0 / PI) // вычисляем арксинус

    << " градусов " << std::endl; double val = 5.5, result;

    result = log (val); // вычисляем натуральный логарифм std::cout << "ln(" << val << ") = "

    << result << std::endl; return 0;

    }

    Файлы кода C++ (с расширением .cpp) не являются единственными файлами в проектах и программах. Есть еще один тип файлов, который называется заголовочный файл (файл заголовка, подключаемый файл или header file). Они имеют расширение .h, но иногда их можно увидеть и с расширением .hpp или вообще без расширения. Целью заголовочных файлов является удобное хранение предварительных объявлений для использования другими файлами. Всё содержимое из заголовочного файла копируется в файл *.срр, т.е. всё содержимое становится доступным для использования.

    Заголовочные файлы:

    • cstdio (stdio.h)-заголовочный файл для выполнения операций ввода/вывода;

    • cstring (string.h)-заголовочный файл для работы со строками;

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

    cin объект класса istream, соответствующий стандартному вводу. В общем случае он позволяет читать данные с терминала пользователя;

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

    cerr объект класса ostream, соответствующий стандартному выводу для ошибок. В этот поток мы направляем сообщения об ошибках программы.

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

    Основные типы данных представлены в таблице 1.

    Таблица 1 Типы данных С++

    Тип

    байт

    Диапазон принимаемых значений

    целочисленный (логический) тип данных

    bool

    1

    0 / 255

    целочисленный (символьный) тип данных

    char

    1

    0 / 255

    целочисленные типы данных

    short int

    2

    -32 768 / 32 767

    unsigned short

    int

    2

    0 / 65 535

    int

    4

    -2 147 483 648 / 2 147 483 647

    unsigned int

    4

    0 / 4 294 967 295

    long int

    4

    -2 147 483 648 / 2 147 483 647

    unsigned long

    int

    4

    0 / 4 294 967 295

    типы данных с плавающей точкой

    float

    4

    -2 147 483 648.0 / 2 147 483 647.0

    long float

    8

    -9 223 372 036 854 775 808 .0/ 9 223 372 036 854 775 807.0

    double

    8

    -9 223 372 036 854 775 808 .0 / 9 223 372 036 854 775 807.0

    Способы ввода данных в языке возможно двумя способами: форматированные ввод-вывод или потоковый.

    При форматированном способе используются операторы ввода scanf вывода printf. Синтаксис операторов имеет вид:

    scanf(<строка описания форматов> [, <список ввода>]); printf(<строка описания форматов> [, <список вывода>]);

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

    К управляющим последовательностям относятся последовательности символов, представленных в таблице 2.

    Таблица 2 Управляющие символы

    Последовательность

    Действие

    \a

    Звуковой сигнал

    \b

    Удаление предыдущего символа

    \n

    Новая строка

    \r

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

    \t

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

    \v

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

    \'

    Апостроф

    \"

    Кавычки

    \\

    Обратный слеш

    \ooo

    ASCII символ в восьмеричной нотации

    \xooo

    ASCII символ в шестнадцатеричной

    нотации

    Иногда при работе операторов используются спецификаторы форматов (таблица 3-5).

    Таблица 3 Спецификаторы формата для оператора printf

    Символ

    Назначение



    символ

    %d

    целое десятичное число

    %i

    целое десятичное число

    %e

    десятичное число в виде x.xx e+xx

    %E

    десятичное число в виде x.xx E+xx

    %f

    десятичное число с плавающей запятой

    xx.xxxx

    %F

    десятичное число с плавающей запятой




    xx.xxxx

    %g

    %f или %e, что короче

    %G

    %F или %E, что короче

    %o

    восьмеричное число

    %s

    строка символов

    %u

    беззнаковое десятичное число

    %x

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

    %X

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

    %%

    символ %

    %p

    указатель

    %n

    указатель

    Кроме того, к командам формата могут быть применены модификаторы l и h (таблица 4).

    Таблица 4

    Обозначение

    Назначение

    %ld

    печать long int

    %hu

    печать short

    unsigned

    %Lf

    печать long

    double


    Таблица 5 Спецификаторы формата для оператора scanf

    Символы

    Назначение

    %c

    чтение символа

    %d

    чтение десятичного целого

    %i

    чтение десятичного целого

    %e

    чтение числа типа float (плавающая

    запятая)

    %h

    чтение short int

    %o

    чтение восьмеричного числа

    %s

    чтение строки

    %x

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

    %p

    чтение указателя

    %n

    чтение указателя в увеличенном

    формате


    Примеры использования спецификаторов и модификаторов в операторах ввода-вывода:
    int m, n, x; double y; char c = '&';

    char str[] = "String";

    scanf("%d%d", &m, &n); // Ввод десятичных целых чисел в переменные m и n

    printf("m = %5d\nn = %5d\n", m, n); // Вывод переменных m и n в десятичном целом формате, используются как минимум 5 знаков

    scanf("%d", &x); // Ввод десятичного целого числа в переменную x

    printf("%#010x\n", x); // Вывод переменной x в шестнадцатеричной системе, используются 10 знаков,

    // впереди добавляются нули и символы

    scanf("%lf", &y); // Ввод вещественного числа в переменную y

    printf("y = %7.2lf\n", y); // Вывод вещественной переменной, используются как минимум 7 знаков, из них 2 – после точки

    printf("c = %c\n", c); // Вывод одного символа printf("%.4s\n", str);

    }

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

    //Подключениестандартныхбиблиотек:

    #include

    #include //дляработыс мат.функциями acos, log10,log,atan

    using namespace std; // пространствоимен,гдеопределяютсяидентификаторы

    void main() //заголовокглавнойфункциипрограммы

    { //операторныескобки

    setlocale(0, “Russian”); //установкавыводасообщенийнарусскомязыке float x,y,z; //описание переменных (имя и тип) system(“cls”); //функция очистки экрана

    cout<<"Введите числа x,y: "< //выводсообщенияна экран

    cin>>x>>y; //считать2вещ.числа, записатьихпоадресуперем.x,y

    z=x*y;

    cout<<"Произведение="< //вывестирезультатнаэкран

    system(“pause”);

    } //конецглавнойфункции

    Пример выполнения задания.

    Задание: вычислить значение функции

    sin3 ccos2 a2

    y 

    5sindb15

    при

    A 9,5; B1,365; C 6,5; D 5 . Использовать два варианта ввода исходных данных и вывода результатов: возможности библиотеки функций языка С и библиотеки классов языка С++.

    Схема программы для задания представлена на рисунке 3:












    s1=sin3c













    s2=cos2a













    s3=sindb










    y s1*s2 k1

    5s3 k2









    Рисунок 3

    Текст программы с использованием библиотеки функций языка С (форматированный ввод-вывод) для ввода исходных данных и вывода результатов:

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

    //с использованием библиотеки классов языка С++

    // форматированный ввод-вывод # include

    # include using namespace std; void main()

    {

    setlocale(0, “Russian”); //Вывод сообщений на русском языке const double k1=2.0;

    const double k2= 15.0; double a, b, c, d, s1, s2, s3, y;

    system(“cls”); //Очистка экрана printf(“Введите значения переменных a, b, c, d:\n”); scanf(“%lf%lf%lf%lf”, &a, &b, &c, &d); s1=pow(sin(c), 3);

    s2=pow(cos(a), 2 );

    s3=pow(sin(b), d ); y=(s1*s2)/(5*s3) + k1/k2;

    printf(“Искомое значение y=%lf”, y); system(“pause”); //Пауза

    }

    Текст программы с использованием библиотеки классов языка С++ (потоковый ввод-вывод) для ввода исходных данных и вывода результатов:

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

    //с использованием библиотеки классов языка С++

    // потоковый ввод-вывод # include

    # include using namespace std; void main()

    {

    setlocale(0, “Russian”); //Вывод сообщений на русском языке const double k1= 2.0;

    const double k2= 15.0; double a, b, c, d, s1, s2, s3, y;

    system(“cls”); //Очистка экрана cout<<“Введите значения переменных a, b, c, d:”<cin>>a>>b>>c>>d;


    s1=pow(sin(c), 3);

    s2=pow(cos(a), 2 );

    s3=pow(sin(b), d ); y=(s1*s2)/(5*s3) + k1/k2; cout<<“Искомое значение y=”<system(“pause”); //Пауза

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

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

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

    3. Этапы обработки текста программы. Включение текстов из заголовочных файлов.

    4. Главная функция программы. Структура функции, ее заголовок.

    5. Определение переменных в программе. Типы переменных.

    6. Функции форматного ввода-вывода в стиле С.

    7. Ввод-вывод данных потоком в стиле С++.

    8. Операции, выражения. Оператор присваивания.

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

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

    1. Y arccos A B B lgA2 B2 при

    A 5, B 2,35 .


    B

    2
     

     

    2. A B2

    2 при

    A 6,84; B 3,22; C 4; D 2,5 .

    Y B



    C D

    1. Y lg

    • tgA при

    A 4; B13,6 .

    1. Y sin 3 c cos2 a

    5sin db

    при

    A 9.5; B1,365; C 6,6; D 3.

    5. Y 2A arcsin 3,14

    при

    A 8; B 5,6 .


    B
     

     

    6. Y 2BlnAB



    D2

    при

    A 5,6; B 2,8; D 3 .


    7.


    Y 2 AD

    • 4C2 при

    A 5,95; C 3,6; D 3 .


     

     


    3
    8. Y 0,5lg1 sin B CDпри

    1 sin A

    A 3,14; B 1,57; C10.5; D 8.

    9. 1 B3 

    2 при

    A 2,6; B 56,6; C 35; D 20,3 .

    Y2 10 CD

    A 

    10.

    A/ B 1 2 при

    A 6; B1,64; C 0,16; D 0,8 .

    Y



    C/ D 1

    1. AB

    Y

    при

    A 25; B 8,5; C 0,56; D 0,01 .

    C DA C

    1. Y sinAB CD2

    при

    A 8,4; B 6,4; C 4; D 7 .

    13. Y при A 25; B 8; C12,5 .

    14. Y A2 B2 C2

    lnA B C

    15. Y A D3  B C2

    при
    при

    A 0,6; B 0,5; C 6 .
    A 0,3; B 2,8; C 4,5; D1,35 .

    3 2

    16. Y 2sin(3 2)cos2 (5 2) при 1,57 .

    17. Y 2

    2 cos sin 2

    при 2,09 .


    4
     

     

    18. Y sin 2 sin 5 sin 3

    cos 1 2sin 2 2

    19. Y 1 1 sin 2 2 cos 2

    4

    при 4,71.
    при 1,57 .

    20. Y 4cos cos 5 cos 4 при 2,09 .

    2 2

    21. Y arccos A B B lgA2 B2 при

    A 5, B 2,35 .


    B

    2
     

     

    22.

    A B2

    2 при

    A 6,84; B 3,22; C 4; D 2,5 .

    Y B

    C D

    1. Y lg tgA при

    A 4; B13,6 .

    1. Y sin 3 c cos2 a

    5sin db

    при

    A 9.5; B1,365; C 6,6; D 3.

    25. Y 2A arcsin 3,14

    при

    A 8; B 5,6 .


    B
     

     
    1   2   3   4   5   6   7   8


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