КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
ЛЕКЦИЯ 8. Технология подготовки и решения задач с помощью компьютера7.16. 7.15. 7.11. 7.8. 7.6. 7.1. а) (x+y)/(x-1/2)-(x-z)/(x*y); б) (1+z)*(x+y/z)/(a-1/(1+x*x)); в) x**(n*(m+2)) + x**(n**m); г) (a+b)**n/(1+a/(a**m-b**(m-n))); д) (a[i]**(2*l) + b[j+1]**(2*k)) * (3**n-x*x*y)/(z-(d[i,j+1]+1)/(z+ y/sqrt(t*t+x*y*z))); е) sqrt(abs(sin(x)**2))/(3.01*x - exp(2*x)); ж) abs(cos(x**3) - sin(y)**2) / (abs(ln(x))**(1/4) + x*y); з) ln(y**(-sqrt(abs(x+1)))) * sin(arctg(z))**2; и) r[i,j]**abs(x-y) - 0.15*abs(sin(exp(-z**8))); к) a**((x+y)/2) - ((x-1)/(abs(y)+1))**(1/3)*exp(-(y+u/2)).7.2. а) ; б) ; в) ; г) ; д) ; е) ; ж) ; з) ; и) ; к) ; л) ; м) ; н) ; о) ; п) ; р) ; с) ; т) ; у) ; ф) . 7.3. б) 16; в) 5,5; г) -256; д) 3; е) -2; ж) 1.8. 7.4. б) среднее арифметическое: (a+b+c+d)/4; среднее геометрическое: (a*b*c*d)**(1/4); в) sqrt(x*x+y*y); г) sin(x*3.14/180); д) 6*a*a; е) sqrt(3)*a/2; ж) абсцисса: (c1*b2-c2*b1)/(b1*a2-b2*a1); ордината: (c2*a1-c1*a2)/(b1*a2-b2*a1). 7.5. б) нет; в) да; г) да; д) да; е) нет; б) (x < a) или (x > b); в) ((x>=a) и (x<=b)) или ((x>=c) и (x<=d)); г) ((x < a) или (x > b)) и ((x < c) или (x > d)); д) mod(k,2)=1; е) (mod(k,5)=0) и (k > 99) и (k < 1000); ж) (mod(i,2)=1) и (mod(j,2)=0); з) a1*b2=a2*b1; и) (c < a) и (b > a); к) (a=-b) или (a=-c) или (a=-d) или (b=-c) или (b=-d) или (c=-d); л) ((mod(a,2)=0) и (mod(b,2)=0)) или ((mod(a,2)=0) и (mod(c,2)=0)) или ((mod(b,2)=0) и (mod(с,2)=0)); м) (a>0) и (b>0) и (c>0) и (a+b>c) и (a+c>b) и (b+c>a); н) ((a1*b2=a2*b1) и (a1*c2=a2*c1)) или ((a1*c2=a2*b1) и (a1*b2=a2*c1)) или ((a1*c2=b2*b1) и (a1*a2=b2*c1)) или ((a1*a2=b2*b1) и (a1*c2=b2*c1)) или ((a1*a2=c2*b1) и (a1*b2=c2*c1)) или ((a1*b2=c2*b1) и (a1*a2=c2*c1)); о) (y>5-5*x) и (y<5-x) и (y>0); п) (y<5-5*x)) или (y>5-x) или (y<0); р) (a=b) и (c=d) и (b=c).7.7. б) в) г) д) ж) з) и) к) а) (y>=1-x) и ((y<=0) или (x<=0)); б) (y<1) и (y>=x) и (y>=-x) (вариант ответа: (y<1) и (y>=abs(x))); в) (abs(x)<=1) и (abs(y)<1); г) ((x-1)*(x-1)+y*y<=4) и (y<=3-x) и (y>=x-3); д) (abs(x)<=3) и (abs(y)<=3) и (x*x+y*y>=9) и ((x>=0) или (y<=0)); е) (abs(x)+abs(y)<=2) и (sign(x)<>sign(y)) или (x*x+y*y<=4) и ((y>=2-x) или (y<=-x-2)); ж) ((y>=x*x) или (y<=-x*x)) и ((x>=y*y) или (x<=-y*y)); з) (((x+2)*(x+2)+y*y<=4) и ((x+2)*(x+2)+y*y>=1)) или (x>=-1); и) (((y<=0)=(y>=-x)) или ((x>=0)=(y>=x))) и (x*x+y*y<=1).7.9. б) a=-19; b=-114; c=17; в) a=3; b=1,875; c=15; г) a=7; b=3; c=735; д) a=10; b=2; c=120; е) a=4; b=7; c=3; ж) a=16; b=100, c=11200. 7.10. б) c:=x[1]; x[1]:=x[2]; x[2]:=c; в) a[i]:=(a[i-1]+a[i+1])/2; a[i+1]:=0; a[i-1]:=a[i-1]+0.5; г) u:=max(max(x, y), z) + min(min(x-z,y+z), min(y,z)). а) если x <= -100 б) если x*x+y*y <= 1 то y:=sign(x)*abs(x)**(1/7) то z:=x*x+y*y иначе если x < 100 иначе если y>=x то y:=sign(x)*abs(x)**(1/3) то z:=x+y иначе y:=sqrt(x) иначе z:=0.5 все все все все в) если x < 0 г) выбор то z:=lg(-x) при с=0: z:=1 иначе z:=sqrt(x+1) при с=1: z:=x все при с=2: z:=3*x*x - 1/2 если z>=0 при с=3: z:=x*x*x - 3*x/2 то F:=2*z+1 иначе z:=2*x**4 - 3*x/2 иначе F:=sin(z) все все д) если abs(x)+abs(y) < r е) если x>1 то z:=sqrt(x*x+y*y) то если y>1 иначе z:=max(abs(x), abs(y)) то v:=x+y все иначе v:=x-y всеж) если (x-a)**2 +(y-b)**2 < r*r иначе если y>0 то z:=abs(x)+abs(y) то v:=y-x иначе z:=x+y иначе v:=-x-y все все все7.12. б) в) г) д) 7.13. б) 81; в) 21; д) 11; е) 44. 7.14. б) 0; в) 13; д) 52; е) 14. б) алг Треугольник1(арг вещ a,b,UgolC, рез вещ c, UgolA, UgolB, S) нач ввод a, b, UgolC c:=sqrt(a*a+b*b-2*a*b*cos(UgolC)) UgolA:=arcsin(a*sin(UgolC)/c) UgolB:=arcsin(b*sin(UgolC)/c) S:=b*c*sin(UgolA)/2 вывод c, UgolA, UgolB, S кон в) алг Треугольник2(арг вещ a,b,c, рез вещ Radius,UgolA) нач вещ p ввод a,b,c p:=(a+b+c)/2 UgolA:=2*arctg(sqrt((p-b)*(p-c)/(p*(p-a))))*180/3.14 Radius:=a*b*c/(4*sqrt(p*(p-a)*(p-b)*(p-c))) вывод Radius, UgolA кон г) алг Объем и Площадь Пирамиды(арг вещ a,UgolAGrad, рез вещ V, S) нач вещ H,SBase,UgolARad | H - высота пирамиды; SBase - площадь основания ввод a,UgolAGrad UgolARad:=UgolAGrad*3.14/180 SBase:=a*a*sqrt(3)/4 H:=a*sqrt(3)/6*tg(UgolARad) V:=SBase*H/3 S:=SBase*(1+1/cos(UgolARad)) вывод V, S кон д) алг Объем и Площадь конуса(арг вещ RBig,RSmall,Ugol, рез вещ V, S) нач вещ H,L ввод RBig,RSmall,Ugol H:=(RBig-RSmall)*tg(Ugol) L:=(RBig-RadSmall)/cos(Ugol) V:=1/3*3.14*H*(RSmall**2 + RBig**2 + RSmall*RBig) S:=3.14*L*(RBig+RSmall) вывод V, S кон е) алг Параметры пирамиды (арг вещ a,UgolA, рез вещ V, S, Sесtion) нач вещ H ввод a,UgolA H:=a*sqrt(2)/2*tg(UgolA) V:=1/3*a*a*H Sесtion:=a*H*sqrt(2)/2 S:=a*a*(1+sqrt(2*tg(UgolA)**2+1)) вывод V, S, Sесtion конб) алг Количество положительных(арг вещ a,b,c, рез цел k) надо | k - количество положительных чисел среди чисел a,b,c нач ввод a,b,c; k:=0 если a>0 то k:=k+1 все если b>0 то k:=k+1 все если c>0 то k:=k+1 все вывод k кон в) алг Преобразование(арг рез вещ a,b) надо |меньшее из a,b увеличено вдвое нач ввод a,b если a>b то b:=b*2 иначе a:=a*2 все вывод a,b кон г) алг Подобие треугольников(арг вещ a,b,c,d, рез лог Otvet) дано | a,b и c,d - катеты двух треугольников надо | Otvet=да, если треугольники подобны нач ввод a,b,c,d если (a*d=с*b) или (a*c=d*b) то Otvet:= да иначе Otvet:= нет все вывод Otvet кон д) алг Точки(арг вещ xA,yA,xB,yB,xC,yC, рез лит Otvet) нач вещ DistA,DistB,DistC ввод xA,yA,xB,yB,xC,yC DistA:=sqrt(xA**2 + yA**2) DistB:=sqrt(xB**2 + yB**2) DistC:=sqrt(xC**2 + yC**2) если (DistA < DistB) и (DistA < DistC) то Otvet:="Это точка А" иначе если DistB < DistC то Otvet:="Это точка B" иначе Otvet:="Это точка C" все все вывод Otvet кон е) алг Принадлежность кольцу(арг вещ x,y,r1,r2, рез лог Otvet) дано | r2>r1 надо | Otvet=да, если точка (x,y) принадлежит кольцу | c внутренним радиусом r1 и внешним радиусом r2 нач ввод x,y,r1,r2 если (x*x+y*y<=r2*r2) и (x*x+y*y>=r1*r1) то Otvet:= да иначе Otvet:= нет все вывод Otvet кон ж) алг Упорядочение по возрастанию(арг рез вещ a, b, c) надо | числа a, b, c упорядочены по возрастанию нач вещ t ввод a, b, c если a>b то t:=a; a:=b; b:=t | меняются местами значения a и b все если a>c то t:=a; a:=c; c:=t | меняются местами значения a и c все если b>c то t:=b; b:=c; c:=t | меняются местами значения b и c все вывод a, b, c кон
8.1. Какие этапы включает в себя решение задач с помощью компьютера? Решение задач с помощью компьютера включает в себя следующие основные этапы, часть из которых осуществляется без участия компьютера.
8.2. Что называют математической моделью?
Всякое явление природы бесконечно в своей сложности. Проиллюстрируем это с помощью примера, взятого из книги В.Н. Тростникова "Человек и информация" (Издательство "Наука", 1970). ... Обыватель формулирует математику задачу следующим образом: "Сколько времени будет падать камень с высоты 200 метров?" Математик начнет создавать свой вариант задачи приблизительно так: "Будем считать, что камень падает в пустоте и что ускорение силы тяжести 9,8 метра в секунду за секунду. Тогда..." — Позвольте, — может сказать "заказчик", — меня не устраивает такое упрощение. Я хочу знать точно, сколько времени будет падать камень в реальных условиях, а не в несуществующей пустоте. — Хорошо, — согласится математик. — Будем считать, что камень имеет сферическую форму и диаметр... Какого примерно он диаметра? — Около пяти сантиметров. Но он вовсе не сферический, а продолговатый. — Тогда будем считать, что он имеет форму эллипсоида с полуосями четыре, три и три сантиметра и что он падает так, что большая полуось все время остается вертикальной. Давление воздуха примем равным 760 мм ртутного столба, отсюда найдем плотность воздуха... Если тот, кто поставил задачу на "человеческом" языке не будет дальше вмешиваться в ход мысли математика, то последний через некоторое время даст численный ответ. Но "потребитель" может возражать по-прежнему: камень на самом деле вовсе не эллипсоидальный, давление воздуха в том месте и в тот момент не было равно 760 мм ртутного столба и т.д. Что же ответит ему математик? Он ответит: "Точное решение реальной задачи вообще невозможно. Мало того, что форму камня, которая влияет на сопротивление воздуха, невозможно описать никаким математическим уравнением; его вращение в полете также неподвластно математике из-за своей сложности. Далее, воздух не является однородным, так как в результате действия случайных факторов в нем возникают флуктуации колебания плотности. Если пойти ещё глубже, нужно учесть, что по закону всемирного тяготения каждое тело действует на каждое другое тело. Отсюда следует, что даже маятник настенных часов изменяет своим движением траекторию камня. Короче говоря, если мы всерьез захотим точно исследовать поведение какого-либо предмета, то нам предварительно придется узнать местонахождение и скорость всех остальных предметов Вселенной. А это, разумеется, невозможно.... Чтобы описать явление, необходимо выявить самые существенные его свойства, закономерности, внутренние связи, роль отдельных характеристик явления. Выделив наиболее важные факторы, можно пренебречь менее существенными. Наиболее эффективно математическую модель можно реализовать на компьютере в виде алгоритмической модели — так называемого "вычислительного эксперимента" (см. [1], параграф 26). Конечно, результаты вычислительного эксперимента могут оказаться и не соответствующими действительности, если в модели не будут учтены какие-то важные стороны действительности. Итак, создавая математическую модель для решения задачи, нужно:
При построении математических моделей далеко не всегда удается найти формулы, явно выражающие искомые величины через данные. В таких случаях используются математические методы, позволяющие дать ответы той или иной степени точности. Существует не только математическое моделирование какого-либо явления, но и визуально-натурное моделирование, которое обеспечивается за счет отображения этих явлений средствами машинной графики, т.е. перед исследователем демонстрируется своеобразный "компьютерный мультфильм", снимаемый в реальном масштабе времени. Наглядность здесь очень высока. 8.3. Какие основные этапы содержит процесс разработки программ? Процесс разработки программы можно выразить следующей формулой: На начальном этапе работы анализируются и формулируются требования к программе, разрабатывается точное описание того, что должна делать программа и каких результатов необходимо достичь с ее помощью. Затем программа разрабатывается с использованием той или иной технологии программирования (например, структурного программирования). Полученный вариант программы подвергается систематическому тестированию — ведь наличие ошибок в только что разработанной программе это вполне нормальное закономерное явление. Практически невозможно составить реальную (достаточно сложную) программу без ошибок. Нельзя делать вывод, что программа правильна, лишь на том основании, что она не отвергнута машиной и выдала результаты. Все, что достигнуто в этом случае, это получение каких-то результатов, не обязательно правильных. В программе при этом может оставаться большое количество логических ошибок. Ответственные участки программы проверяются с использованием методов доказательства правильности программ. Для каждой программы обязательно проводятся работы по обеспечению качества и эффективности программного обеспечения, анализируются и улучшаются временные характеристики. 8.4. Как проконтролировать текст программы до выхода на компьютер? Текст программы можно проконтролировать за столом с помощью просмотра, проверки и прокрутки.
8.5. Для чего нужны отладка и тестирование?
Отладка и тестирование — это два четко различимых и непохожих друг на друга этапа:
Английский термин debugging (" отладка ") буквально означает " вылавливание жучков ". Термин появился в 1945 г., когда один из первых компьютеров — "Марк-1" прекратил работу из-за того, что в его электрические цепи попал мотылек и заблокировал своими останками одно из тысяч реле машины. 8.6. В чем заключается отладка? В современных программных системах (Turbo Basic, Turbo Pascal, Turbo C и др.) отладка осуществляется часто с использованием специальных программных средств, называемых отладчиками. Эти средства позволяют исследовать внутреннее поведение программы. Программа-отладчик обычно обеспечивает следующие возможности:
При отладке программ важно помнить следующее:
8.7. Что такое тест и тестирование? Как бы ни была тщательно отлажена программа, решающим этапом, устанавливающим ее пригодность для работы, является контроль программы по результатам ее выполнения на системе тестов.
Но, как справедливо указывал известный теоретик программирования Э. Дейкстра, тестирование можетпоказать лишь наличие ошибок, но не их отсутствие. Нередки случаи, когда новые входные данные вызывают "отказ" или получение неверных результатов работы программы, которая считалась полностью отлаженной. Для реализации метода тестов должны быть изготовлены или заранее известны эталонные результаты.
В противном случае имеется опасность невольной подгонки вычисляемых значений под желаемые, полученные ранее на машине. 8.8. Какими должны быть тестовые данные? Тестовые данные должны обеспечить проверку всех возможных условий возникновения ошибок:
Пример. Система тестов для задачи нахождения корней квадратного уравнения ax2 + bx + c = 0:
8.9. Из каких этапов состоит процесс тестирования? Процесс тестирования можно разделить на три этапа. 1. Проверка в нормальных условиях. Предполагает тестирование на основе данных, которые характерны для реальных условий функционирования программы. 2. Проверка в экстремальных условиях. Тестовые данные включают граничные значения области изменения входных переменных, которые должны восприниматься программой как правильные данные. Типичными примерами таких значений являются очень маленькие или очень большие числа и отсутствие данных. Еще один тип экстремальных условий — это граничные объемы данных, когда массивы состоят из слишком малого или слишком большого числа элементов. 3. Проверка в исключительных ситуациях. Проводится с использованием данных, значения которых лежат за пределами допустимой области изменений. Известно, что все программы разрабатываются в расчете на обработку какого-то ограниченного набора данных. Поэтому важно получить ответ на следующие вопросы: Наихудшая ситуация складывается тогда, когда программа воспринимает неверные данные как правильные и выдает неверный, но правдоподобный результат. Программа должна сама отвергать любые данные, которые она не в состоянии обрaбатывать правильно. 8.10. Каковы характерные ошибки программирования? Ошибки могут быть допущены на всех этапах решения задачи — от ее постановки до оформления. Разновидности ошибок и соответствующие примеры приведены в таблице:
8.11. Является ли отсутствие синтаксических ошибок свидетельством правильности программы? Обычно синтаксические ошибки выявляются на этапе трансляции. Многие же другие ошибки транслятору выявить невозможно, так как транслятору неизвестны замыслы программиста.
Примеры синтаксических ошибок:
8.12. Какие ошибки не обнаруживаются транслятором? Существует множество ошибок, которые транслятор выявить не в состоянии, если используемые в программе операторы сформированы верно. Приведем примеры таких ошибок. Логические ошибки:
Ошибки в циклах:
Ошибки ввода-вывода; ошибки при работе с данными:
Ошибки в использовании переменных:
Ошибки при работе с массивами:
Ошибки в арифметических операциях:
Все эти ошибки обнаруживаются с помощью тестирования. 8.13. В чем заключается сопровождение программы?
Многократное использование разработанной программы для решения различных задач заданного класса требует проведения следующих дополнительных работ:
Применительно ко многим программам работы по сопровождению поглощают более половины затрат, приходящихся на весь период времени существования программы (начиная от выработки первоначальной концепции и кончая моральным ее устареванием) в стоимостном выражении. Программа, предназначеная для длительной эксплуатации, должна иметь соответствующую документацию и инструкцию по её использованию.
Дата добавления: 2014-11-08; Просмотров: 513; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |