
- •Билет 1. Базовые понятия пpогpамиpования. Действие, процесс, алгоритм, программа.
- •Билет 2. Функциональная структура эвм. Основные устройства эвм, их функциональные характеристики.
- •Билет 3. Представление данных в памяти эвм. Понятие переменной, константы, типа, диапазона значений.
- •Билет 4. Требования к качеству программного продукта. Основные критерии качества.
- •Билет 5. Этапы разработки программ. Роль каждого этапа в получении качественного программного продукта. Технология программирования.
- •Билет 6. Главная метафора процедурно-ориентированных языков. Стиль программирования.
- •Билет 7. Внешняя спецификация задачи, ее роль в процессе разработки программы. Состав внешней спецификации, структура документа.
- •Билет 8. Состав языка программирования. Синтаксис и семантика языка. Метаязык для записи синтаксических правил.
- •Билет 9. Структурные уровни языка программирования. Уровни языка Паскаль. Особенности языка Паскаль.
- •Билет 10. Простейшие конструкции языка Паскаль. Основные символы, слова, выражения.
- •Билет 11. Элементарные инструкции языков программирования. Особенности кодирования инструкции на язык Паскаль.
- •Билет 12. Кодирование арифметических, логических и литерных инструкций на язык Паскаль.
- •Билет 13. Организация ввода данных из стандартного файла input. Процедуры ввода.
- •Билет 14. Ввод данных из текстового файла в Турбо-среде.
- •Билет 15. Вывод данных в текстовый файл в среде Турбо-Паскаль.
- •Билет 16. Концепция структурного программирования. Принцип Дейкстры.
- •Билет 17. Основные правила композиции структурированных программ. Базисы Вирта и Дейкстры. Эквивалентность базисов.
- •Билет 18. Последовательность действий. Особенность реализации в языке Паскаль.
- •Билет 19. Альтернативные действия. Альтернатива и полуальтернатива. Особенность реализации в языке Паскаль. Синтаксис и семантика.
- •Билет 20. Повторяемые действия. Реализация итерационных циклов пока и до в языке Паскаль. Синтаксис и семантика, особенность реализации.
- •Билет 21. Реализация параметрического цикла в языке Паскаль. Синтаксис и семантика, ограничения при использовании.
- •Билет 22. Выбор из нескольких альтернатив. Реализация в стандартном и Турбо-Паскале.
- •Билет 23. Скалярные типы данных в языке Паскаль. Упорядоченные и неупорядоченные типы.
- •Билет 24. Структурный тип данных "массив". Реализация массивов переменной длины.
- •Билет 25. Правила записи программного модуля.
- •Билет 26. Основные стратегии проектирования алгоритмов, их сравнительная характеристика.
- •Билет 27. Основные декомпозиционные структуры программ. Сегменты-блоки и сегменты-процедуры, их спецификация.
- •Билет 32. Функции. Правила описания и использования.
- •Билет 33. Чистые процедуры. Правила и способы подстановки параметров. Механизм подстановки.
- •Билет 34. Структура программы. Локализация объектов.
- •Билет 35. Побочный эффект. Причины возникновения и правила предупреждения.
- •Билет 36. Цель и содержание отладки программы. Классификация ошибок. Уровни корректности программы в процессе отладки.
- •Билет 37. Основные действия при отладке. Контроль программы. Фазы контроля.
- •Билет 38. Характеристика восходящего и нисходящего способов отладки.
- •Билет 39. Локализация и исправление ошибок в процессе отладки в Турбо-среде.
- •Билет 40. Функциональное и структурное тестирование. Метод тестовых счетчиков.
- •Билет 41. Документирование программ в процессе разработки. Состав документации.
- •Билет 42. Классификация алгоритмов внутренней сортировки. Сравнительная оценка методов сортировки.
- •Билет 43. Эффективность программы. Средства стандартного и Турбо-Паскаля для повышения эффективности.
- •Билет 44. Надежность программы. Организация надежного ввода. Средства Паскаля для повышения надежности.
- •Билет 45. Эргономичность программы. Роль структурного программирования в повышении эргономичности.
- •Билет 46. Мобильность программ. Отличие версии Турбо-Паскаль от стандартного Паскаля.
- •Билет 47. Метод бисекции (деления пополам). Использование его в алгоритмах сортировки и решения уравнений.
- •Билет 48. Способы организации надежного ввода из стандартного файла, влияние на структуру программы.
- •Билет 49. Организация массива из текстового файла. Процедуры, обеспечивающие различную степень зависимости от входных данных.
- •Билет 50. Локализация процедур Паскаля. Внешние процедуры.
- •Билет 51. Структурирование циклов. Метод объединения условий при решении задачи информационного поиска в файле.
- •Билет 59. Метод трассировки при визуальном и компьютерном способах отладки.
Билет 38. Характеристика восходящего и нисходящего способов отладки.
Тест - совокупность специально подобранных входных данных и соответствующих им выходных данных, используемых для контроля правильности работы программы.
Тестовые результаты лучше получать путем, отличным от реализованного в программе.
Тестирование - испытание программы на множестве тестовых ситуаций с целью обнаружения ошибок.
Подготовка тестирования включает два шага:
- проектирование тестов;
- подготовка программы для тестирования (вставка дополнительных печатей, специальных операторов и т.д.).
Проектирование тестов - крайне важный и сложный процесс. Это связано с невозможностью "полного" тестирования программы, т.е. испытания всех режимов работы на всех возможных наборах данных. Стратегия проектирования - уменьшить эту неполноту и с помощью ограниченного набора тестов обеспечить достаточно высокую степень безошибочности работы программы.
Содержание теста определяется спецификацией задачи и логикой ее решения. Поэтому разработка тестов должна предшествовать этапу кодирования алгоритма и осуществляться параллельно с проектированием алгоритма.
Иначе говоря, разработка тестов является предусмотренным заранее и запланированным этапом. К моменту завершения проекта на языке проектирования (псевдокод) наборы тестовых данных также должны быть спроектированы. Эти наборы являются одновременно обязательным элементом документации программного продукта.
Способы тестирования:
В основе различных методов тестирования лежат два способа: восходящее и нисходящее тестирование.
При восходящем тестировании программа собирается и тестируется снизу вверх. Вначале проверяются модули нижнего уровня, т.е. сегменты, не содержащие абстракций. Затем совершается переход к модулям более высокого уровня, абстракции в которых заменены обращениями к оттестированным модулям и т.д. При этом необходимо для каждого модуля, представляющего собой внешнюю процедуру, написать специальную небольшую управляющую программу, которая должна содержать ввод тестовых данных, обращение к тестируемой процедуре и вывод тестовых результатов. Такая программа называется Драйвером.
Такой способ тестирования на первый взгляд кажется наиболее естественным. но он имеет существенный недостаток: проверка программы начинается с тестирования мелких деталей; проверка смысловых моментов откладывается на более позднее время. В результате серьезные принципиальные ошибки (ошибки во внешних спецификациях, сегментах высоких уровней) могут проявиться только на завершающей стадии работы и повлечь переделку всего проекта.
Нисходящее тестирование органически входит в процесс нисходящего проектирования программ. При таком способе тестирование начинается с главного модуля, одновременно с его проектированием. Вызываемые из главного модуля сегменты, для которых алгоритм еще не разработан, заменяются заглушками (имитаторами, болванками). Заглушки - это процедуры, которые моделируют работу соответствующего модуля. В простейшем случае заглушка при обращении к ней только осуществляет обмен данными, т.е. выдает фиксированные значения выходных данных и получает входные данные. В более сложном случае заглушка может содержать упрощенный алгоритм обработки полученных данных. В любом случае заглушка должна выдавать:
- сообщение о том, что она вызвана;
- полученные входные данные;
- выдаваемые выходные данные.
После окончания отладки головного модуля проводится проектирование и отладка сегментов первого уровня, а заглушки заменяются текстами соответствующих построенных алгоритмов. При этом драйвером для сегментов является головной модуль.
Процесс тестирования так же, как и процесс проектирования, продолжается до тех пор, пока не будут раскрыты все абстракции (устранены все заглушки).
Преимущество этого способа состоит в том, что прежде чем проектируется и тестируется внутренняя логика некоторого сегмента, проверяются внешние связи (интерфейс) этого сегмента. Это дает возможность на ранних стадиях проектирования выявить серьезные смысловые ошибки, оставляя проверку деталей на более поздние стадии проектирования.
При проведении тестирования рекомендуется выполнять следующие общие правила.
1) В первую очередь лучше тестировать сегменты, осуществляющие ввод и вывод данных.
2) Рекомендуется одновременно раскрывать те абстракции, которые целесообразно тестировать совместно: ввод-вывод, обработка-вывод, ввод-обработка-вывод и др. В то же время раскрывать такую пару, как ввод-обработка, нецелесообразно, так как потребуются дополнительные инструкции вывода только для целей отладки.
3) При тестировании сегмента, содержащего абстракции, следует учитывать вид этих абстракций, которые могут раскрыться либо в виде блока, либо в виде процедуры. От этого зависит форма заглушки, так как блок должен включаться в сегмент, а процедура останется в виде автономного модуля.
4) В некоторых случаях целесообразно сочетать нисходящее тестирование с восходящим. Так, если раскрытие некоторой абстракции не слишком усложнит алгоритм, то можно не строить для нее заглушку, а раскрыть и отладить в виде процедуры, а потом испытывать сегмент более высокого уровня, используя построенную процедуру.