Структуры которые не допускается использовать в программе при структурном программировании
(1)Обязательным критерием качества программных систем является .
(1)Способ записи программ, допускающий их непосредственное выполнение на ЭВМ. называется
функциональным языком программирования
логическим языком программирования
●машинным языком программирования
процедурным языком программирования
(1)На этапе отладки программы
строится математическая модель решаемой задачи
определяется состав входных данных
выполняется анализ физических характеристик
●проверяется корректность работы программы
(1)Типы входных и выходных данных определяются на этапе.
тестирования и отладки
(1)Если задан тип данных, то известной является информация о
●диапазоне возможных значений
количестве обращений к данным
(1)Какая информация известна, если задан тип данных?
●диапазон возможных значений
количество обращений к данным
количество записей данных
(1)Вид хранимой информации определяет.
связи между данными
вложенность структур данных
●тип соответствующего поля данных
устойчивость структур данных
(1)Целочисленный тип является типом данных
(1)Понятием «переменная» в традиционных языках программирования называется…
любое законченное минимальное смысловое выражение на языке программирования
●именованная область памяти, в которой хранится некоторое значение
описание действий, которые должна выполнять программа
служебное слово на языке программирования
(1)Тестирование, при котором разработчик теста имеет доступ к исходному коду и может писать код, который связан с библиотеками тестируемого программного обеспечения, называется .
тестированием «черного ящика»
определением белого шума
тестированием «белого ящика»
(1)Тестирование, при котором разработчик теста имеет доступ к исходному коду программы, называется .
тестированием «черного ящика»
определением белого шума
тестированием «белого ящика»
(1)Тестирование, при котором выявляется, что сделанные изменения не повлияли на функциональность предыдущей версии, называется …
тестированием «черного ящика»
тестированием «белого ящика»
(1)Пошаговая детализация постановки задачи, начиная с наиболее общей проблемы, характеризует
метод проектирования «от частного к общему»
●метод последовательной декомпозиции сверху-вниз
поиск логической взаимосвязи
(1)Основной целью структурного программирования является.
●организация программного обеспечения с минимальными взаимосвязями между его модулями
организация программного обеспечения с максимальными взаимосвязями между его модулями
решение задач, для которых нет явного алгоритма решения
исключение использования подпрограмм
(1)Основой метода структурного программирования являются.
а) использование композиции двух базовых элементов - ветвления и
циклической структур
б) использование большого количества подпрограмм
в) принцип модульности разработки сложных программ
д) использование композиции трех базовых элементов -линейной, ветвления и циклической структур
(1)Модульная структура программы отражает одну из особенностей ___________программирования
(1)Для реализации логики алгоритма и программы, с точки зрения структурного программирования не должны применяться .
(1)Правила композиции, используемые при структурном подходе к составлению алгоритмов:
а) альтернативный выбор
(1)Структурное программирование по-другому называют программированием без.
(1)Укажите структуры, которые не допускается использовать в программе при структурном программировании
Последовательное выполнение двух и более операций
(1)Стиль, вычисление в котором представляет собой вывод некоторого целевого утверждения называется программированием
(1)Уменьшение объема кода программ связано с использованием программирования.
(1)Методика анализа, проектирования и написания приложений с помощью структуры классов, каждый из которых является целостным фрагментом кода и обладает свойствами и методами, называется программированием.
(1)В основе объектно-ориентированного подхода к программированию лежит метод…
ветвей и границ
(1)К концепции объектно-ориентированного программирования НЕ относится
(1)Понятие «Наследование» характеризует
сокрытие информации и комбинирование данных и методов внутри объекта
●способность объекта сохранять свойства и методы класса-родителя
возможность задания различных действий в методе с одним именем
(1)В основе абстракции объектно-ориентированного подхода лежит понятие.
(1)Понятие «иерархия классов» присуще методологии _____________ программирования
(1)Объектно-ориентированный подход к программированию использует следующие базовые понятия.
е) метод обработки
з) класс объектов
(1)Объектно-ориентированный подход к программированию использует следующие базовые понятия.
е) метод обработки
з) класс объектов
(1)Базовыми понятиями объектно-ориентированного программирования являются
(1)Объект связан с классом в терминах объектно-ориентированного программирования в следующей нотации
объект не является наследником класса
объект и класс связаны через общие функции
совокупность классов образует объект
●класс является описанием объекта
(1)Объект связан с классом в терминах объектно-ориентированного программирования в следующей нотации
совокупность классов образует объект
●класс является описанием объекта
объект и класс не связанные понятия
объект не является наследником класса
(1)Объектно-ориентированными языками являются.
(1)Обьектно-ориентированным языком, в котором имеется возможность множественного наследования, является.
(1)Интегрированная система программирования включает компонент для перевода исходного текста программы в машинный код, который называется .
(1)Интегрированная система программирования включает компонент для создания исходного текста программы, который называется .
(1) Рекурсия использует.
удаление подпрограммой самой себя
заражение подпрограммой самой себя
●обращение подпрограммы к самой себе
размножение подпрограммой самой себя
(1)Какая структура данных больше подходит для реализации рекурсии
(1)Какой алгоритм сортировки массива относится к рекурсивным:
сортировка методом пузырька
сортировка простыми вставками
На рис. в виде дерева рекурсии представлен фрагмент алгоритма F(5)
поиска простых чисел
●вычисления чисел Фибоначчи
задачи о ближайших точках
f(xl xn .0) = a(xl xn). f(xl xn.y+1) = h(xl xn ,y, f(xl xn0)) определяет
набор переменных, начинающихся с одной буквы
ограниченная апострофами последовательность любых символов
●последовательность фиксированного числа однотипных переменных, имеющих общее имя
самый простой оператор языка программирования
(1)Массив относится к __________ типам данных
(1)Массив относится к __________ типам данных
(1)Массив относится к.
●составным (конструируемым) типам
(1)Элементы массива упорядочены.
по возрастанию значений элементов
по частотным характеристикам
●по возрастанию индексов элементов
(1)Верным является высказывание, утверждающее…
элементы массива автоматически упорядочиваются по возрастанию
к элементу массива невозможно получить доступ по номеру
элементы массива могут иметь разные типы
●доступ к элементу массива осуществляется по имени массива и номеру элемента
(1)Задан одномерный массив X1. Х2 XN. Фрагмент алгоритма
количество нулевых элементов
количество положительных элементов
номер последнего нулевого элемента
номер первого нулевого элемента
(1)Задан массив А[1..4], состоящий из строк А = («2000», «836», «102», «21»). После сортировки по убыванию элементы массива будут расположены в следующем порядке
«836», «21», «2000», «102»
«2000», «836», «102», «21»
«21», «102», «836», «2000»
(1)Задан массив А[1..4], состоящий из строк А = («2000», «836», «102», «21»). После сортировки по возрастанию элементы массива будут расположены в следующем порядке
«2000», «836», «102», «21»
«21», «102», «836», «2000»
«21», «2000», «102», «836»
(1)Если элементы массива D[1..5] равны соответственно 4, 1, 5, 3, 2, то значение выражения
D[ D[4] – D[5] ] равно
(1)Ветвление обязательно должно содержать .
оператор, выполняемый в случае истинности условия и оператор, выполняемый в случае ложности условия
●условие и оператор, выполняемый в случае истинности условия
оператор, выполняемый в случае ложности условия
(1)Элементами оператора ветвления являются.
б) переход по условию
(1)Оператор ветвления на блок схеме отображается в виде
(1)В блок схеме, внутри данного символа можно написать:
в блок-схемах обозначается …
(1)Многократное исполнение одного и того же участка программы называется .
обращением к подпрограмме
(1)На рисунке представлен фрагмент алгоритма, имеющий структуру.
циклическую с постусловием
циклическую с предусловием
(1)Блок-схемой цикла с постусловием является .
(1)На рисунке представлен фрагмент алгоритма, имеющий ___________ структуру.
циклическую с постусловием
●циклическую с предусловием
(1)После выполнения алгоритма
нц пока d >= b
кц
значение переменной d равно
(1)При выполнении подпрограммы
Aлг пpl (арг цел X. рез цел F) Нач
to F := 2 иначе F := F (X - 2) + 3 все кон
с параметрами (2. А) значение переменной А будет равно
(1)При выполнении подпрограммы
Air пpl (арг цел X. рез цел F) Нач
to F := 2 иначе F := F (X - 2) + 3 все кон
с параметрами (2. А) значение переменной А будет равно
(1)При выполнении подпрограммы
Air пpl (арг цел X. рез цел F) Нач
toF := 2 иначе F := F (X - 1) + 3 все кон
с параметрами (2. А) значение переменной А будет равно
(1)В результате работы алгоритма
переменная Y приняла значение 14. Укажите число, которое являлось значением переменной X до начала работы алгоритма.
(1)В результате работы алгоритма
переменная Y приняла значение 10. Укажите число, которое являлось значением переменной X до начала работы алгоритма.
(1) В результате выполнения фрагмента программы
значения переменных будут равны
P = False; Q = True
P = True; Q = True
P = True; Q = False
P = False; Q = False
(1)После выполнения фрагмента программы
вывод ( “X= “, XX, Z+X );
на печать будет выведено
X= TRUE X= TRUE12
X= TRUE X= TRUEZ+X
(1) Значение переменной d после выполнения фрагмента алгоритма (операции mod (x, y) - получение остатка целочисленного деления х на y, div (x, y) - целочисленное деление х на у)
Выбор
| при div ( k, 12) = 4: d :=k;
| при mod ( k, 12) < 5: d :=2;
| при mod ( k, 12) > 9: d :=3;
| иначе d :=1;
Все
(1) Значение переменной d после выполнения фрагмента алгоритма (операции mod (x, y) - получение остатка целочисленного деления х на y, div (x, y) - целочисленное деление х на у)
Выбор
| при div ( k, 12) = 4: d :=k;
| при div ( k, 12) < 5: d :=2;
| при mod ( k, 12) > 9: d :=3;
| иначе d :=1;
Все
(1) Значение переменной d после выполнения фрагмента алгоритма (операции mod (x, y) - получение остатка целочисленного деления х на y, div (x, y) - целочисленное деление х на у)
Выбор
| при mod ( k, 12) = 7: d :=k;
| при mod ( k, 12) < 5: d :=2;
| при mod ( k, 12) > 9: d :=3;
| иначе d :=1;
Все
(1)В результате работы фрагмента блок-схемы алгоритма
а и b примут следующие значения .
(1)При каких начальных значениях а и b алгоритм на блок-схеме закончит работу (a mod 2 - операция взятия числа а по модулю 2).
(1)При каких начальных значениях переменных алгоритм на блок-схеме закончит работу (a mod 2 = остаток от деления а на 2).
(1)В результате работы фрагмента алгоритма
элементы массива A1, А2, A3, А4 при N=4 получат, соответственно, значения .
(1)Обязательным критерием качества программных систем является .
(1)Способ записи программ, допускающий их непосредственное выполнение на ЭВМ. называется
функциональным языком программирования
логическим языком программирования
●машинным языком программирования
процедурным языком программирования
(1)На этапе отладки программы
строится математическая модель решаемой задачи
определяется состав входных данных
выполняется анализ физических характеристик
●проверяется корректность работы программы
(1)Типы входных и выходных данных определяются на этапе.
тестирования и отладки
(1)Если задан тип данных, то известной является информация о
●диапазоне возможных значений
количестве обращений к данным
(1)Какая информация известна, если задан тип данных?
●диапазон возможных значений
количество обращений к данным
количество записей данных
(1)Вид хранимой информации определяет.
связи между данными
вложенность структур данных
●тип соответствующего поля данных
устойчивость структур данных
(1)Целочисленный тип является типом данных
(1)Тестирование, при котором разработчик теста имеет доступ к исходному коду и может писать код. который связан с библиотеками тестируемого программного обеспечения, называется .
тестированием «черного ящика»
определением белого шума
тестированием «белого ящика»
(1)Основной целью структурного программирования является. М569
●организация программного обеспечения с минимальными взаимосвязями между его модулями
организация программного обеспечения с максимальными взаимосвязями между его модулями
решение задач, для которых нет явного алгоритма решения
исключение использования подпрограмм
(1)Основой метода структурного программирования являются.
а) использование композиции двух базовых элементов - ветвления и
циклической структур
б) использование большого количества подпрограмм
в) принцип модульности разработки сложных программ
д) использование композиции трех базовых элементов - линейной, ветвления и циклической структур
(1)Для реализации логики алгоритма и программы, с точки зрения структурного программирования не должны применяться .
(1)Структурное программирование по-другому называют программированием без.
(1)Укажите структуры, которые не допускается использовать в программе при структурном программировании
Последовательное выполнение двух и более операций
(1)Стиль, вычисление в котором представляет собой вывод некоторого целевого утверждения называется программированием
(1)Уменьшение объема кода программ связано с использованием программирования.
(1)Методика анализа, проектирования и написания приложений с помощью структуры классов, каждый из которых является целостным фрагментом кода и обладает свойствами и методами, называется программированием.
(1)К концепции объектно-ориентированного программирования НЕ относится
(1)В основе абстракции объектно-ориентированного подхода лежит понятие.
(1)Объектно-ориентированный подход к программированию использует следующие базовые понятия.
е) метод обработки
з) класс объектов
(1)Объект связан с классом в терминах ОБЪЕКТНО-ориентированного программирования в следующей нотации
объект не является наследником класса
объект и класс связаны через общие функции
совокупность классов образует объект
●класс является описанием объекта
(1)Объектно-ориентированными языками являются.
(1)Объектно-ориентированным языком, в котором имеется возможность множественного наследования, является.
(1)Интегрированная система программирования включает компонент для перевода исходного текста программы в машинный код. который называется .
(1)Интегрированная система программирования включает компонент для создания исходного текста программы (исходного кода), который называется .
(1) Рекурсия использует.
удаление подпрограммой самой себя
заражение подпрограммой самой себя
●обращение подпрограммы к самой себе
размножение подпрограммой самой себя
(1)Какая структура данных больше подходит для реализации рекурсии
(1)Какой алгоритм сортировки массива относится к рекурсивным:
сортировка методом пузырька
сортировка простыми вставками
На рис. в виде дерева рекурсии представлен фрагмент алгоритма F(5)
поиска простых чисел
●вычисления чисел Фибоначчи
задачи о ближайших точках
f(xl xn .0) = a(xl xn). f(xl xn.y+1) = h(xl xn ,y, f(xl xn0)) определяет
набор переменных, начинающихся с одной буквы
ограниченная апострофами последовательность любых символов
●последовательность фиксированного числа однотипных переменных, имеющих общее имя
самый простой оператор языка программирования
(1)Массив относится к типам данных
(1)Массив относится к.
●составным (конструируемым) типам
(1)Элементы массива упорядочены.
по возрастанию значений элементов
по частотным характеристикам
●по возрастанию индексов элементов
(1)Задан одномерный массив X1. Х2 XN. Фрагмент алгоритма
количество нулевых элементов
количество положительных элементов
номер последнего нулевого элемента
номер первого нулевого элемента
(1)Ветвление обязательно должно содержать .
оператор, выполняемый в случае истинности условия и оператор, выполняемый в случае ложности условия
●условие и оператор, выполняемый в случае истинности условия
оператор, выполняемый в случае ложности условия
(1)Элементами оператора ветвления являются.
б) переход по условию
(1)Оператор ветвления на блок схеме отображается в виде
(1)В блок схеме, внутри данного символа можно написать:
(1)Многократное исполнение одного и того же участка программы называется .
обращением к подпрограмме
(1)На рисунке представлен фрагмент алгоритма, имеющий структуру.
циклическую с постусловием
циклическую с предусловием
(1)Блок-схемой цикла с постусловием является .
(1)При выполнении подпрограммы
Aлг пpl (арг цел X. рез цел F) Нач
to F := 2 иначе F := F (X - 2) + 3 все кон
с параметрами (2. А) значение переменной А будет равно
(1)При выполнении подпрограммы
Air пpl (арг цел X. рез цел F) Нач
to F := 2 иначе F := F (X - 2) + 3 все кон
с параметрами (2. А) значение переменной А будет равно
(1)При выполнении подпрограммы
Air пpl (арг цел X. рез цел F) Нач
toF := 2 иначе F := F (X - 1) + 3 все кон
с параметрами (2. А) значение переменной А будет равно
(1)В результате работы алгоритма
переменная Y приняла значение 14. Укажите число, которое являлось значением переменной X до начала работы алгоритма.
(1)В результате работы алгоритма
переменная Y приняла значение 10. Укажите число, которое являлось значением переменной X до начала работы алгоритма.
(1)В результате работы фрагмента блок-схемы алгоритма
а и b примут следующие значения .
(1)При каких начальных значениях а и b алгоритм на блок-схеме закончит работу (a mod 2 - операция взятия числа а по модулю 2).
(1)При каких начальных значениях переменных алгоритм на блок-схеме закончит работу (a mod 2 = остаток от деления а на 2).
(1)В результате работы фрагмента алгоритма
элементы массива A1, А2, A3, А4 при N=4 получат, соответственно, значения .
Структурное программирование – это метод, предполагающий создание улучшенных программ. Он служит для организации проектирования и кодирования программ таким образом, чтобы предотвратить большинство логических ошибок и обнаружить те, которые допущены.
Используя язык высокого уровня (такой как Фортран) программисты могли писать программы до несколько тысяч строк длиной. Однако язык программирования, легко понимаемый в коротких программах, когда дело касается больших программ, становится нечитабельным (и неуправляемым). Избавление от таких неструктурированных программ пришло после создания в 1960 году языков структурного программирования. К ним относятся языки Алгол, Паскаль и С.
Структурное программирование подразумевает точно обозначенные управляющие структуры, программные блоки, отсутствие инструкций GOTO, автономные подпрограммы, в которых поддерживается рекурсия и локальные переменные. Главным в структурном программировании является возможность разбиения программы на составляющие ее элементы. Используя структурное программирование, средний программист может создавать и поддерживать программы свыше 50 000 строк длиной.
Структурное программирование тесно связано такими понятиями как «нисходящее проектирование» и «модульное программирование».
Метод нисходящего проектирования предполагает последовательное разложение функции обработки данных на простые функциональные элементы («сверху-вниз»).
В результате строится иерархическая схема, отражающая состав и взаимоподчиненость отдельных функций, которая носит название функциональная структура алгоритма (ФСА) приложения.
Функциональная структура алгоритма приложения разрабатыается в следующей последовательности:
1) определяются цели автоматизации предметной области и их иерархия;
2) устанавливается состав приложений (задач обработки), обеспечивающих реализацию поставленных целей;
3) уточняется характер взаимосвязи приложений и их основные характеристики (информация для решения задач, время и периодичность решения и др.);
4) определяются необходимые для решения задач функции обработки данных;
5) выполняется декомпозиция функций обработки до необходимой структурной сложности, реализуемой предполагаемым инструментарием.
Подобная структура приложения отражает наиболее важное – состав и взаимосвязь функций обработки информации для реализации приложений, хотя и не раскрывает логику выполнения каждой отдельной функции, условия или периодичность их вызовов.
Разложение должно носить строго функциональный характер, т.е. отдельный элемент ФСА должен описывать законченную содержательную функцию обработки информации, которая предполагает определенный способ реализации на программном уровне.
Модульное программирование основано на понятии модуля – логически взаимосвязанной совокупности функциональных элементов, оформленных в виде отдельных программных модулей. Модульное программирование рассматривается в разд 7.
Структурное программированиесостоит в получении правильной программы из некоторых простых логических структур. Оно базируется на строго доказанной теореме о структурировании, которая утверждает, что любую правильную программу (с одним входом, одним выходом, без зацикливания и недостижимых команд) можно написать с использованием только следующих основных логических структур:
· циклической (цикл, или повторение).
Эта теорема была сформулирована в 1966 г. Боймом и Якопини (Corrado Bohm, Guiseppe Jacopini). Главная идея теоремы – преобразовать каждую часть программы в одну из трех основных структур или их комбинацию так, чтобы неструктурированная часть программы уменьшилась. После достаточного числа таких преобразований оставшаяся неструктурированной часть либо исчезнет, либо становится ненужной. В теореме доказывается, что в результате получится программа, эквивалентная исходной и использующая лишь упоминавшиеся основные структуры.
Комбинации правильных программ, полученные с использованием этих трех основных структур, также являются правильными программами. Применяя итерацию и вложение основных структур, можно получить программу любого размера и сложности. При использовании только указанных структур отпадает необходимость в безусловных переходах и метках. Поэтому иногда структурное кодирование понимают в узком смысле как программирование без «GOTO».
В алгоритмическом языке С (С++) для реализации структурного кодирования используются следующие операторы:
· объявление (только в С++).
Структура «следование»(рис. 5.1, а) реализуется составным оператором, оператором-выражение, asm-оператором и др.
Составной оператор, или блок, представляет собой список (возможно, пустой) операторов, заключенных в фигурные скобки . Синтаксически блок рассматривается как единый оператор, но он влияет на контекстидентификаторов, объявленных в нем. Блоки могут иметь любую глубину вложенности.
Оператор-выражение представляет собой выражение, за которым следует точка с запятой. Его формат следующий:
Компилятор языка C++ выполняет операторы-выражения, вычисляя выражения. Все побочные эффекты от этого вычисления завершаются до начала выполнения следующего оператора. Большинство операторов-выражений представляют собой операторы присваивания или вызовы функций (например, printf(), scanf() ). Особым случаем является пустой оператор, состоящий из одной точки с запятой (;). Пустой оператор не выполняет никаких действий. Однако он полезен в тех случаях, когда синтаксис C++ ожидает наличия некоторого оператора, но по программе он не требуется (например, бесконечный цикл for ).
Asm-операторы обеспечивают программирование на уровне ассемблера (использование указателей, побитовые операции, операции сдвига и т.д.). Используя ассемблерный язык для обработки подпрограмм критических ситуаций, многократно повторяющихся операций, можно повысить скорость оптимизации без какого-либо усовершенствования языка высокого уровня.
Структура «развилка» (рис. 5.1, б, в) реализуется операторами выбора. Операторы выбора, или операторы управления потоком, выполняют выбор одной из альтернативных ветвей программы, проверяя для этого определенные значения. Существует два типа операторов выбора: if. else и switch.
Базовый оператор if(рис. 5.1, б) имеет следующий формат:
Язык C++ в отличие от, например, языка Паскаль не имеет специального булевого типа данных. В условных проверках роль такого типа может играть целочисленная переменная или указатель на тип. Условное_выражение должно быть записано в круглых скобках. Это выражение вычисляется. Если оно является нулевым (или пустым в случае типа указателя), мы говорим, что условное_выражение ложно(false); в противном случае оно истинно(true).
Если предложение else отсутствует, а условное_выражение дает значение "истина", то выполняется оператор_если_"истина"; в противном случае он игнорируется.
Если задано предложение оператор_если_"ложь", а условное_выражение дает значение "истина", то выполняется оператор_если_"истина"; в противном случае выполняется оператор_если"ложь".
Преобразования указателей выполняются таким образом, что значение указателя всегда может быть корректно сравнено с выражением типа константы, дающим 0. Таким образом, сравнение для пустых указателей может быть сделано в виде:
if (!ptr). или if (ptr = = 0).
Оператор_если_"ложь" и оператор_если_"истина" сами могут являться операторами if, что позволяет организовывать любую глубину вложенности условных проверок. При использовании вложенных конструкций if. else следует быть внимательным и обеспечивать правильный выбор выполняемых операторов. Любая неоднозначность конструкции "else" разрешается сопоставлением else с последним найденным на уровне данного блока if без else.
if (x == 1)
if (y == 1) puts("x=1 и y=1");
else puts("x != 1");
дает неверное решение, так как else, независимо от стиля записи, сопоставляется не с первым, а со вторым if. Поэтому правильная запись последней строчки должна быть такой:
else puts("x=1 и y!=1");
Однако с помощью фигурных скобок можно реализовать и первую конструкцию:
if (x = = 1)
if (y = = 1) puts("x = и y=1");
else puts("x != 1"); // правильное решение
Оператор switch (см. рис. 5.1, в) использует следующий базовый формат:
switch (переключающее_выражение) case_оператор;
Он позволяет передавать управление одному из нескольких операторов с меткой case в зависимости от значения переключающего_выражения. Любой оператор в case_операторе (включая пустой оператор) может быть помечен одной (или более) меткой варианта:
caseконстантное_выражение_i : case_оператор_i;
где каждое константное_выражение_i должно иметь уникальное целочисленное значение (преобразуемое к типу переключающего_выражения) в пределах объемлющего оператора switch.
Допускается иметь в одном операторе switch повторяющиеся константы case.
Оператор может иметь также не более одной метки default:
После вычисления переключающего_выражения выполняется сопоставление результата с одним из константных_выражений_i. Если найдено соответствие, то управление передается case_оператору_i с меткой, для которой найдено соответствие. Если соответствия не найдено и имеется метка default, то управление передается оператору_умолчания. Если соответствие не найдено, а метка default отсутствует, то никакие операторы не выполняются. Для того чтобы остановить выполнение группы операторов для конкретного варианта, следует использовать оператор break.
Содержание лекции: понятия структурного и «неструктурного» программирования; программирование с «защитой от ошибок»; сквозной структурный контроль.
Цель лекции: выявить разницу между структурным и «неструктурным» программированием, а также приемы обеспечения защиты от ошибок.
Одним из способов обеспечения высокого уровня технологичности разрабатываемого ПО является структурное программирование. Различают три вида вычислительного процесса, реализуемого программами: линейный, разветвленный и циклический. Линейная структура процесса вычислений предполагает, что для получения результата необходимо выполнить операции в определенной последовательности. При разветвленной структуре процесса вычислений конкретная последовательность операций зависит от значений одной или нескольких переменных. Для получения результата при циклической структуре некоторые действия необходимо выполнить несколько раз. Для реализации этих вычислительных процессов в программах используют соответствующие управляющие операторы. Для изображения схем алгоритмов таких программ был разработан ГОСТ 19.701-90, согласно которому каждой группе действий ставится в соответствие специальный блок. Стандарт предусматривает блоки для обозначения циклов, не запрещает произвольной передачи управления и допускает использование команд условной и безусловной передачи управления при реализации алгоритма.
После того, как в 60-х годах XX в. было доказано, что любой сложный алгоритм можно представить, используя три основные управляющие конструкции, в языках программирования высокого уровня появились управляющие операторы для их реализации [6]. К базовым относят:
а) следование - обозначает последовательное выполнение действий;
б) ветвление - выбор одного из двух вариантов действий;
в) цикл-пока - определяет повторение действий, пока не будет нарушено некоторое условие, выполнение которого проверяется в начале цикла.
Кроме базовых, процедурные языки программирования высокого уровня используют три дополнительные конструкции, реализуемые через базовые:
а) выбор - выбор одного варианта из нескольких в зависимости от значения некоторой величины;
б) цикл-до - повторение действий до выполнения заданного условия, проверка которого осуществляется после выполнения действий в цикле;
в) цикл с заданным числом повторений (счетный цикл) - повторение некоторых действий указанное количество раз.
Перечисленные конструкции были положены в основу структурного программирования. Программы, написанные с использованием только структурных операторов передачи управления, называют структурными, чтобы подчеркнуть их отличие от программ, разрабатываемых с использованием низкоуровневых способов передачи управления. Недостатки схем:
а) низкий уровень детализации, что скрывает суть сложных алгоритмов;
б) использование неструктурных способов передачи управления, которые на схеме выглядят проще, чем эквивалентные структурные.
Кроме схем, для описания алгоритмов можно использовать псевдокоды, Flow-формы и диаграммы Насси-Шнейдермана, которые базируются на тех же основных структурах, допускают разные уровни детализации и делают невозможным описание неструктурных алгоритмов [1].
Псевдокод- формализованное текстовое описание алгоритма (текстовая нотация внескольких вариантах, таблица В.1). Изначально ориентирует проектировщика только на структурные способы передачи управления и требует более тщательного анализа разрабатываемого алгоритма. Псевдокоды не ограничивают степень детализации проектируемых операций, позволяют соизмерять степень детализации действия с рассматриваемым уровнем абстракции и хорошо согласуются с методом пошаговой детализации.
Flow-формы- графическая нотация описания структурных алгоритмов, иллюстрирующая вложенность структур. Каждому символу Flow-формы соответствует управляющая структура, изображаемая в виде прямоугольника и содержащая текст в математической нотации или на естественном языке. Для демонстрации вложенности структур символ Flow-формы вписывается в соответствующую область прямоугольника любого другого символа. Размер прямоугольника определяется длиной вписанного в него текста и размерами вложенных прямоугольников. В таблице В.1 приведены символы Flow-форм, соответствующие основным и дополнительным управляющим конструкциям.
Диаграммы Насси-Шнейдерманаявляются развитием Flow-форм лишь с той разницей, что область обозначения условий и вариантов ветвления изображают в виде треугольников (таблица В.1), обеспечивающих большую наглядность представления алгоритма.
Графические нотации лучше отображают вложенность конструкций, чем псевдокоды. Недостаток: сложность построения изображений символов усложняет их практическое применение для описания больших алгоритмов.
С точки зрения технологичности хорошим считают стиль оформления программы, облегчающий ее восприятие, как самим автором, так и другими программистами, которым придется ее проверять или модифицировать. Автор известной монографии, посвященной проблемам программирования, Д. Ван Тассел призывал: «Помните, программы читаются людьми» [7]. Исходя из того, что любую программу придется неоднократно просматривать, следует придерживаться хорошего стиля написания программ, который включает:
а) правила именования объектов программы;
б) правила оформления модулей;
в) стиль оформления текстов модулей.
Причинами неверного определения исходных данных могут являться, как внутренние ошибки (ошибки устройств ввода-вывода или программного обеспечения), так и внешние ошибки (ошибки пользователя). Различают:
а) ошибки передачи - аппаратные средства искажают данные;
б) ошибки преобразования - программа неверно преобразует исходные данные из входного формата во внутренний;
в) ошибки перезаписи - пользователь ошибается при вводе данных;
г) ошибки данных — пользователь вводит неверные данные.
Ошибки передачи обычно контролируются аппаратно.
Для защиты от ошибок преобразования данные после ввода сразу демонстрируют пользователю («эхо»), выполняя преобразование сначала во внутренний формат и обратно. Предотвратить все ошибки преобразования на этом этапе крайне сложно, поэтому фрагменты программы тестируют [15], используя методы эквивалентного разбиения и граничных значений.
Обнаружить и устранить ошибки перезаписи можно только при вводе избыточных данных, например, контрольных сумм. Если ввод избыточных данных нежелателен, то по возможности проверяют входные данные и контролируют интервалы возможных значений, определенных в техническом задании, а также выводят введенные данные для проверки пользователю.
Неверные данные обычно может обнаружить только пользователь.
Проверки промежуточных результатов позволяют снизить вероятность позднего проявления не только ошибок неверного определения данных, но и некоторых ошибок кодирования и проектирования. Для этого необходимо, чтобы в программе использовались переменные с ограничениями любого происхождения, например, связанные с сущностью моделируемых процессов.
Любые дополнительные операции в программе требуют использования дополнительных ресурсов (времени, памяти) и могут содержать ошибки. Имеет смысл проверять только те промежуточные результаты, проверка которых целесообразна и не сложна, например, допустимость индекса.
Для снижения погрешности результатов вычислений следует
а) избегать вычитания близких чисел (машинный ноль);
б) избегать деления больших чисел на малые;
в) сложение длинной последовательности чисел начинать с меньших по абсолютной величине;
г) стремиться по возможности уменьшать количество операций;
д) использовать методы с известными оценками погрешностей;
е) не использовать условие равенства вещественных чисел;
ж) вычислять с двойной точностью, а результат выдавать - с одинарной.
Сквозной структурный контроль (ССК) – это совокупность технологических операций контроля на всех этапах разработки при наличии четких рекомендаций по их выполнению, позволяющих обеспечить как можно более раннее обнаружение ошибок в процессе разработки. ССК должен выполняться на специальных контрольных сессиях, в которых, помимо разработчиков, могут участвовать специально приглашенные эксперты. Время между сессиями определяет объем материала, который выносится на сессию. Материалы для очередной сессии должны выдаваться участникам заранее для обдумывания. Одна из первых сессий должна быть организована на этапе определения спецификаций для проверки полноты и точности спецификаций. На этапе проектирования вручную проверяют алгоритмы разрабатываемого ПО на конкретных наборах данных и сверяют полученные результаты с соответствующими спецификациями, чтобы убедиться в правильности понимания спецификаций и проанализировать достоинства и недостатки концептуальных решений, закладываемых в проект. На этапе реализации проверяют последовательность реализации модулей, набор тестов, а также тексты отдельных модулей. Для всех этапов следует иметь списки наиболее часто встречающихся ошибок, формируемые по литературным источникам и опыту предыдущих разработок. Такие списки позволяют сконцентрировать усилия на конкретных моментах, а не проверять все подряд. При этом все найденные ошибки фиксируют в специальном документе, но не исправляют. Помимо раннего обнаружения ошибок, ССК обеспечивает своевременную подготовку качественной документации по проекту.
ИНАЧЕX:=2||ИНАЧЕ X:=3КОНЕЦ реализует алгебраическое выражение вида… Данная блок-схема программы … производит сложение 9 подряд идущих натуральных чисел начиная с введенного и выводит результат Структурное программирование по-другому называют программированием без… GOTO Дан массив целых чисел , где i=1,2,3,…,M. Пусть M равно 15. Программа вычисляет произведение сумм некоторых элементов этого массива. В программе введены следующие константы: G=1; W=12; T=8; L=15.ПРОГРАММА 15; ФУНКЦИЯ SUMMA(I1,I2); НАЧАТЬ ФУНКЦИЮ ||S:=0; ||НЦ ДЛЯ I:=I1 ДО I2 |S:=S + A[I] ||КЦ; ||SUMMA:=S КОНЕЦ ФУНКЦИИ;НАЧАТЬ ПРОГРАММУ||ПИСАТЬ ('ВВЕДИТЕ ЗНАЧЕНИЯ МАССИВА A:' );||НЦ ДЛЯ J:=1 ДО M|ЧИТАТЬ (A[J]);||КЦ;||P:=SUMMA (G, W)*SUMMA(T, L);||ПИСАТЬ ('ПРОИЗВЕДЕНИЕ РАВНО:', P:6)КОНЕЦ ПРОГРАММЫ.Работу программы описывает следующее алгебраическое выражение : Процедура KLMNПРОЦЕДУРА KLMN;НАЧАТЬ ПРОЦЕДУРУ||ПИСАТЬ('ВВЕДИТЕ ЗНАЧЕНИЕ K, L, M, N');||ЧИТАТЬ (K, L, M, N);||ЕСЛИ K=L ТО
ИНАЧЕX:=2|КОНЕЦ ЕСЛИ||ИНАЧЕ X:=3||КОНЕЦ ЕСЛИКОНЕЦ ПРОЦЕДУРЫ;реализует следующее алгебраическое выражение … Программирование, основанное на модульной структуре программного продукта и типовых управляющих структурах алгоритмов называется… структурным Основной целью структурного программирования является… организация программного обеспечения с минимальными взаимосвязями между его модулями Основой метода структурного программирования являются…а) принцип модульности разработки сложных программ б) использование композиции трех базовых элементов – линейной, ветвления и циклической структур в) использование композиции двух базовых элементов – ветвления и циклической структур д) использование большого количества подпрограмм (а, б) Основой метода структурного программирования являются…а) использование композиции двух базовых элементов – ветвления и циклической структур б) использование большого количества подпрограмм в) принцип модульности разработки сложных программ д) использование композиции трех базовых элементов – линейной, ветвления и циклической структур (в, д)
Объектно-ориентированное программирование
К концепции ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАМИРОВАНИЯ НЕ относится параллелизм
Базовыми понятиями ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАМИРОВАНИЯ являются а) объект б) класс в) структура г) функция(а,б)
Объект связан с классом в терминах ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАМИРОВАНИЯ в следующей нотации класс является описанием объекта
Суть понятия полиморфизм заключается в том, что в зависимости от типа объекта одно и то же имя метода может соответствовать различным действиям
позволяет определять новые объекты, используя свойства существующих, дополняя или изменяя их
объект скрывает в себе детали, несущественные для его использования
Методика анализа, проектирования и написания приложений с помощью структуры классов, каждый из которых является целостным фрагментом кода и обладает свойствами и методами, называется _______________ программированием. объектно-ориентированным
Объектно-ориентированный подход к программированию использует следующие базовые понятия…а) объект б) свойство в) метод обработки г) событие д) класс объектов е) инструкции ж) данные з) модель (а, б, в, г, д)
В основе объектно-ориентированного подхода к программированию лежит метод… нисходящего проектирования
В основе абстракции объектно-ориентированного подхода лежит понятие… иерархии
Уменьшение объема кода программ связано с использованием ______________ программирования. объектно-ориентированного
Сетевые технологии обработки данных
Сервер сети – это компьютер… предоставляющий доступ к ресурсам
Волоконно-оптические линии связи используются в следующих сетях. FDDI
Линией связи с минимальной задержкой является. волоконно-оптическая линия связи
Клиентом называется. задача, рабочая компьютерная станция или пользователь компьютерной сети
Усредненная геометрическая схема соединений узлов сети, называется ______________ сетитопологией
Сетевым протоколом является. набор правил
Сеть Internet базируется на протоколах. TCP/IP
Протокол FTP предназначен для. передачи файлов
Сетевые стандарты
Протокол POP3 работает на _________ уровне. прикладном
На сетевом уровне. определяется адресация в системе передачи данных
К понятиям физического уровня относится. v.24
Программы, которые будут осуществлять взаимодействие, определяются на уровне. прикладном
Не инкапсулируется пакет __________ уровня: канального
Разработчиками стандартов для локальных вычислительных сетей является. IEEE 802
Стандартом верхнего уровня и администрирования является. 802.1
Стандартом управления логическим звеном данных является. 802.2
Стандарт - маркерная шина, это. 802.4
Внутреннее представление информации
Дискретно
Сигнал называется дискретным, если он
Может принимать лишь конечное число значений в конечное число моментов времени
3. Выберите наиболее точное продолжение фразы. Информатика – это наука, изучающая…
Способы представления, хранения, обработки и передачи информации
4. Процессы получения, хранения и преобразования информации называются…
Информационными процессами
Перекодировкой
Кодировщиком называется
Информация по способу ее восприятия человеком подразделяется на
Читайте также: