Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Сл МУ к КурсРаб ТРПО Общие требования к выполне...doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
361.98 Кб
Скачать

Министерство образования и науки РФ

Федеральное государственное автономное образовательное учреждение высшего профессионального образования

Санкт-Петербургский

государственный университет аэрокосмического приборостроения

Технология разработки

Программного обеспечения

Часть 2. Основы языка Си

Методические указания

К выполнению курсовых работ

Санкт-Петербург

2012

ТЕХНОЛОГИЯ РАЗРАБОТКИ 1

Часть 2. Основы языка Си 1

Общие требования к выполнению заданий. 3

Задача 1. Основы программирования на С++. Часть 1 3

Примечание: 3

Вариант 3. Машинный ноль и машинный эпсилон 4

Задание 4

решение 4

Решение задачи 3. «Машинный ноль и машинный эпсилон» 6

Тестирование 6

Теоретическая база 7

Формирование множества комп-чисел Float-Point процессоров стандарта IEEE-754. 7

Топология множества комп-чисел Float-Point процессоров стандарта IEEE-754. 8

Метрологическая оценка ошибки КМД типа float. (оценка ошибки «отображение – воспроизведение») 8

Задачи для самостоятельного решения 12

Курсовое проектирование 13

Общие положения 13

Правила оформления пояснительной записки 13

Содержание пояснительной записки 13

Общие требования к программной документации 15

Текст листинга 15

Инструкция программиста 15

тестирование 15

Тематика курсовых работ 16

Общие требования к выполнению заданий.

К решениям предлагаемых задач предъявляются следующие требования:

1) все исходные данные вводятся пользователем;

2) при вводе данных пользователю выдается указание того, какую информацию он в данный момент вводит (например, сообщение «Введите размерность массива:» и только после этого – непосредственно ввод);

3) результат работы программы выводится на экран с соответствующими пояснениями (например, сообщение «Площадь прямоугольника равна» и следующее за ним значение площади);

4) все программы оформляются с учетом правил хорошего стиля,

Формулировки задач предполагают наличие у студента элементарных знаний по основным дисциплинам (математика, физика, информатика) и при внимательном прочтении трактуются однозначно. В связи с этим наиболее простые понятия в них не объясняются (например, при использовании слова «между» или «интервал» предполагается, что границы в диапазон не включаются, а при использовании слова «отрезок» – включаются). Перед выполнением задания из какого-либо раздела следует ознакомиться с замечаниями, расположенными в его начале.

Полностью задания по вычислительной практике и методические указания по их выполнению содержатся в [9].

Задача 1. Основы программирования на С++. Часть 1

Написать программу, которая запрашивает у пользователя длины сторон прямоугольника, рассчитывает площадь и выводит результат вычисления на экран. При составлении программы учесть, что длины сторон прямоугольника – положительные величины.

Примечание:

все операции производятся в функции main().

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

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

Программа должна также выявлять другие исключительные ситуации

(например, деление на ноль и ситуацию переполнения) и корректно реагировать на них.

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

Вариант 3. Машинный ноль и машинный эпсилон

Задание

Напишите программу, которая находит машинный ноль и машинный эпсилон для данного вещественного типа данных.

Перейти к решению

решение

Решение задачи 3. «Машинный ноль и машинный эпсилон»

Перейти к условию

#include <stdio.h>

#include <conio.h>

float calc_mz() //функция вычисления машинного нуля

{

float nextmz=1;

float mz;

do

{

mz=nextmz;

nextmz/=2;

}

while (nextmz>0);

return mz;

}

float calc_me() //функция вычисления машинного эпсилон

{

float nextme=1;

float mepsilone;

float me;

do

{

me=nextme;

nextme/=2;

mepsilone =nextme+1;

}

while (mepsilone >1);

return me;

}

void test()

{

float mz = calc_mz()/2;

if( mz != 0 )

printf(“Ошибка при вычислении машинного нуля”);

float me = 1 + calc_me()/2;

if( me != 1 )

printf(“Ошибка при вычислении машинного епсилон”);

}

void main()

{

printf("MZ=%g ME=%g\n", calc_mz(), calc_me());

while (!getch())

;

}