Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Laboratornyy_praktikum_po_programmirovaniyu_v_s...doc
Скачиваний:
5
Добавлен:
01.03.2025
Размер:
1.4 Mб
Скачать

Пошаговое выполнение программы

Для детального отслеживания процесса выполнения программы нужно пос­тавить точку останова на первую строку того фрагмента программы, который предполагается исследовать. Точка останова устанавливается клавишей F9 (в той строке, где стоит курсор). Можно установить точку останова, щелкнув мышью слева от номера строки.

Для запуска программы в режиме отладки используют команду «Debug|Start Debugging» или клавишу F5.

Установите точку останова в строке

if ( n >= 0) 
и нажмите F5.
Появится окно программы и окно для отображения информации отладчика. В окне программы задайте натуральное число, например 17, и нажмите <Enter> или кнопку «Проверить».
В окне отладчика перейдите на вкладку Locals and Watchers. В этом окне Вы можете следить за изменение значений переменных выполняемого фрагмента программы. Значения некоторых переменных можно всегда отображать в этом окне, щелкнув по имени этой переменной и выбрав в контекстном меню Add to Watch Window.


Нажимайте клавишу F10 для выполнения программы шаг за шагом и следите за изменением значений переменных в окне отладчика.
Дойдя до конца проверяемого блока программы, остановите отладку командой Debug|Stop Debugger (<shift>+<F5>).
Для этой простой программы легко определить, правильно ли она работает, но при решении реальных задач необходимо подготовить тестовые данные для проверки работоспоспособности всех ветвей программы, определить, какие промежуточные значения должны получаться для каждого набора тестовых дан­ных, и проверить результаты работы программы.

Задания для самостоятельного выполнения

  1. Написать программу, которая находит корень уравнения

методом деления отрезка пополам на отрезке [1, 2] с заданной точностью.

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

Выполнить программу в пошаговом режиме.

  1. Написать программу, которая проверяет, является ли вводимое с клавиатуры натуральное число совершенным (совершенным называется число, которое равно сумме своих делителей, например: 6 = 1 + 2 + 3).

Вывести найденные делители с помощью оператора qDebug().

Выполнить программу в пошаговом режиме.

  1. Написать программу для вычисления суммы ряда: с заданной точностью, используя рекуррентные соотношения.

Вывести контрольное значение, используя функцию sin().

Вывести значения слагаемых с помощью оператора qDebug(). Проверить с помощью калькулятора значения первых трех слагаемых для какого-либо значения x.

Выполнить программу в пошаговом режиме.

  1. Написать программу, которая подсчитывает сумму цифр натурального числа.

Вывести найденные цифры с помощью оператора qDebug().

Выполнить программу в пошаговом режиме.

  1. Написать программу, которая подсчитывает количество цифр натурального числа. Вывести найденные цифры с помощью оператора qDebug().

Выполнить программу в пошаговом режиме.

  1. Написать программу, которая извлекает кубический корень из заданного поло­жительного числа, используя рекуррентное соотношение: с заданной точностью.

Вывести контрольное значение с помощью функции pow().

Вывести результаты промежуточных вычислений с помощью оператора qDebug().

Выполнить программу в пошаговом режиме.

7. Написать программу для вычисления суммы ряда

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

Вывести контрольное значение, используя функцию exp().

Вывести значения слагаемых с помощью оператора qDebug(). Проверить с помощью калькулятора значения первых трех слагаемых.

Выполнить программу в пошаговом режиме.

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

Вывести найденные цифры с помощью оператора qDebug().

Выполнить программу в пошаговом режиме.

9. Написать программу, которая определяет, является ли натуральное число, вводимое с клавиатуры, числом Фибоначчи. Числа Фибоначчи вычисляются по следующему правилу: F1 = 1, F2 = 1, Fi = Fi-1 + Fi-2. Вывести результаты промежуточных вычислений с помощью оператора qDebug().

Выполнить программу в пошаговом режиме.

10. Написать программу для вычисления суммы ряда: , где n вводится с клавиатуры, используя рекур­рентные соотношения.

Вывести контрольное значение, используя функцию exp().

Вывести значения слагаемых с помощью оператора qDebug(). Проверить с помощью калькулятора значения первых трех слагаемых для какого-либо значения x.

Выполнить программу в пошаговом режиме.

11. Написать программу, которая определяет, является ли вводимое с клавиату­ры натуральное число простым.

Вывести результаты промежуточных вычислений с помощью оператора qDebug().

Выполнить программу в пошаговом режиме.

12. Написать программу, которая вычисляет , используя рекуррентное соот­ношение: с заданной точностью.

Вывести на экран контрольное значение.

Вывести результаты промежуточных вычислений с помощью оператора qDebug(). Выполнить программу в пошаговом режиме.

13. Написать программу для вычисления суммы ряда: Значение n ввести с клавиатуры.

Вывести на экран контрольное значение, используя константу M_PI. Вывести значения слагаемых с помощью оператора qDebug(). Проверить с помощью калькулятора значения первых трех слагаемых. Выполнить программу в пошаговом режиме.

14. Написать программу, которая вычисляет факториал (n!) числа n, вводимого с клавиатуры ( ) как натуральное число.

Определить, для какого максимального числа n можно решить эту задачу.

Вывести результаты промежуточных вычислений с помощью оператора qDebug().

Выполнить программу в пошаговом режиме.

15. Написать программу, которая извлекает корень n-ой степени из заданного положительного числа, используя рекуррентное соотношение: с заданной точностью.

Вывести на экран контрольное значение, используя функцию pow().

Вывести результаты промежуточных вычислений с помощью оператора qDebug().

Выполнить программу в пошаговом режиме.

16. Написать программу, которая находит наименьшее общее кратное двух нату­ральных чисел m и n, используя соотношение: nok = m*n / nod.

Вывести результаты промежуточных вычислений с помощью оператора qDebug().

Выполнить программу в пошаговом режиме.

17. Написать программу, которая раскладывает число на простые множители.

Указание: найдя очередной множитель, разделить число на него, и после этого опять проверять возможные множители, начиная с 2; тогда не придется проверять, является ли множитель простым.

Вывести результаты промежуточных вычислений с помощью оператора qDebug().

Выполнить программу в пошаговом режиме.

18. Написать программу, которая определяет количество делителей натурального числа. Вывести найденные делители с помощью оператора qDebug(). Выполнить программу в пошаговом режиме.

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

Тема: «Ипользование вспомогательных функций и вывод нескольких чисел c помощью одного элемента управления»

Пример 1: программа, которая находит заданное количество совершенных чисел, и выводит их на экран с помощью элемента textEdit

Совершенными называются числа, которые равны сумме всех своих делителей, не включая само число, например: 6 = 1+2+3.

Для решения задачи будем проверять все натуральные числа, начиная с 1 (но 1 не считается совершенным числом). Совершенных чисел совсем не много, поэтому, чтобы не ждать слишком долго окончания выполнения программы, огра­ничим поиск числом 104.

С оздайте проект на базе класса QDialog.

Спроектируйте окно программы как показано на рисунке. В качестве элемента для вывода результа­та используем элемент textEdit.

Для проверки одного числа добавим в класс, описывающий окно программы, объявление функции IsPerfect(). Передите в режим редактирования прог­раммы (Edit) и откройте файл dialog.h. Вставьте в класс Dialog объявление функции:

bool IsPerfect(int);
Откройте файл dialog.cpp и напишите определение функции. Файл должен выглядеть так, как показано ниже.
#include "dialog.h"
#include "ui_dialog.h"
#include <QTextCodec>
Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
{
    ui->setupUi(this);
    adjustSize();
}
Dialog::~Dialog()
{
    delete ui;
}
bool Dialog::IsPerfect(int n)
{
    int sum = 0;
// проверяем все возможные делители:
    for (int del = 1; del <= n/2; ++del )
        if (n % del == 0) sum += del; 
// если проверяемое число делится на очередной делитель, добавляем его к сумме

    if (n == sum) return true;
    return false;
}

Добавьте слот для кнопки «Найти » и напишите код, показанный ниже.
void Dialog::on_pushButton_clicked()
{
QTextCodec* codec = QTextCodec::codecForName("UTF-8");
QTextCodec::setCodecForCStrings(codec);
    int kol = ui->lineEdit->text().toInt(); // считали нужное количество
    int counter = 0; // количество уже найденных чисел
    int m = 1; // проверяемое число
    QString text= "Совершенные числа:\n";
    while (counter < kol) // пока не найдено нужное количество чисел
    {
        if (IsPerfect(m)) // если очередное число - совершенное
        {
            text += QString::number(m)+'\n'; 
/* выполняем преобразование числа в строку и добавляем к тексту (и символ
перехода на новую строку) */ counter++; // увеличиваем счетчик } m++; // берем следующее число if (m > 1e4) // если число стало слишком большим { text += "Поиск закончен"; break; } } ui->textEdit->setText(text); // выводим текст в окно }

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]