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

  • Знакомство с IDE MS Visual Studio и программа “Hello World!”

  • Таблица 1

  • Таблица 2

  • Входные данные

  • Таблица 3

  • арианту второго пункта основного задания на ЛР № 1

  • 10 варианта второго пункта основного задания на ЛР № 1

  • 10 варианта второго пункта основного задания на ЛР № 1 Перейдём к 6 варианту дополнительного задания на ЛР № 1.

  • В блоке main

  • isContinue.

  • варианта дополнительного задания на ЛР № 1

  • 10 варианта второго пункта основного задания на ЛР № 1 – вывести количество отрицательных и положительных элементов, введённых пользователем, достигнута.

  • Цель программы 6 варианта дополнительного задания на ЛР № 1 – вывести

  • Основное задание на ЛР № 1

  • 10 вариант второго пункта основного задания на ЛР № 1

  • 6 вариант дополнительного задания на ЛР № 1

  • Отчёт по лабораторной работе, Методы программирования. Отчёт_ЛР1_6102_Хасанова (3). Лабораторная работа 1 Знакомство с ide ms visual Studio и программа "Hello World!" по курсу Методы программирования Группа 6102


    Скачать 279.5 Kb.
    НазваниеЛабораторная работа 1 Знакомство с ide ms visual Studio и программа "Hello World!" по курсу Методы программирования Группа 6102
    АнкорОтчёт по лабораторной работе, Методы программирования
    Дата21.12.2021
    Размер279.5 Kb.
    Формат файлаdoc
    Имя файлаОтчёт_ЛР1_6102_Хасанова (3).doc
    ТипЛабораторная работа
    #312661

    МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ
    РОССИЙСКОЙ ФЕДЕРАЦИИ

    федеральное государственное автономное
    образовательное учреждение высшего образования
    «Самарский национальный исследовательский университет
    имени академика С.П. Королева»

    (Самарский университет)
    Институт информатики, математики и электроники

    Факультет информатики
    Кафедра технической кибернетики

    ЛАБОРАТОРНАЯ РАБОТА № 1
    Знакомство с IDE MS Visual Studio
    и программа “Hello World!”



    по курсу
    Методы программирования
    Группа 6102

    Студент Э.Т. Хасанова

    (подпись)


    Преподаватель,

    к.ф.-м.н. Е.С. Козлова

    (подпись)

    Самара 2021

    Задание


    Задание на лабораторную работу приведено в таблице 1.

    Таблица 1 – Задание на ЛР № 1

    Основное задание на ЛР

    1. Реализовать программу “Hello World!” (программа, выводящая на экран слова “Hello World!” и ожидающая ввода с клавиатуры для завершения работы) в виде консольного приложения в среде разработки MS Visual Studio. Внести различные ошибки в программу и изучить реакцию компилятора (среды разработки).

    2. Реализовать одно консольное приложение с функциональностью согласно вариантам.

    Доп. задание

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

    Вариант для второго пункта основного задания приведен в таблице 2.

    Таблица 2 – Вариант второго пункта основного задания на ЛР № 1

    Вариант 10*

    Подсчет элементов последовательности чисел. Входные данные: последовательность целых чисел. Выходные данные: количество отрицательных и положительных элементов. Особенности: ввод последовательности заканчивается при вводе 0.

    Вариант для дополнительного задания приведен в таблице 3.

    Таблица 3 – Вариант дополнительного задания на ЛР № 1

    Вариант 6


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



    Ход выполнения работы

    В основном задание Лабораторной работы №1 использовались: библиотека ввода-вывода (iostream); пространство имён std; функция cout из библиотеки iostream; оператор вывода. Функция cout используется для вывода данных на экран (в консольное окно). Снимок экрана с результатами выполнения программы “Hello, World” приведен на рисунке 1. Рисунок 1 – Снимок экрана с результатами выполнения программы «Hello World!»
    В процессе написания кода для основного задания на Лабораторной работе №1 возникла ошибка – «Необъявлённый индефикатор». Снимок экрана с окном ошибок программы “Hello World!” приведён на рисунке 2.
    Рисунок 2 – Снимок экрана с ошибками программы «Hello World!»
    Для исправления данной ошибки я использовала пространство имён std. using namespace stdсообщает компилятору, что мы хотим использовать всё, что находится в пространстве имён std, так что если компилятор найдёт имя, которое не сможет распознать, он будет проверять его наличие в пространстве имён std.

    Перейдём к 10 арианту второго пункта основного задания на ЛР № 1. В данном задании я использовала функции, операторы ввода и вывода, арифметические, логические операторы, операторы сравнения, итерации и выбора. Опишу три блока кода подробнее.
    В функции int main(){} выполняются операторы ввода(>>) и вывода(<<), операторы выбора (if-else), операторы итерации (while, for), функция, извлекающая одну строку и записывающая её в переменную (getline). Применяя iterator и remove, я указываю элемент, который я хочу удалить, затем, применяя метод erase класса string, я сокращаю длину строки. В этом же блоке я обращаюсь к функции “void isContinue()”, чтобы пользователь мог продолжить или завершить работу программы. В блоке кода isContinue также используются операторы ввода и вывода, и выбора. В данном блоке осуществляется запрос на продолжение использования программы. Проверка вводимых данных на число осуществляется в блоке кода NumText. Данный блок является особенностью программы. В этой функции я проверяла через код символов из ASCII таблицы является ли вводимый символ числом, пробелом или минусом.

    Снимок экрана с результатами выполнения программы 10 варианта второго пункта основного задания на ЛР № 1 приведен на рисунке 3.

    Рисунок 3 – Снимок экрана с результатами выполнения программы 10 варианта второго пункта основного задания на ЛР № 1
    Перейдём к 6 варианту дополнительного задания на ЛР № 1. В данном задании я использовала функции, операторы ввода и вывода, арифметические, логические операторы, операторы сравнения, итерации и выбора, обработку исключений. Опишу блоки кода подробнее.

    В блоке main создаётся массив по вводимым данным, высчитывается среднее значение массива и количество элементов больше среднего значения. В конце данного блока я обращаюсь к функции isContinue.
    В блоке кода isContinue также используются операторы ввода и вывода, и выбора. В данном блоке осуществляется запрос на продолжение. В двух оставшихся блоках осуществляется проверка вводимых данных. В функции outTheRange используются операторы try-catch. Данный блок проверяет строку на выход за диапазон. В блоке isNumber осуществляется проверка символа на цифру, как для ввода размера массива, так и для ввода элементов массива.

    Снимок экрана с результатами выполнения программы 6 варианта дополнительного задания на ЛР № 1 приведен на рисунке 4.




    Рисунок 4 – Снимок экрана с результатами выполнения программы 6 варианта дополнительного задания на ЛР № 1

    Заключение


    Цель задания на лабораторную работу № 1 – написать программу, которая выводит на экран предложение: “Hello, World!”, достигнута.

    Цель программы 10 варианта второго пункта основного задания на ЛР № 1 – вывести количество отрицательных и положительных элементов, введённых пользователем, достигнута.

    Цель программы 6 варианта дополнительного задания на ЛР № 1 – вывести число элементов, больших среднего значения всех элементов массива, достигнута.

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

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

    Литература


    1. Безус, Е.А. Лабораторные работы по курсу «Методы программирования» (язык программирования C++): Методические указания [Текст] / Сост. Е.А. Безус, Е.С. Козлова, С.С. Стафеев  Самара, 2019. – 56 с.

    2. Страуструп, Б. Язык программирования С++ / Б. Страуструп. – М:Бином, 2011 –1136 с.

    3. Шилдт. Г. С++. Полное руководство / Г. Шилдт. – М: "ООО И.Д. Вильямс", 2019 – 800 с.

    4. Страуструп, Б. Программирование: принципы и практика использования С++, испр. изд.: Пер. с англ. / Б. Страуструп. – М: "ООО И.Д. Вильямс", 2011 –1244 с.

    5. Прата, С. Язык программирования С++. Лекции и упражения , 6-е изд.: Пер. с англ. / С. Прата. – Киев: "Диалектика", 2018 –1248 с.

    6. Библиографическое описание документа. Общие требования и правила составления [Электронный ресурс] / сост.: В.С. Крылова, С.М. Григорьевская, Е.Ю. Кичигина // Официальный интернет-сайт научной библиотеки Томского государственного университета. – Электрон. дан. – Томск, [2010]. – http://www.lib.tsu.ru/win/produkzija/metodichka/metodich.html (дата обращения: 10.09.2019).

    Приложение


    Основное задание на ЛР № 1:
    #include // Подключение библиотеки

    using namespace std;
    int main()

    {

    cout << "Hello, World\n"; // Вывод строки на экран

    return 0;

    }
    10 вариант второго пункта основного задания на ЛР № 1:
    #include // Подключение библиотек

    #include

    using namespace std;
    string sequence;

    bool Active = true;

    void isContinue() // Функция, отвечающая за продолжение программы.

    {

    string answer;

    cout << "Continue? (Y/N) > "; // Запрос на повтор

    cin >> answer;

    if (answer == "y" || answer == "Y")

    {

    //Если запрос прошёл, то просто продолжаем программу

    }

    else if (answer == "n" || answer == "N")

    {

    //Если запрос не прошел, завершаем программу

    cout << "Thanks for using!" << endl;

    Active = false;

    }

    else

    {

    // Если запрос введён не верно - повторить

    cout << "Somthing is wrong! Please enter (Y/N)" << endl;

    isContinue();

    }

    }

    bool NumText(string NumberText) // Функция для проверки вводимых символов(ASCII)

    {

    for (int a = 0; a < NumberText.length(); a++)

    {

    if (NumberText[a] != 32 && NumberText[a] != 45) // Проверяем, что элемент строки не пробел, и не минус

    {

    if ((NumberText[a] < 48) || (NumberText[a] > 57)) // Условие, что символ является числом

    {

    cout << "Somthing is wrong! Enter the correct sequence." << endl;

    return false;

    }

    }

    }

    return true;

    }

    int main()

    {

    cout << "Laboratory work 10. Counting the elements of a sequence of numbers." << endl; // Вывод строки с переносом на следующую строку

    while (Active)

    {

    cout << "Enter a sequence of integers (complete sequence '0'): ";

    getline(cin, sequence,'0'); // Функция, извлекающая одну строку и записывающая её в переменную

    string::iterator pend = remove(sequence.begin(), sequence.end(), '\n');

    sequence.erase(pend, sequence.end());

    if (NumText(sequence))

    {

    int negative = 0;

    int positive = 0;

    string Temp;

    for (int i = 0; i < sequence.length(); i++)

    {

    if (sequence[i] != 32)

    {

    Temp += sequence[i];

    }

    else

    {

    if (Temp != "")

    {

    if (Temp[0] == 45)

    {

    negative++;

    }

    else

    {

    positive++;

    }

    }

    Temp = "";

    }

    }

    cout << "Positive elements: " << positive << ". Negative elements: " << negative << "."<< endl;

    }
    isContinue(); // Запрос на повтор программы

    }

    return 0;

    }
    6 вариант дополнительного задания на ЛР № 1:
    #include

    #include
    using namespace std;
    bool isActive = true;

    string NumberText;

    int countNumber;

    int* mass;
    void isContinue()

    {

    string answer;

    //Делаем запрос на повтор

    cout << "Try Again?[y/n]: "; getline(cin, answer);
    if (answer == "y" || answer == "Y")

    {

    //Если запрос прошёл, то просто продолжаем программу

    }

    else if (answer == "n" || answer == "N")

    {

    //Если запрос не прошел, завершаем программу

    cout << "Thanks for using!" << endl;

    isActive = false;

    }

    else

    {

    //Если запрос введен не верно - повторить

    cout << "Something wrong! Plese enter [y/n]" << endl;

    isContinue();

    }

    }
    bool outTheRange(string NumberText)

    {

    try

    {

    int Number = stoi(NumberText);

    return true;

    }

    catch (const std::exception&)

    {

    cout << "This number is too large..." << endl;

    return false;

    }

    }
    bool isNumber(string NumberText, int mode)

    {

    for (int a = 0; a < NumberText.length(); a++) {
    if (mode == 0)

    {

    // Проверка символа на цифру (ASCII)

    if ((NumberText[a] < 48) || (NumberText[a] > 57))

    {

    cout << "Something is wrong, it's not a number or negative." << endl;

    return false;

    }
    if (outTheRange(NumberText)) return true;

    else return false;

    }

    else if (mode == 1)

    {

    if (NumberText[a] != 32 && NumberText[a] != 45) // Проверка на пробел и на минус

    {

    // Проверка символа на цифру (ASCII)

    if ((NumberText[a] < 48) || (NumberText[a] > 57))

    {

    cout << "Something is wrong, it's not a number..." << endl;

    return false;

    }

    }

    }

    }
    if (mode == 1) return true;

    }
    int main()

    {

    while (isActive)

    {

    cout << "Enter the size of the array: "; getline(cin, NumberText); //Получаем строку
    if (isNumber(NumberText, 0)) //Проверяем ее, является ли она числом

    {

    int sizeArray = stoi(NumberText);

    mass = new int[sizeArray];

    cout << "Enter the array: "; getline(cin, NumberText); //Получаем строку

    NumberText += " ";
    if (isNumber(NumberText, 1))

    {

    countNumber = 0;

    for (int i = 0; i < NumberText.length(); i++)

    {

    if (NumberText[i] == 32)

    {

    countNumber++;

    if (i == 0 && NumberText[i] == 32) countNumber--;

    else if (NumberText[i - 1] == 32) countNumber--;

    }

    }

    if (countNumber == sizeArray)

    {

    string Temp;

    int arrayIndex = 0;
    for (int i = 0; i < NumberText.length(); i++)

    {

    if (NumberText[i] != 32)

    {

    Temp += NumberText[i];

    }

    else

    {

    if (outTheRange(Temp))

    {

    mass[arrayIndex] = stoi(Temp);

    arrayIndex++;

    }

    Temp = "";

    }

    }

    float medium = 0;
    for (int i = 0; i < arrayIndex; i++)

    {

    medium += mass[i];

    }
    medium /= arrayIndex;
    cout << "Arithmetic mean: " << medium << endl;
    int countMedium = 0;
    for (int i = 0; i < arrayIndex; i++)

    {

    if (mass[i] > medium) countMedium++;

    }
    cout << "The number of numbers that are greater than the average: " << countMedium << endl;
    }

    else

    {

    cout << "Error! >> Out the range of the array! <<" << endl;

    }

    }

    }

    //Запрос на повтор программы

    isContinue();

    }
    return 0;

    }



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