Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
!ПР10.doc
Скачиваний:
4
Добавлен:
14.04.2019
Размер:
85.5 Кб
Скачать

1.2. Отладка

В качестве средства отладки программ QNX включает в себя отладчик gdb. Это программа, под управлением которой можно запустить исполняемый модуль программы. Чтобы можно было воспользоваться отладчиком, необходимо скомпилировать программу с включением в неё отладочной информации. Этой цели служит опция "-g" компилятора. В результате компилятор включает дополнительную информацию в объектные и исполняемые модули, позволяющую связать исходный текст программы с исполняемым модулем.

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

# gdb <имя модуля>

После запуска появляется строка приглашения для ввода команд отладчика:

(gdb)

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

  • run - запустить исполняемый модуль.

  • where - показать содержимое стека.

  • up -движение вверх по стеку.

  • print - показать значение переменной.

  • break - установить контрольную точку (точка остановки).

  • next - перейти после остановки на следующую строку.

  • step - войти внутрь функции.

Например, запуск исполняемого модуля осуществляется командой:

(gdb)run

Подробную информацию о командах отладчика можно получить с помощью команды help. Например:

(gdb) help run

2. Упражнения Задание №1

В соответствие с вариантом реализовать на языке Си программу (lab1_1.c) расчета значения функции.

#include <stdio.h>

#include <math.h>

int main() {

double x, y, t;

t=0.5;

x=sin(t);

y=exp(t)*sqrt(x);

printf("t=%f\tx=%f\ty=%f\n", t, x, y);

return 0;

}

Результат:

# qcc zd1.c -l/lib/libm.a -o zd1

# ./zd1

t=0.500000 x=0.479426 y=1.141584

#

Задание №2

На базе задания №1 создать программу (lab1_2.c) расчета значений функции на заданном интервале с заданным шагом и вывода результатов в табличном виде. Построить график функции.

вар.

Интервал/шаг

1

[0.1, 0.3] / 0.01

№ вар.

Вычислить выражение

При заданных значениях

1

#include <stdio.h>

#include <math.h>

#include <iostream.h>

int main() {

long double x, y, t, f;

for (t=0.1;t<=0.3; t=t+0.01) {

x=acos(t)+9.9;

y=sqrt((pow(t,2)+x)/log(t*x));

//y=sqrt (a);

f=(x/t)+(t/y)+(y/x);

cout<<"t="<<t<<" "<<"f="<<f<<endl;}

return 0;

}

Результат:

# QCC zd2.cpp -l/lib/libm.a -o zd2

# ./zd2

t=0.1 f=114.545

t=0.11 f=103.922

t=0.12 f=95.1416

t=0.13 f=87.7351

t=0.14 f=81.3969

t=0.15 f=75.9095

t=0.16 f=71.1113

t=0.17 f=66.8798

t=0.18 f=63.1201

t=0.19 f=59.7574

t=0.2 f=56.7318

t=0.21 f=53.9952

t=0.22 f=51.5079

t=0.23 f=49.2375

t=0.24 f=47.1568

t=0.25 f=45.2429

t=0.26 f=43.4766

t=0.27 f=41.8415

t=0.28 f=40.3235

t=0.29 f=38.9105

#

Задание №3

В соответствие с вариантом реализовать на языке Си программу (lab1_3.c) расчета значения суммы с заранее известным числом повторений.

№ вар.

Вычислить сумму

1

#include <stdio.h>

#include <math.h>

#include <iostream.h>

int main() {

double x,i;

//int i;

for (i=1; i<=15; i++) {

x=sqrt(pow(i,2)+5);}

cout<<"x="<<x<<endl;

//cout<<endl<<"x="<<x<<endl;

return 0;

}

Результат:

# QCC zd3.cpp -l/lib/libm.a -o zd3

# ./zd3

x=15.1658

#

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