- •Содержание
- •Лабораторная работа № 1 Тема: «Знакомство со средой Qt creator. Простые диалоговые приложения»
- •Пример 1: Программа, вычисляющая вещественный остаток от деления двух вещественных чисел
- •Пример 2: Программа, которая находит квадратный корень числа.
- •Пример 3: Программа, которая иллюстрирует использование стандартных сигналов и слотов.
- •Пример 4: Программа, которая вычисляет значение арифметического выражения
- •Задания для самостоятельного выполнения
- •Лабораторная работа № 2 Тема: «Отладка программы»
- •Пошаговое выполнение программы
- •Задания для самостоятельного выполнения
- •Пример 2: программа, которая выводит значения функции на заданном отрезке с помощью списка listWidget
- •Задания для самостоятельного выполнения
- •Лабораторная работа № 4 Тема: «Работа со строками» п ример 1: программа, которая переводит число из 16-ой системы в 10-ую. При вводе выполняется проверка вводимых символов.
- •Пример 2: программа, которая считывает строку символов, состоящую из русских букв, запятых и пробелов и выводит на экран множество символов этой строки.
- •Пример 3: программа, которая считывает текст из элемента tetxEdit и выводит в столбик числа, содержащиеся в тексте с помощью другого элемента типа textEdit.
- •Задания для самостоятельного выполнения
- •Лабораторная работа № 5 Тема: «Главные окна. Меню. Работа с файлами» Пример 1: программа, которая считывает текст из файла и выводит его в главном окне; используется файл ресурсов.
- •Пример 2: программа, которая считывает текст из файла и половину строк переписывает в другой файл; используются специальные окна для работы с файлами.
- •Пример 3: программа, которая считывает текст из файла и подсчитывает количество видимых символов и количество русских букв.
- •Задания для самостоятельного выполнения
- •Пример 2: программа, в которой используется область отсечения qRegion и котекстное меню для выбора способа заливки этой области.
- •Задания для самостоятельного выполнения
- •Лабораторная работа № 7
- •Пример 1: программа, которая рисует траектории движения мыши при нажатой левой кнопке выбранным цветом и стирает рисунок при щелчке правой кнопкой мыши.
- •Пример 2: программа, которая рисует окружности с помощью мыши (окружность видима в процессе построения). Нарисованные окружности можно сохранить в файле и загрузить из файла.
- •Задания для самостоятельного выполнения
- •Задания для самостоятельного выполнения
- •Задания для самостоятельного выполнения
Пошаговое выполнение программы
Для детального отслеживания процесса выполнения программы нужно поставить точку останова на первую строку того фрагмента программы, который предполагается исследовать. Точка останова устанавливается клавишей 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, 2] с заданной точностью.
Вывести значение функции в найденной точке (убедиться, что найден корень). Вывести результаты промежуточных вычислений с помощью оператора qDebug().
Выполнить программу в пошаговом режиме.
Написать программу, которая проверяет, является ли вводимое с клавиатуры натуральное число совершенным (совершенным называется число, которое равно сумме своих делителей, например: 6 = 1 + 2 + 3).
Вывести найденные делители с помощью оператора qDebug().
Выполнить программу в пошаговом режиме.
Написать программу для вычисления суммы ряда:
с заданной
точностью,
используя рекуррентные
соотношения.
Вывести контрольное значение, используя функцию sin().
Вывести значения слагаемых с помощью оператора qDebug(). Проверить с помощью калькулятора значения первых трех слагаемых для какого-либо значения x.
Выполнить программу в пошаговом режиме.
Написать программу, которая подсчитывает сумму цифр натурального числа.
Вывести найденные цифры с помощью оператора qDebug().
Выполнить программу в пошаговом режиме.
Написать программу, которая подсчитывает количество цифр натурального числа. Вывести найденные цифры с помощью оператора qDebug().
Выполнить программу в пошаговом режиме.
Написать программу, которая извлекает кубический корень из заданного положительного числа, используя рекуррентное соотношение:
с заданной
точностью.
Вывести контрольное значение с помощью функции 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); // выводим текст в окно
}

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