Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТП. Лабораторный практикум(вариант №5).doc
Скачиваний:
5
Добавлен:
01.05.2025
Размер:
1 Мб
Скачать
☆
        1. Имеется треугольник Паскаля

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

1 5 10 10 5 1

………………………………

Найдите заданный элемент треугольника.

7. Найдите натуральное наименьшее решение уравнения

a2+b2=c2+d2 ab, cd.

Пример 12+72=52+52 (Задача Рамануджана).

8. Найдите все делители заданного числа n.

9. Из натуральных чисел от 1 до n выберете простые числа.

10. Найдите все числа близнецы на интервале от а до b. Близнецы - два нечетных простых числа, разнящихся на две единицы, например: 5 и 7, 11 и 13, 17 и 19 и т.д.

11. В интервале от «а» до «b» напечатайте совершенные числа. Совершенным числом называется число, равное сумме всех своих делителей, меньших чем оно само, например : 28=1+2+4+7+14.

12. На интервале от «а» до «b» найдите дружественные числа. Дружественные числа по Пифагору такие, что каждое равно сумме всех делителей другого, исключая само это число. Например, 220 284. Делители числа 220 это 1+2+4+5+10+11+20+22+44+55+110=284, а сумма делителей числа 284 –это 1+2+4+71+142=220.

13. На интервале от «а» до «b» найдите автоморфные числа. Автоморфным числом называется такое число, которое равно последним цифрам своего квадрата. (52=25, 252=625).

14. В книге имеется n страниц. Сколько цифр понадобится. Чтобы занумеровать все страницы этой книги.

15. Найдите счастливые троллейбусные билеты, если номера билетов, принадлежат промежутку от «а» до «b». Счастливый билет 627 294, 6+2+7=2+9+4.

16. Существуют натуральные числа, равные сумме кубов своих цифр, например 370, 33+73+03=370. Найдите такие числа в интервале от «а» до «b».

17. Числа, состоящие из n1 цифр, называют числами Армстронга, если сумма его цифр, возведенных в n- степень, равна самому этому числу, например: 153=13+53+33 или 1634=14+64+34+44. Найдите такие числа на интервале от «а» до «b».

18. Напечатайте любое введенное число n в двоичной форме.

19. Напечатайте числа палиндромы из интервала от «а» до «b». Числа палиндромы 121, 131.

20. Представьте любое введенное число римскими цифрами.

I IV V IX X XL L XC C CD D CM M

1 4 5 9 10 40 50 90 100 400 500 900 1000

Лабораторная работа №2. Стиль программирования

Цель работы: приобретение навыков разработки программных средств, представленных по правилам хорошего стиля программирования.

Краткие теоретические сведения

Стиль программирования связан с удобочитаемостью программы.

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

Правило стандартизации стиля заключается в следующем: если существует более одного способа сделать что-либо и выбор произвольный, остановитесь на одном способе, и всегда его придерживайтесь. Программное средство, представленное в хорошем стиле имеет комментарии (пояснительные, вводные иногда оглавления), значимые идентификаторы, хорошо воспринимаемый текст ПС.

Пользовательский интерфейс также должен быть разработан в хорошем стиле, придерживаясь следующих рекомендаций:

  • пользовательский интерфейс должен базироваться на терминах и понятиях, знакомых пользователю;

  • пользовательский интерфейс должен быть единообразным;

  • пользовательский интерфейс должен позволять пользователю исправлять собственные ошибки;

  • пользовательский интерфейс должен позволять получение пользователем справочной информации: как по его запросу, так и генерируемой ПС.

Отладка ПС  это деятельность, направленная на обнаружение и исправление ошибок в ПС с использованием процессов выполнения его программ. Тестирование ПС  это процесс выполнения его программ на некотором наборе данных, для которого заранее известен результат применения или известны правила поведения этих программ. Указанный набор данных называется тестовым или просто тестом. Таким образом, отладку можно представить в виде многократного повторения трех процессов: тестирования, в результате которого может быть констатировано наличие в ПС ошибки, поиска места ошибки в программах и документации ПС и редактирования программ и документации с целью устранения обнаруженной ошибки. Другими словами:

Отладка = Тестирование + Поиск ошибок + Редактирование

В зарубежной литературе отладку часто понимают только как процесс поиска и исправления ошибок (без тестирования), факт наличия которых устанавливается при тестировании. Иногда тестирование и отладку считают синонимами. В нашей стране в понятие отладки обычно включают и тестирование, поэтому мы будем следовать сложившейся традиции.

Тестирование – процесс многократного повторения программы с целью обнаружения ошибок. Тестирование – составная часть отладки.

Отладка имеет место тогда, когда программа со всей очевидностью работает неправильно. Поэтому отладка начинается всегда в предвидении отказа программы. Если же оказывается, что программа работает верно, то она тестируется. Часто случается так, что после прогона тестов программа вновь подвергается отладке. Таким образом, тестирование устанавливает факт наличия ошибки, а отладка выявляет ее причину.

Основная цель выделения отладки и тестирования как отдельных этапов создания программы заключается в том, чтобы обратить внимание обязательности обеих стадий и на необходимость специального планирования временных затрат по каждой из них в отдельности.

Нельзя гарантировать, что тестированием можно установить наличие каждой имеющейся в ПС ошибки. Поэтому возникает две задачи. Первая задача: подготовить такой набор тестов и применить к ним ПС, чтобы обнаружить в нем по возможности большее число ошибок. Однако чем дольше продолжается процесс тестирования (и отладки в целом), тем большей становится стоимость ПС. Отсюда вторая задача: определить момент окончания отладки ПС (или отдельной его компоненты). Признаком возможности окончания отладки является полнота охвата пропущенными через ПС тестами (т.е. тестами, к которым применено ПС) множества различных ситуаций, возникающих при выполнении программ ПС, и относительно редкое проявление ошибок в ПС на последнем отрезке процесса тестирования. Последнее определяется в соответствии с требуемой степенью надежности ПС, указанной в спецификации его качества.

Существуют следующие методы тестирования ПС:

  1. Статическое тестирование – ручная проверка программы за столом.

  2. Детерминированное тестирование – при различных комбинациях исходных данных.

  3. Стохастическое – исходные данные выбираются произвольно, на выходе определяется качественное совпадение результатов или примерная оценка.

Имеется два подхода к тестированию:

  1. Структурное тестирование – метод «белого ящика», тестируется логика программы, внутренняя структура программы.

  2. Функциональное тестирование – метод «черного ящика»- тестируется спецификация, т.е. вход/выход без учета знаний о ее структуре.

В нашей стране различаются два основных вида отладки (включая тестирование): автономную и комплексную отладку ПС.

Автономная отладка ПС означает последовательное раздельное тестирование различных частей программ, входящих в ПС, с поиском и исправлением в них фиксируемых при тестировании ошибок. Она фактически включает отладку каждого программного модуля и отладку сопряжения модулей.

Комплексная отладка означает тестирование ПС в целом с поиском и исправлением фиксируемых при тестировании ошибок во всех документах (включая тексты программ ПС), относящихся к ПС в целом. К таким документам относятся определение требований к ПС, спецификация качества ПС, функциональная спецификация ПС, описание архитектуры ПС и тексты программ ПС.

Содержание отчета

  1. Титульный лист.

  2. Задание кафедры, соответствующее варианту.

  3. Цель работы.

  4. Формализованный алгоритм.

  5. Листинг программы.

  6. Контрольный пример.

  7. Выводы по работе.

Задание

1. Сгенерировать две последовательности по 50 случайных чисел с равномерным распределением в диапазоне [1..6]. Полученные последовательности расположить в одном массиве по возрастанию. Вычислить среднее значение и дисперсию для полученной последовательности и вывести на печать в виде гистограммы, разделив диапазон на десять интервалов.

2. Сгенерировать последовательность 100 случайных чисел с равномерным законом распределения в диапазоне от 0 до 100. Упорядочить полученную последовательность по возрастанию. Образовать новую последовательность, состоящую из разности соседних элементов последовательности Хi-Xi-1. Для полученной последовательности определить среднее значение, дисперсию и вывести на печать гистограмму распределения, разделив диапазоны на 10 интервалов.

3. Сгенерировать последовательность 100 случайных чисел с нормальным законом распределения (mx=1, dx=1). Упорядочить полученную последовательность, расположив элементы по возрастанию. Образовать новую последовательность, состоящую из разности соседних элементов Хi-Xi-1. Для полученной последовательности вычислить среднее значение, дисперсию и вывести ее на печать в виде гистограммы, разбив диапазон на 10 интервалов.

4. Сгенерировать последовательность 100 случайных чисел Хi с экспоненциальным законом распределения с параметром =0,1. Сформировать новую последовательность, состоящую из элементов yi=yi-1+xi (y1=x1). Для полученной последовательности вычислить среднее значение, дисперсию и вывести ее на печать в виде гистограммы. Разделив диапазон на 10 интервалов.

5. Сгенерировать последовательность 100 случайных чисел Хi с равномерным законом распределения в диапазоне от 1 до 10. Сформировать новую последовательность, состоящую из элементов yi=yi-1+xi (y1=x1). Для полученной последовательности вычислить среднее значение, дисперсию, вывести ее на печать в виде гистограммы, разделив диапазон на 10 интервалов.

6. Сгенерировать последовательность 100 случайных чисел Хi с нормальным законом распределения (mx=5, dx=2). Сформировать новую последовательность, состоящую из элементов yi=yi-1+xi (y1=x1). Для полученной последовательности вычислить среднее значение, дисперсию и вывести ее на печать в виде гистограммы, разбив диапазон на десять интервалов.

7. Сгенерировать последовательность 100 случайных чисел с экспоненциальным законом распределения с параметром =0,5. Упорядочить полученную последовательность, расположив элементы по возрастанию. Образовать новую последовательность, состоящую из разности соседних элементов Хi-Xi-1. Для полученной последовательности вычислить среднее значение, дисперсию и вывести ее на печать в виде гистограммы, разбив диапазон на десять интервалов.

8. Сгенерировать три последовательности по 30 случайных чисел каждая. Числа в каждой последовательности равномерно распределены в диапазонах от 0 до 5, от 2 до 8, от 4 до 10. Свести их в один массив, расположив по возрастанию. Для сформированного массива вычислить среднее значение, дисперсию и вывести результаты на печать в виде гистограммы, разбив диапазон на 10 интервалов.

9. Сгенерировать три последовательности по 30 случайных чисел. Числа в каждой последовательности распределены по нормальному закону с параметрами mx=2, dx=4; mx=3, dx=3; mx=4, dx=4. Свести все числа в один массив, упорядочив по возрастанию. Для сформированного массива вычислить среднее значение, дисперсию и вывести на печать результаты в виде гистограммы, разбив диапазон на 10 интервалов.

10. Сгенерировать три последовательности по 30 случайных чисел. В каждой последовательности числа распределены по экспоненциальному закону с параметрами =2, =3, =4. Свести числа в один массив, упорядочив их по возрастанию. Для сформированного массива вычислить среднее значение, дисперсию и вывести результаты на печать в виде гистограммы, разбив диапазон на 10 интервалов.

11. Сгенерировать последовательность из 50 случайных чисел с равномерным законом распределения в диапазоне от 0 до 10 и 50 случайных чисел с нормальным законом распределения mx=5, dx=4. Все числа свести в массив, расположив их по возрастанию. Вычислить среднее значение, дисперсию и вывести результаты на печать в виде гистограммы, разбив последовательность чисел на 10 интервалов.

12. Сгенерировать последовательность из 50 случайных чисел с нормальным законом распределения mx=5, dx=4 и последовательность из 50 случайных чисел с экспоненциальным законом распределения с параметром =5. Все числа свести в массив, расположив их по возрастанию. Вычислить среднее значение, дисперсию и вывести результаты на печать в виде гистограммы, разбив последовательность чисел на 10 интервалов.

13. Сгенерировать последовательность 100 случайных чисел с экспоненциальным законом распределения с параметром =2. Вычислить среднее значение и дисперсию. Построить гистограмму для полученного распределения, разбив числа на 10 интервалов.

14. Сгенерировать последовательность 80 случайных чисел Хi с нормальным законом распределения (mx=3, dx=4). Сформировать новую последовательность, состоящую из элементов yi=yi-1+xi (y1=x1). Для полученной последовательности вычислить среднее значение, дисперсию и вывести ее на печать в виде гистограммы, разбив диапазон на десять интервалов.

15. Сгенерировать последовательность 60 случайных чисел с экспоненциальным законом распределения с параметром =0,8. Упорядочить полученную последовательность, расположив элементы по возрастанию. Образовать новую последовательность, состоящую из разности соседних элементов Хi-Xi-1. Для полученной последовательности вычислить среднее значение, дисперсию и вывести ее на печать в виде гистограммы, разбив диапазон на десять интервалов.

16. Сгенерировать 4 последовательности по 30 случайных чисел каждая. Числа в каждой последовательности равномерно распределены в диапазонах от 0 до 5, от 2 до 8, от 4 до 10, от 6 до 12. Свести их в один массив, расположив по возрастанию. Для сформированного массива вычислить среднее значение, дисперсию и вывести результаты на печать в виде гистограммы, разбив диапазон на 10 интервалов.

17. Сгенерировать две последовательности по 50 случайных чисел. В каждой последовательности числа распределены по экспоненциальному закону с параметрами =2, =3. Свести числа в один массив, упорядочив их по возрастанию. Для сформированного массива вычислить среднее значение, дисперсию и вывести результаты на печать в виде гистограммы, разбив диапазон на 10 интервалов.

18. Сгенерировать последовательность из 60 случайных чисел с равномерным законом распределения в диапазоне от 0 до 8 и 50 случайных чисел с нормальным законом распределения mx=3, dx=4. Все числа свести в массив, расположив их по возрастанию. Вычислить среднее значение, дисперсию и вывести результаты на печать в виде гистограммы, разбив последовательность чисел на 10 интервалов.

19. Сгенерировать последовательность из 30 случайных чисел с нормальным законом распределения mx=2, dx=4 и последовательность из 70 случайных чисел с экспоненциальным законом распределения с параметром =4. Все числа свести в массив, расположив их по возрастанию. Вычислить среднее значение, дисперсию и вывести результаты на печать в виде гистограммы, разбив последовательность чисел на 10 интервалов.

20. Сгенерировать последовательность 100 случайных чисел с экспоненциальным законом распределения с параметром =3. Вычислить среднее значение и дисперсию. Построить гистограмму для полученного распределения, разбив числа на 10 интервалов.

Лабораторная работа №3. Модульное проектирование ПС, тестирование программ

Цель работы: разработка программных средств методом модульного проектирования с последующей отладкой и тестированием.

Краткие теоретические сведения

Приступая к разработке каждой программы ПС, следует иметь в виду, что она, как правило, является большой системой, поэтому мы должны принять меры для ее упрощения. Для этого такую программу разрабатывают по частям, которые называются программными модулями. А сам такой метод разработки программ называют модульным программированием. Программный модуль  это любой фрагмент описания процесса, оформляемый как самостоятельный программный продукт, пригодный для использования в описаниях процесса. Это означает, что каждый программный модуль программируется, компилируется и отлаживается отдельно от других модулей программы, и тем самым, физически разделен с другими модулями программы. Более того, каждый разработанный программный модуль может включаться в состав разных программ, если выполнены условия его использования, декларированные в документации по этому модулю. Таким образом, программный модуль может рассматриваться и как средство борьбы со сложностью программ, и как средство борьбы с дублированием в программировании (т.е. как средство накопления и многократного использования программистских знаний).

Программы разбиваются на модули для того, чтобы:

  • упростить их разработку и реализацию;

  • облегчить чтение программ;

  • упростить их настройку и модификацию;

  • облегчить работу с данными, имеющими сложную структуру;

  • избежать чрезмерной детализации алгоритмов;

  • обеспечить более выгодное размещение программ в памяти ЭВМ.

Не всякий программный модуль способствует упрощению программы. Выделить хороший с этой точки зрения модуль является серьезной творческой задачей. Для оценки приемлемости выделенного модуля используются некоторые критерии. Так, Хольт предложил следующие два общих критерия:

  • хороший модуль снаружи проще, чем внутри;

  • хороший модуль проще использовать, чем построить.

Майерс предлагает для оценки приемлемости программного модуля использовать более конструктивные его характеристики:

  • размер модуля;

  • прочность модуля;

  • сцепление с другими модулями;

  • рутинность модуля (независимость от предыстории обращений к нему).

Размер модуля измеряется числом содержащихся в нем операторов или строк. Модуль не должен быть слишком маленьким или слишком большим. Маленькие модули приводят к громоздкой модульной структуре программы и могут не окупать накладных расходов, связанных с их оформлением. Большие модули неудобны для изучения и изменений, они могут существенно увеличить суммарное время повторных трансляций программы при отладке программы. Обычно рекомендуются программные модули размером от нескольких десятков до нескольких сотен операторов.

Прочность(связность) модуля  это мера его внутренних связей. Чем выше прочность модуля, тем больше связей он может спрятать от внешней по отношению к нему части программы и, следовательно, тем больший вклад в упрощение программы он может внести.

Сцепление модуля  это мера его зависимости по данным от других модулей. Характеризуется способом передачи данных. Чем слабее сцепление модуля с другими модулями, тем сильнее его независимость от других модулей.

Рутинность модуля  это его независимость от предыстории обращений к нему. Модуль будем называть рутинным, если результат (эффект) обращения к нему зависит только от значений его параметров (и не зависит от предыстории обращений к нему). Модуль будем называть зависящим от предыстории, если результат (эффект) обращения к нему зависит от внутреннего состояния этого модуля, изменяемого в результате предыдущих обращений к нему. Майерс не рекомендует использовать зависящие от предыстории (непредсказуемые) модули, так как они провоцируют появление в программах хитрых (неуловимых) ошибок. Однако такая рекомендация является неконструктивной, так как во многих случаях именно зависящий от предыстории модуль является лучшей реализаций информационно прочного модуля. Поэтому более приемлема следующая (более осторожная) рекомендация:

  • всегда следует использовать рутинный модуль, если это не приводит к плохим (не рекомендуемым) сцеплениям модулей;

  • зависящие от предыстории модули следует использовать только в случае, когда это необходимо для обеспечения параметрического сцепления;

  • в спецификации зависящего от предыстории модуля должна быть четко сформулирована эта зависимость таким образом, чтобы было возможно прогнозировать поведение (эффект выполнения) данного модуля при разных последующих обращениях к нему.

В связи с последней рекомендацией может быть полезным определение внешнего представления (ориентированного на информирование человека) состояний зависящего от предыстории модуля. В этом случае эффект выполнения каждой функции (операции), реализуемой этим модулем, следует описывать в терминах этого внешнего представления, что существенно упростит прогнозирование поведения данного модуля.

Содержание отчета

  1. Титульный лист.

  2. Задание кафедры, соответствующее варианту.

  3. Цель работы.

  4. Формализованный алгоритм.

  5. Листинг программы.

  6. Иерархическая схема ПС.

  7. Схема информационных связей.

  8. Контрольный пример.

  9. Выводы по работе.

Задание:

  1. Разработать ПС.

  2. Построить иерархическую схему ПС.

  3. Оценить связность и сцепление модулей входящих в вашу программную систему.

  4. Построить схему информационных связей.

5. Протестировать программу в нормальных, экстремальных и исключительных ситуациях.

Сделать возможным корректировку, добавление и удаление записей. Файл должен содержать не менее 5 записей. В отчетных формах возможен поиск, отчет за период и т.д. Разработанное ПС должно быть качественным, написанным в хорошем стиле. Сделайте вывод о проделанной работе.

1. Создать БД «Библиотека», включающую следующую информацию: код книги, автор, название, год издания, Ф.И.О. читателя, год рождения читателя, образование и т.д. Разработать 2 формы отчетности с возможностью подключения 3-й формы.

2. Создать БД «Студент», включающую следующую информацию: Ф.И.О. студента, год рождения, домашний адрес, факультет, специальность, курс, какое среднее учебное заведение закончил и т.д. Разработать 2 формы отчетности с возможностью подключения 3-й формы.

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

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

5. Создать БД «Бухгалтерия», включающую следующую информацию: Ф.И.О. работника, образование, должность, дата поступления на работу, оклад и т.д. Разработать 2 формы отчетности с возможностью подключения 3-й формы.

6. Создать БД «Сотрудники НИИ», включающую следующую информацию: № отдела, табельный номер, Ф.И.О., № темы над которой работает сотрудник, продолжительность работы в месяцах, код должности, размер заработной платы и т.д. Разработать 2 формы отчетности с возможностью подключения 3-й формы.

7. Создать БД «Реализованный товар», включающую следующую информацию: номер магазина, номер секции, номер чека, наименование товара, артикул товара, цена товара, дата продажи и т.д. Разработать 2 формы отчетности с возможностью подключения 3-й формы.

8. Создать БД «Сессия», включающую следующую информацию: Ф.И.О. студента, факультет, специальность, курс, оценки по 4 предметам и т.д. Разработать 2 формы отчетности с возможностью подключения 3-й формы.

9. Создать БД «Аэрофлот», включающую следующую информацию: номер рейса, пункт назначения, время вылета, время прибытия, количество свободных мест в салоне и т.д. Разработать 2 формы отчетности с возможностью подключения 3-й формы.

10. Создать БД «Аптека», включающую следующую информацию: код лекарства, название, дата выпуска, срок хранения, форма изготовления, объем партии и т.д. Разработать 2 формы отчетности с возможностью подключения 3-й формы.

11. Создать БД «Абонент телефона», включающую следующую информацию: Ф.И.О. абонента, адрес, номер телефона, год установки телефона, количество ремонтных работ, вид ремонта, ФИО мастера и т.д. Разработать 2 формы отчетности с возможностью подключения 3-й формы.

12. Создать БД «Железнодорожный вокзал», включающую следующую информацию: номер поезда, станция назначения, время отправления, время в пути, время прибытия, наличие билетов, количество вагонов и т.д. Разработать 2 формы отчетности с возможностью подключения 3-й формы.

13. Создать БД «Подписка», включающую следующую информацию: индекс издания, наименование, цена подписки с доставкой, цена подписки без доставки, количество подписчиков, на какой срок подписался (1 месяц, …1 год), наличие льгот на подписку и т.д. Разработать 2 формы отчетности с возможностью подключения 3-й формы.