Главная » Просмотр файлов » Основы программирования

Основы программирования (947332), страница 9

Файл №947332 Основы программирования (Иванова Г.С. Основы программирования) 9 страницаОсновы программирования (947332) страница 92013-09-15СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 9)

Основы алгоритмизации и процедурное программированиеу2:=(ехр(х) - ехр('Х))/2;y:=^sqr(yl) - sqr(y2):WriteLnCyl^\yl:13:ll):WnteLn(y2=\y2:13:ll);WriteLn(y=^\y:13:ll);End.Последовательно вводя x = 5, 6, 7, ..., 14, получаем, что у = 1, хотя по­грешность результата растет. Однако при х=15 у=0 (!!!). Попробуем понять,почему такое происходит, для чего сведем результаты при х = О, 5, 10, 14, 15,20 в табл. 2.4 и рассчитаем абсолютную и относительную погрешности ре­зультата. Из таблицы видно, что значения функций ch х и sh х с увеличени­ем X быстро растут. А чем больше число, тем длиннее запись его мантиссы.И, наконец, при х=15 разрядной сетки для записи мантиссы числа перестаетхватать. При этом младшие разряды мантиссы, которые различны для ch х иsh X, отбрасываются, и при возведении чисел в квадрат мы получаем одина­ковые результаты.Для того чтобы избежать подобных ситуаций, в каждом конкретном слу­чае используют разные приемы, например, в данном примере можно исполь­зовать тип данных с большим количеством значащих цифр (см.

табл. 2.2) иливычислять результат преобразованного выражения:ch^ X - sh^ X = (ch X - sh x)(ch x + sh x ) ,в котором значения уменьшаемого и вычитаемого растут не так быстро.Т а б л и ц а 2.40У1,У2у1=1.00000000000у2=0.000000000005у 1=74.2099485248у2=74.203210577810у 1=11013.2329201у2=11013.2328747у 1=601302.142083у2=601302.142082X14152048у 1=1634508.68623у2= 1634508.68623у 1=242582597.704у2=242582597.704УА, 51.00000000000А=0,6=0%0.99999999989Л=0.000000000115=0.000000011%1.00008608813А=0.000086088136=0. 008608813 %А=0.146892815836=14.689281583%А=16=100 %А=16=100 %1.146892815830.000000000000.000000000002 Простейшие конструкции языкаТема оценки погрешностей вычислений будет продолжена в параграфе3.5.Задания для самопроверкиЗадание 1.

Измените в программе примера 2.3 тип х на double. Объяснитеполученные результаты.Задание 2. Разработайте программу, которая «проверяет» формулуsin^ X + cos2x= 1.Убедитесь, что при любых допустимых значениях х мы получаем правильныерезультаты. Почему?3. УПРАВЛЯЮЩИЕ ОПЕРАТОРЫ ЯЗЫКАПрограммы, содержащие в разделе операторов только операторы ввода-вывода иоператоры присваивания, выполняются последовательно оператор за оператором. Такиепрограммы ндзыътогт линейными, они реализуют линейный процесс вычислений.

Для ор­ганизации разветвленных и циклических процессов вычислений используют управляю­щие операторы языка, определяющие последовательность выполнения операторов про­граммы. В данной главе мы рассмотрим управляющие операторы языка Borland Pascal, ккоторым относятг опсратор условной передачи управления, оператор выбора, операторыорганизации циклов, а также неструктурные операторы и процедуры передачи управле­ния.3.1.

Оператор условной передачи управленияОператор условной передачи управления (рис. 3.1) используют для про­граммирования ветвлений, т. е. ситуаций, когда возникает необходимостьпри выполнении условия реализовывать одни действия, а при нарушении другие. Условие записывают в виде логического выражения, в зависимостиот результата которого осуществляется выбор одной из ветвей: если резуль­тат true, то выполняется оператор, следующий за служебным словом then,иначе - оператор, следующий за служебным словом else.В каждой ветви допускается запись одного оператора (в том числе и дру­гого jf) или составного оператора.Составным оператором в Borland Pascal называют последовательностьоператоров, заключенную в операторные скобки begin...end.

Операторы по­следовательности отделяют друг от друга точкой с запятой «;». Перед endточку с запятой можно не ставить. Перед else точка с запятой не ставитсяникогда, так как в этом случае запись условного оператора продолжается.ifЛогическоевыражениеthenОператорelseОператоргРис.

3.1. Синтаксическая диаграмма <Оператор условной передачи управления>50i. Управляющие операторы языкаДействие 1Действие 2Действие 1Действие 2Рис. 3.2. Фрагменты алгоритмовВ соответствии с синтаксической диаграммой допускается использоватьоператор условной передачи управления с неуказанной (пустой) ветвью else.В некоторых случаях использование укороченных конструкций может приве­сти к неоднозначности, например, не понятно, какому из двух вариантовсхем алгоритма (рис. 3.2) соответствует фрагмент:[/'<условие1> thenif <условие 2> then<действие ]>else <действие 2>;В этих случаях используется так называемое правило вложенности: аль­тернатива else всегда относится к блиэюайшему if, что соответствует вари­анту алгоритма на рис.

3.2, а. Если необходимо реализовать вариант алгорит­ма, изображенный на рис. 3.2, б, то используют операторные скобки://'<условие1> thenbeginif <условие 2> then<действие 1>endelse <действие 2>;Пример 3.1. Разработать программу, которая вычисляет значение функ­ции, заданной следующим образом:У =при |х| < 1;• при 1 < |х| < 2;4иначе.1I А ^'Программа должна начинаться с ввода значения аргумента. Затем в за­висимости от того, в какой интервал попадает введенное значение, вычисля51Часть 1.

Основы алгоритмизации и процедурное программированиеРис. 3.3. Схема алгоритма программы вычисленияфункции, заданной на отрезках, в заданной точкеем значение функции по одному из заданных выражений. Алгоритм решенияданной задачи представлен на рис. 3.3. Текст программы имеет следующийвид:Program ex;Var x,y:real;BeginWriteLnCВведите значение аргумента.');ReadLn(x);ifabs(x)<=l then y:=abs(x){первый отрезок}elseifabs(x)<=2 theny:=sqr(x){второй отрезок}else y:-4;{третий отрезок}WriteLnCTIpu x= \ x:8:5, * y=^ \ y:8:5);End.3.2, Практикум.

Тестирование программКак уже упоминалось в параграфе 1.4, тестированием называют процессвыполнения программы с различными исходными данными, для которых за­ранее известны результаты. Интуитивно начинающие программисты обычно523, Управляющие операторы языкацелью тестирования считают проверку правильности программы, что совер­шенно не верно. В большинстве случаев перебрать все возможные комбина­ции данных невозможно, а выборочное тестирование не доказывает правиль­ности программы, так как то, что программа работает на десяти наборах дан­ных, не означает, что она будет давать правильные результаты на одиннадца­том наборе. Поэтому целью тестирования является обнаружение ошибок.Соответственно хорошим следует считать тест, обнаруживающий ошиб­ку. Для формирования таких тестов определены две стратегии:• «белого» или «прозрачного ящика» (тестирование маршрутов);• «черного ящика».При тестировании с использованием стратегии «белого ящика» тестыстараются подобрать так, чтобы хотя бы один раз пройти по каэюдой ветвиалгоритма.

Стратегия имеет существенный недостаток: по ней принципи­ально невозможно обнаружить пропущенный маршрут.При тестировании с использованием стратегии «черного ящика» струк­тура программы считается неизвестной, и тесты подбирают так, чтобы про­верить выполнение всех функций программы, а затем отследить реакцию наввод некорректных данных.На практике лучшие результаты получают, используя при разработке те­стов обе стратегии.Пример 3,2. Даны длины сторон треугольника, определить вид треу­гольника и его площадь. Выполнить контроль вводимых чисел.Сама задача решается просто.

Вид треугольника определим, сравниваястороны, а площадь вычислим по формуле Герона. Задание «выполнить кон­троль вводимых чисел» означает, что программа в случае ввода чисел, кото­рые не могут интерпретироваться как стороны треугольника, должна выда­вать сообщение об ошибках данных. Три числа нельзя интерпретировать какстороны треугольника, если хотя бы одно из них меньше или равно О, илисумма двух любых чисел больше третьего.На рис.

3.4 представлена схема алгоритма данной программы, а самапрограмма имеет следующий вид:Program ex;Var АЛС,РЛ'геа1;BeginWrite СВведите длины сторон треугольника: *);ReadLn(A,B,C);if (A<=0)or(B<^0)or(C<^0) thenWriteLn('Числа долэюны быть полоэюителъными.')elseif(A+B<=C) or (A+C<^B) or (B+C<^A) thenWriteLn(Треугольник с такими сторонами не существует.

*)53Часть 1. Основы алгоритмизации и процедурное программированиеА ^ О или В < О или С ^ ОL"Числаменьше О" iА+В <. С или А+С < В или В+С <. АА=ВиВ=СА = В илиВ = С илиЛ =С^"Равнобедренный/ /"Разностороннийтреугольник" / / треугольник" /P:=(A+B-fC)/2IS:=\/P(P.A){P.B)(PnC)IВывод//{КонецjРис. 3.4. Схема алгоритма программы определения вида треугольникаelsebegintf(A^B)and(B=C)thenWriteLn(Треугольник равносторонний,')elseif(A^B)or(A=C)or(B^C)thenWriteLn(Треугольник равнобедренный, *)else WriteLn(Треугольник разносторонний, *);P-(A+B+C)/2;S:=sqrt(P*(P'A) ""(P-B) ""(P-C));54J.

Управляющие операторы языкаТаблица1 АВСОжидаемый результатОбъект проверки111Равносторонний, 8=0.43Маршрут223Равнобедренный, S=1.98Маршрут434Равнобедренный, S~5.56Маршрут2.52.54Равнобедренный, 8=3.00Тип данных и результата1 3.142.6Разносторонний, 8=4.03Тип данных и результата'000Числа должны быть >0Недопустимые данные1-1.51Числа должны быть >0Недопустимые данные011Числа должны быть >0Недопустимые данные120Числа должны быть >0Недопустимые данные843Тр^гольник не существует.Недопустимые данные225Треугольник не существуетНедопустимые данные394Треугольник не существуетНедопустимые данные3.1|WriteLnCwioufadbтреугольника: \S:8:2, 'единиц/);endEndПримерный набор тестов для обнаружения ошибок в рассматриваемойпрограмме приведен в табл.

Характеристики

Тип файла
PDF-файл
Размер
13,06 Mb
Тип материала
Учебное заведение
Неизвестно

Список файлов книги

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6264
Авторов
на СтудИзбе
317
Средний доход
с одного платного файла
Обучение Подробнее