Главная /
Основы информатики и программирования
Основы информатики и программирования - ответы на тесты Интуит
В первой части курса происходит знакомство с языком программирования Java, и строится теоретическая база, необходимая для изложения последующего материала. Во второй части излагаются практические методы построения правильных программ небольшого объема. Третья часть посвящена введению в объектно-ориентированное программирование, основам реализации базовых структур данных и рассмотрению небольших программных проектов, являющихся прототипами реальных задач, которые позже будут рассматриваться в курсах по теории компиляции, вычислительной геометрии и компьютерной графики.
Список вопросов:
- # На первой стадии изучения языка Java полезно:
- # Написание самой простейшей программы на языке Java невозможно:
- # Класс Xterm языка Java:
- # Тексты, написанные для людей, как правило, обладают:
- # Описания последовательности действий, предназначенные для автоматического устройства:
- # Электронные вычислительные машины (ЭВМ), часто используются в качестве:
- # Описание последовательности действий, достаточно определенное для того, чтобы ее можно было выполнить при помощи некоторого автоматического устройства называют:
- # Алгоритм обычно записывают:
- # При кодировании алгоритма формальная система, предназначенная для записи алгоритмов, называется:
- # При кодировании алгоритма, сам текст алгоритма называется:
- # Процесс создания алгоритма называется:
- # Какая наука занимается исследованием свойств алгоритмов и разработкой методов построения программ?
- # По своему положению и используемым методам Наука программирование является:
- # Попытки каких подходов неизменно терпели неудачу:
- # В математике существует несколько вполне четких определений алгоритма:
- # Все определения алгоритма требуют хорошего знания:
- # Основные свойства любого алгоритма — это:
- # Какое свойство определяет то, что алгоритм должен всегда заканчиваться после выполнения конечного числа шагов:
- # Какое свойство алгоритма предусматривает то, что действия, которые необходимо произвести на каждом шаге, должны быть определены строго и недвусмысленно в каждом возможном случае:
- # В настоящее время существует:
- # Учения о том, как надо писать программы называются:
- # Алгоритм, вычисляющий 1000-е простое число может служить примером алгоритма:
- # Какое свойство определяет то, что алгоритм всегда обязан иметь одну или несколько выходных величин:
- # Какое свойство требует от алгоритма того, чтобы все операции, которые необходимо произвести в алгоритме, должны быть достаточно простыми, чтобы их в принципе можно было выполнить точно и за конечное время с помощью карандаша и бумаги?
- # Набор теорий, стандартов и методов, которые совместно представляют собой способ организации научного знания - это:
- # Способ концептуализации, который определяет, как следует проводить вычисления, и как работа, выполняемая компьютером, должна быть структурирована и организована - это:
- # Важнейшими парадигмами программирования на данный момент времени являются:
- # Примерами языков, предназначенных для директивного программирования являются:
- # Активным началом в директивном программировании считаются:
- # Для директивного программирования верны следующие утверждения:
- # Какие языки реализуют объектно-ориентированный подход:
- # В объектно-ориентированном программировании первичными считаются:
- # В объектно-ориентированном программировании объекты (данные) могут активно взаимодействовать друг с другом с помощью:
- # Функциональное и логическое программирование использует языки типа:
- # Главным в функциональном и логическом программировании является:
- # Для выхода из интерпретатора hugs надо использовать команду:
- # Объектно-ориентированное программирование помогает справиться:
- # Для того чтобы стать профессионалом в программировании, необходимы:
- # методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является реализацией определенного типа, использующая механизм пересылки сообщений и классы, организованные в иерархию наследования называется:
- # Центральный элемент ООП - это:
- # Метод решения задачи, при котором объекты разного рода объединяются общим понятием (концепцией), а затем сгруппированные сущности рассматриваются как элементы единой категории называется:
- # Техника, при которой несущественная с точки зрения интерфейса объекта информация прячется внутри него называется:
- # Свойство объектов, посредством которого экземпляры класса получают доступ к данным и методам классов-предков без их повторного определения называется:
- # Cвойство, позволяющее использовать один и тот же интерфейс для различных действий; полиморфной переменной, например, может соответствовать несколько различных методов называется:
- # Множество объектов, связанных общностью структуры и поведения; абстрактное описание данных и поведения (методов) для совокупности похожих объектов, представители которой называются экземплярами класса называется:
- # Конкретная реализация класса, обладающая характеристиками состояния, поведения и индивидуальности, синоним экземпляра называется:
- # Какой класс задает точку на плоскости:
- # Объявление переменной можно совмещать:
- # Конструктор - это:
- # Основные задачи конструктора заключаются в следующем:
- # Переменные, которые всегда имеются ровно в одном экземпляре, независимо от того как много имеется объектов данного класса называются:
- # Одним из достоинств объектно-ориентированного подхода является возможность использования уже существующих типов для:
- # Язык Java реализует возможность использования уже существующих типов для порождения новых с автоматическим наследованием уже имеющихся свойств следующие механизмы:
- # В языке Java каждый существующий класс неявно наследует класс:
- # Динамический поиск метода никогда не используется в следующих ситуациях:
- # Какие квалификаторы доступа определяют доступность данных или метода, реализуя возможность инкапсуляции:
- # Классы, которые используются как структуры данных, содержащие набор элементов называются:
- # Основными контейнерами являются:
- # Основными контейнерами являются:
- # Контейнер, который можно представлять себе в виде трубы с одним запаянным концом, в которую можно добавлять элементы (и вынимать их) называется:
- # Дек - это симбиоз:
- # Какой линейный двусвязный список — можно представлять себе в виде перекидного календаря или бус, нанизанных на нить:
- # По какому списку можно двигаться только в одном направлении, а вставлять и удалять элементы — только за указателем:
- # Если все элементы контейнера хранятся в векторе непрерывным куском и порядок элементов в имитируемой структуре соответствует порядку элементов в векторе, то такая реализация на базе вектора называется:
- # Реализация очереди на базе так называемого "циклического вектора" является примером:
- # "Сворачивание вектора в кольцо" можно реализовать с помощью метода:
- # Если все элементы контейнера хранятся в одном векторе, а другой вектор — вектор ссылок, определяет реально содержащиеся в имитируемой структуре элементы и их порядок, то такая реализация на базе вектора называется:
- # Типичным примером какой реализации является реализация односвязного списка:
- # Любая целочисленная функция h:M->{0..n-1} называется:
- # Синонимом терминов класс-предок, базовый класс является:
- # Класс состоит из:
- # Определение множества методов, имеющих одинаковое имя, но разные списки аргументов - это:
- # Нахождение выпуклой оболочки последовательно поступающих точек плоскости и вычисление двух ее метрических характеристик относится к задачам:
- # В качестве основы для создания простейшего графического интерфейса используются:
- # Использование аплетов дает возможность:
- # Примерами выпуклых множеств являются:
- # Примерами выпуклых множеств являются:
- # Выпуклыми множествами не являются:
- # Выпуклая оболочка любого выпуклого множества:
- # Для произвольного множества выпуклая оболочка может быть получена как:
- # Выпуклой оболочкой двух точек на плоскости является:
- # Выпуклая оболочка окружности - это:
- # Выпуклая оболочка трех точек, не лежащих на одной прямой, — это:
- # Класса R2Point вполне достаточно для реализации классов:
- # Формула Герона требует большого числа умножений и:
- # Основанная на связи площади с векторным произведением формула использует:
- # Два объекта типа R2Point соответствуют совпадающим точкам плоскости тогда и только тогда, когда:
- # Модуль векторного произведения двух векторов равен:
- # Выяснение того факта, лежат ли три точки на одной прямой, сводится к вычислению площади треугольника и:
- # Минимальный прямоугольник со сторонами, параллельными осям координат, содержащий отрезок - это:
- # Для того чтобы реализовать метод add и конструктор класса Polygon, необходимо аккуратно разобраться с тем, как именно вершины выпуклой оболочки хранятся:
- # Площадь треугольника можно сделать неориентированной, если использовать метод:
- # Одним из важнейших отличий является то, что аплет не содержит метода main и:
- # Аплеты запускаются с помощью:
- # Для создания аплетов необходимо реализовывать подкласс класса:
- # Подкласс класса Applet, определен в пакете:
- # Пакет java.applet является составной частью библиотеки:
- # Для целей вывода графической информации достаточно в классе, выведенном из класса Applet, переопределить метод:
- # Простейшими графическими примитивами являются:
- # Какой из простейших графических примитивов позволяет изобразить заполненный овал:
- # Графический примитив fillRect позволяет:
- # Какой из простейших графических примитивов позволяет изобразить границу овала:
- # Графический примитив drawRect позволяет:
- # Какой из простейших графических примитивов позволяет изобразить отрезок прямой линии:
- # Графический примитив setColor позволяет:
- # В окне какого размера данный аплет:import java.awt.*; import java.applet.*; public class Primitives extends Applet { public void paint (Graphics g) { g.fillRect(20, 20, 40, 60); g.setColor(Color.red); g.drawLine(2, 2, 80, 80); g.drawOval(120, 120, 30, 40); g.drawRect(170, 170, 10, 15); g.setColor(Color.blue); g.fillOval(20, 150, 30, 30); } }изображает заполненный черный и синий прямоугольники, заполненный синий круг, красный отрезок, прямоугольник и овал:
- # В данном аплете:import java.awt.*; import java.applet.*; public class Primitives extends Applet { public void paint (Graphics g) { g.fillRect(20, 20, 40, 60); g.setColor(Color.red); g.drawLine(2, 2, 80, 80); g.drawOval(120, 120, 30, 40); g.drawRect(170, 170, 10, 15); g.setColor(Color.blue); g.fillOval(20, 150, 30, 30); } }операторы import обеспечивают подключение:
- # Функция sin доступна программам на языке Java, как метод:
- # Компилятор - это:
- # Некоторый объект, использующий стек:
- # Для задания грамматики часто используют очень наглядную форму представления, называемую:
- # Воспользоваться следующей грамматикой Gs:e -> ee | ee + | ee * | ee / | a | b | ... | zдля описания языка правильных программ:
- # Какой язык можно рассматривать как язык правильных программ для стекового калькулятора:
- # Для формулы x+y*z существует два существенно различных множества эквивалентных между собой цепочек вывода, каждому из которых соответствует:
- # Грамматика G1 хотя и задает язык правильных арифметических формул, не отражает:
- # Множество нетерминалов для грамматики G2 будет состоять из следующих метасимволов:
- # Какой метасимвол в грамматике G2 обозначает имя переменной:
- # Какой метасимвол в грамматике G2 обозначает терм:
- # Какой метасимвол в грамматике G2 обозначает множитель:
- # Какой метасимвол в грамматике G2 обозначает формулу:
- # Хорошим средством для автоматизации работы над сложными программными проектами является утилита:
- # Утилита make позволяет значительно облегчить труд программиста в процессе:
- # В специальном управляющем файле, обычно именуемом Makefile, необходимо указать следующие цели, которые должны быть достигнуты в процессе работы над проектом:
- # Класс Compf, содержащий метод compile, можно сделать выведенным из класса:
- # Какой метод может обеспечивать обработку всех тех отложенных операций, которые выполнимы в данный момент:
- # Интерпретатор вычисляет значение арифметической формулы, в которой вместо имен переменных содержатся:
- # Интерпретатор совмещает в себе следующие стадии:
- # В случае программ на языках C и C++ компилятор позволяет получить файл, который содержит:
- # Для языка Java компилятор строит так называемый:
- # В римской системе счисления число 3900 может быть представлено так:
- # В римской системе счисления число 438 может быть представлено так:
- # В римской системе счисления число 3678 может быть представлено так:
- # Римскому числу MCCVII соответствует следующее:
- # Римскому числу MMMCMXCIX соответствует следующее:
- # Римскому числу MMXLV соответствует следующее:
- # Римская система счисления является примером следующей системы счисления:
- # В римской системе цифра D всегда обозначает:
- # В римской системе цифра M всегда обозначает:
- # При записи чисел в римской системе счисления значением числа является:
- # В римской системы счисления цифры в записи числа следуют, как правило, в порядке:
- # Какой метод позволяет преобразовать символ в соответствующее ему целое число:
- # Данная программа:public class RecursCompfTest { public static void main(String[] args) throws Exception { RecursCompf c = new RecursCompf(); while (true) c.compile(Xterm.inputChars("Введите формулу -> ")); } }является:
- # Данная программа:public class CompfTest { public static void main(String[] args) throws Exception { Compf c = new Compf(); while (true) c.compile(Xterm.inputChars("Введите формулу -> ")); } }является:
- # Данная программа:public class CalcTest { public static void main(String[] args) throws Exception { Calc c = new Calc(); while (true) c.compile(Xterm.inputChars("Введите формулу -> ")); } }является:
- # Один из способов моделирования геометрических объектов в трехмерном пространстве состоит в том, чтобы аппроксимировать реальный объект:
- # Набором выпуклых плоских многоугольников - это:
- # Многоугольники набора выпуклых плоских многоугольников называются:
- # Стороны многоугольников набора выпуклых плоских многоугольников называются:
- # Примерами полиэдров могут служить:
- # При изображении полиэдра реально рисуются:
- # При построении изображения полиэдра надо удалить части ребер:
- # Часто при задании полиэдра всю информацию о нем разделяют на следующие части:
- # Какой класс позволит задать произвольный вектор и обеспечит все необходимые манипуляции над векторами в трехмерном пространстве:
- # Для представления вершин полиэдра можно использовать выведенный из класса R3Vector класс:
- # Для представления ребер полиэдра необходимо использовать класс:
- # Грани полиэдра можно описать с помощью класса:
- # Какой класс выводит плоское изображение в отдельном фрейме:
- # Какой класс позволяет создать фрейм и, используя простейшие графические примитивы, построить в нем требуемое изображение:
- # В каком классе определены все основные графичиские примитивы:определены все основные графические примитивы:
- # Класс Graphics входит в пакет:
- # Какой метод класса Graphics с помощью метода drawLine рисует заданный отрезок:
- # Ряд методов какого класса предназначен для нахождения координат проекции произвольного трехмерного вектора, как реальных, так и нормализованных:
- # Учет затенения частей ребер гранями полиэдра — может решаться с помощью класса:
- # В каком классе реализуется метод Main:
- # Метод main класса PolyedrTest выполняет ввод:
- # Освещенные участки - это:
- # Затененные участки - это:
- # Для получения изображения видимой части ребра нужно учесть тени от всех граней полиэдра, а затем:
- # Задача нахождения теней и просветов на конкретном ребре:
- # В каждом экземпляре класса Segment должны храниться:
- # Какой метод инициализирует список просветов list, помещая в него единственный элемент — ребро целиком:
- # У полубесконечной призмы основанием является:
- # Боковая поверхность полубесконечной призмы параллельна:
- # Треугольную призму можно представить в виде:
- # Для реализации метода hCross нахождения пересечения с горизонтальным полупространством нужно найти нормаль к грани и вызвать метод:
- # Значительно облегчает решение задач на модификацию применение утилиты:
- # Для построения изображения куба достаточно выполнения команды:
- # Задание на построение цели doc сводится к вызову утилиты:
- # Многострочный комментарий:
- # Хорошей идеей является попытка использования их для проекций ребер и граней:
- # Одним из самых значительных изменений за последние двадцать лет в информатике и программировании стало появление:
- # Важнейшими свойствами языка Java являются следующие:
- # Язык Java обладает следующими качествами:
- # Язык Java обладает следующими качествами:
- # Написание простейших программ на языке Java требует знания:
- # Технология программирования, в основе которой лежит способность человека обобщать, классифицировать и генерировать абстракции - это:
- # Концепция ООП базируется на таких понятиях как:
- # В программировании объектами могут быть:
- # Произвольный объектно-ориентированный язык программирования характеризуют следующие основных свойства:
- # Хорошая программа должна обладать следующими качествами:
- # Научиться писать понятные и легко модифицируемые программы на языке Java легко, если соблюдать следующие правила:
- # Компилятор языка Java запускается обычно с помощью команды:
- # Минимальная неделимая единица языка Java - это:
- # В языке Java существует:
- # Сколько существует видов комментариев в языке Java:
- # Объект Xterm:
- # Объект Xterm:
- # Множество всех состояний, в которых может находиться объект Xterm, называется:
- # В языке Java для вызова метода необходимо сначала указать объект, к которому применяется тот или иной метод, а затем:
- # Дополнительные объекты называют:
- # Завершается любой оператор в языке Java:
- # Типы данных в языке Java подразделяются на:
- # Множество всех объектов с одинаковым пространством состояний и одинаковым набором методов называется:
- # Операторы бывают:
- # Сколько методов с именем print имеется в классе Xterm:
- # Пустую строку обозначает:
- # Печать чего приведет к тому, что курсор терминала перемещается в начало следующей строки:
- # Какой метод класса Xterm позволяет осуществить ввод строки символьной информации, размещая ее в массиве символов:
- # В том случае, когда программа использует ввод чисел, строку:public static void main(String[] args) следует заменить на:
- # Своеобразное проявление полиморфизма, когда два или более различных методов имеют одно и то же имя и различаются только количеством или типами аргументов - это:
- # Управляющими конструкциями языка Java являются:
- # Логическими операторами являются:
- # Дизъюнкция истинна, если:
- # В общей форме оператор if-else записывается следующим образом:
- # Могут ли быть вложенным управляющие конструкции if и if-else?
- # Общая форма записи тернарного оператора условия ?: имеет следующий вид:
- # Ошибки в программах - это:
- # Debugging дословно означает:
- # В программировании ошибку гораздо легче:
- # Для того, чтобы изучить какую-либо теорию, необходимо:
- # Язык, на котором можно строго сформулировать постановку задачи и доказать правильность конкретной программы - это:
- # Предикат, обладающий некоторыми специальными свойствами - это:
- # Функция, действующая из некоторого множества значений переменных программы в множество из двух значений {T, F} ( Да и Нет) - это:
- # В теории формальных языков принято задавать язык с помощью:
- # Примерами конечных алфавитов могут являтся:
- # Цепочки часто называют:
- # Для задания грамматики часто используют очень наглядную форму представления, называемую:
- # Предикат можно назвать константным, если в нем:
- # Значение любого константного предиката находится с помощью:
- # Прямое произведение множеств состояний всех переменных программы - это:
- # Большинство предикатов в состоянии, в котором не определены некоторые из переменных, входящих в него:
- # Среди огромного множества всех предикатов особую роль играют те из них, которые всегда являются:
- # Если предикат истинен во всех состояниях, в которых он определен, то он называется:
- # Один из простейших способов доказать, что предикат является тавтологией, — это:
- # Использование законов эквивалентности позволяет производить следующее полезное действие:
- # Определены следующие кванторы:
- # Идентификатор, непосредственно следующий в предикате за квантором называется:
- # Идентификатор, не являющийся связанным называется:
- # Ограничение на использование кванторов в предикатах таково:
- # Предикат с переменными любых типов, который может содержать кванторы и не иметь скобок, не являющимися необходимыми для его однозначного толкования называется:
- # Для предикатов с кванторами справедливы дополнительные законы эквивалентности, называемые также:
- # Использование круглых скобок для группировки всегда позволяет:
- # В языке Java левоассоциативность обозначается символом:
- # В языке Java правоассоциативность обозначается символом
- # Операторы с каким приоритетом в языке Java выполняются в первую очередь:
- # Оператор ++ языка Java имеет следующий тип операции:
- # Оператор -- языка Java имеет следующий приоритет:
- # Оператор << языка Java имеет следующий приоритет:
- # Оператор == языка Java имеет следующий приоритет:
- # Данный оператор != языка Java имеет следующий тип операций:
- # Оператор ?: языка Java имеет следующий приоритет:
- # Множествам целых Z и действительных R чисел в большинстве языков программирования соответствуют:
- # В языке Java используемые в программах переменные величины и константы типов int и double принимают значения из множеств:
- # Какая информация в компьютере представляется в двоичной форме:
- # Как оперативная, так и внешняя память могут рассматриваться, как:
- # Под внешней памятью подразумеваются такие носители информации, как:
- # Наименьшей единицей измерения информации является:
- # Единицами измерения информации являются:
- # Из скольки бит состоит один байт?
- # Байта достаточно для хранения:
- # С помощью кодировки ASCII стандартизированы:
- # Символы русского алфавита расположены во второй половине таблицы:
- # Наиболее распространенными кодировками русского текста являются:
- # Два последовательных байта для кодирования всех возможных символов использует следующий стандарт:
- # К целочисленным типам в языке Java относятся:
- # Для хранения переменной типа short в языке Java отводится:
- # Для хранения переменной типа long в языке Java отводится:
- # В Java применяется представление чисел в так называемом:
- # В информатике часто применяются следующие системы счисления:
- # В шестнадцатеричной системе в качестве цифр от десяти до пятнадцати используются буквы:
- # В типе byte языка Java любое число занимает:
- # Отрицательные числа всегда имеют в своем двоичном представлении:
- # Множество элементов типа byte можно представлять себе в виде свернутого в кольцо отрезка
- # Для представления вещественных чисел в языке Java используют переменные и константы типов:
- # Для хранения переменной типа float в языке Java отводится:
- # Для хранения переменной типа double в языке Java отводится:
- # Какое свойство определяет то, что между любыми двумя различными числами всегда найдется отличное от них третье:
- # Использование чисел с плавающей точкой является наиболее распространенным способом реализации:
- # При делении единицы на минус ноль получается:
- # Для извлечения квадратного корня в языке Java можно использовать:
- # К арифметическим операторам языка Java, которые определены для всех числовых типов, относятся:
- # К арифметическим операторам языка Java, которые определены для всех числовых типов, относятся:
- # Результат выполнения операций деления и деления по модулю для целочисленных операндов является:
- # К побитовым операторам языка Java относятся следующие:
- # К побитовым операторам языка Java относятся следующие:
- # Какой пакет дает возможность программисту работать с целыми и вещественными числами произвольной длины и точности:
- # Способ организации обработки данных, при котором программа вызывает сама себя непосредственно, либо с помощью других программ называется:
- # Способ организации обработки данных, при котором определенные действия повторяются многократно, не приводя при этом к рекурсивным вызовам программ называется:
- # В вычислении рекурсивно определенной функции на множестве программных переменных заключается:
- # В математической модели рекурсии значение функции для всех значений аргумента, начиная с некоторого, определяется:
- # Факториал n! целого неотрицательного числа n задается следующими соотношениями:
- # Математическая модель итерации сводится к повторению некоторого преобразования T:X -> X:
- # Рекурсия и итерация:
- # Наилучшие рекурсивный и итерационный алгоритм имеют:
- # При написании рекурсивных программ обычно необходимо исследовать следующие основные вопросы:
- # Язык Java предусматривает следующие операторы цикла:
- # Какой из операторов цикла языка Java обычно используют в ситуации, когда тело цикла нужно выполнить нуль или более раз:
- # Какой из операторов цикла языка Java применяется, если выполнение тела цикла хотя бы раз обязательно:
- # Какой из операторов цикла языка Java является наиболее универсальным и используется в различных ситуациях:
- # Дополнительными средствами, используемыми при организации циклов, являются операторы:
- # Какой из операторов языка Java прерывает выполнение цикла:
- # Какой из операторов языка Java позволяет досрочно перейти к выполнению следующей итерации, проигнорировав часть операторов тела цикла, еще не выполненных в текущей итерации:
- # Какой оператор отсутствует в языке Java:
- # Данная программа:public class FactIv1 { public static void main(String[] args) throws Exception { int n, i, k; n = Xterm.inputInt("Введите n -> "); i = k = 1; while (i <= n) { k *= i; i += 1; } Xterm.println("" + n + "! = " + k); } }вычисляет:
- # Описание примерного поведения функции T(n)при больших значениях параметра n называется:
- # Данная программа:public class FibIv1 { public static void main(String[] args) throws Exception { int n = Xterm.inputInt("Введите n -> "); Xterm.print("f(" + n + ")"); if (n < 0) { Xterm.print(" не определено\n"); } else if (n < 2) { Xterm.println(" = " + n); } else { long i = 0; long j = 1; long k; int m = n; while (--m > 0) { k = j; j += i; i = k; } Xterm.println(" = " + j); } } }печатает n-ое число Фибоначчи и имеет:
- # Чем быстрее компьютер, тем больше:
- # Язык Java позволяет работать с массивами элементов:
- # Когда возникает необходимость хранить несколько однотипных значений используют:
- # Для массивов верны утверждения:
- # В языке Java, для того чтобы завести массив, необходимо:
- # Для того, чтобы зарезервировать память для элементов массива на языке Java необходимо воспользоваться оператором:
- # Массив из трех целых чисел, содержащий величины 3, 7 и 11, можно задать так:
- # Элементы любого массива нумеруются:
- # Для доступа к i-му элементу массива используется выражение:
- # Данная программа:public class MaxArr { public static void main(String[] args) throws Exception { int n, i, a[]; n = Xterm.inputInt("Введите длину массива n -> "); a = new int[n]; for (i=0; i<n; i++) a[i] = Xterm.inputInt("Введите a[" + i + "] -> "); int max = a[0]; for (i=1; i<n; i++) if (a[i] > max) max = a[i]; Xterm.println("Максимальный элемент массива = " + max); } }печатает:
- # Данная программа:public class NumMaxArr { public static void main(String[] args) throws Exception { int n, i, a[]; n = Xterm.inputInt("Введите длину массива n -> "); a = new int[n]; int max = Integer.MIN_VALUE; int nMax = 0; for (i=0; i<n; i++) { a[i] = Xterm.inputInt("Введите a[" + i + "] -> "); if (a[i] < max) { max = a[i]; nMax = 1; } else if (a[i] == max) nMax += 1; } Xterm.println("Количество макс. элементов = " + nMax); } }печатает количество максимальных элементов непустого массива:
- # Часто при решении задачи, связанной с обработкой последовательно поступающих элементов:
- # При написании программы, вводящей последовательность целых чисел, и печатающую количество ее максимальных элементов имеются следующие ограничения:
- # Конструкция try-catch, предназначенна для:
- # Нечто препятствующее продолжению нормального выполнения программы:
- # Фраза, инвертирование которой не изменяет ее называется:
- # Предикаты нам нужны прежде всего для того, чтобы иметь возможность ясно и недвусмысленно формулировать:
- # В текст программы зачастую полезно включать предикаты, которые позволяли бы человеку или компьютеру проверять:
- # В тех случаях, когда утверждения проверки корректности хода выполнения программы предназначены только для человека, они оформляются в виде:
- # Часто полезно поручить проверку истинности предикатов в процессе выполнения программы:
- # Проверка истинности предикатов в процессе выполнения программы в различных языках программирования реализована:
- # В программах на языке C можно использовать следующий макрос, который в случае ложности его аргумента немедленно прекращает выполнение программы, сообщая о причине этого:
- # Что позволяет реализовать проверку истинности предикатов в процессе выполнения программы в языке Java:
- # Данная программа:public class Assert { public static void main(String[] args) throws Exception { int n = Xterm.inputInt("Введите n -> "); if (n <= 0) throw new Exception("n <= 0"); Xterm.println("n = " + n); } }содержит:
- # При вводе неположительного числа данная программа:public class Assert { public static void main(String[] args) throws Exception { int n = Xterm.inputInt("Введите n -> "); if (n <= 0) throw new Exception("n <= 0"); Xterm.println("n = " + n); } }прекращает свое выполнение и печатает следующий текст:
- # Для того чтобы доказывать правильность программ необходимо прежде всего дать строгое определение понятию:
- # Определение понятия правильная программа зависит от:
- # Спецификацией {Q} S {R} программы S, где Q и R — предикаты, называется предикат, означающий, что если выполнение S началось в состоянии, удовлетворяющем Q, то имеется гарантия, что оно завершится через конечное время:
- # В данном случае:{Q} S {R} предикат Q называется:
- # В данном случае:{Q} S {R} предикат R называется
- # Так как спецификация программы является предикатом, то она может быть:
- # Следующая спецификация:{i=0}"i++;"{i=1}:
- # Следующая спецификация:{i=0}"i++;"{i=0}:
- # Следующая спецификация:{i=0}"i++;"{i=j}:
- # Спецификация программы является единственным корректным способом:
- # Программа S является правильной при заданных Q и R, если спецификация {Q} S {R} является:
- # С практической точки зрения особый интерес представляют программы, которые позволяют:
- # Предикат, описывающий максимально широкое множество в пространстве состояний переменных программы S, на котором гарантируется получение постусловия R называется:
- # Предикат, описывающий максимально сильные ограничения на состояние переменных программы S, которые могут быть получены при данном предусловии Q:
- # Преобразователь предикатов wp(S,R) обладает следующими свойствами:
- # Какое свойство является дистрибутивностью конъюнкции преобразователя предикатов wp(S,R):
- # Какое свойство является закон исключенного чуда преобразователя предикатов wp(S,R):
- # В данном случае:wp("System.exit(0);",R)=F выполнение вызова метода "System.exit(0)" приводит:
- # В данном случае:wp("System.exit(0);",R)=F при каком начальном состоянии после его выполнения предикат R будет истинным:
- # Выражение b[i] само по себе может оказаться неопределенным:
- # Предикат inrange(b,i) определяет:
- # Управляющая конструкция if эквивалентна использованию пустого оператора:
- # Оператор switch может быть заменен несколькими вложенными друг в друга операторами:
- # Для того чтобы задать все основные конструкции выбора языка Java, достаточно дать определение только одной из них, — конструкции:
- # Для практических приложений часто необходимо не вычисление слабейшего предусловия, а лишь проверка того факта, что некоторое другое известное предусловие:
- # В терминах слабейшего предусловия можно определить:
- # Для определения слабейшего предусловия wp("while(e)S;",R) потребуются:
- # Все задачи на написание программ можно разделить на следующие группы:
- # К простейшим задачам на написание программ можно отнести:
- # При решении задач на "программирование в малом" оправдано применение различных методов разработки программ типа:
- # Характеристическим свойством каких задач является их простая сводимость к совокупности таких задач на обработку информации, для решения которых достаточно применения итерации или рекурсии:
- # К какому классу относятся почти все практические задачи:
- # Для каких задач аккуратная формулировка постановки задачи является проблемой:
- # Объектно-ориентированное проектирование в значительной мере помогает справиться со сложностью задач типа больших проектов, позволяя свести их к решению:
- # Ренализация задач на "программирование в малом" не превосходит:
- # Название классификации методов решения задач на обработку информаци - это:
- # Обычным способом программной реализации итерации является:
- # Спецификация задачи на итерацию имеет вид:
- # Математическая модель итерации является слишком общей и:
- # Выражение взаимосвязи между меняющимися в теле цикла объектами в виде неизменного условия - это основная идея:
- # Инвариант помогает сконструировать команды:
- # Любая тавтология является:
- # Ограничивающая функция позволяет:
- # Ограничивающая функция h:X ->{Z}:
- # Что делает данная программа:public class MulI { public static void main(String[] args) throws Exception { int a = Xterm.inputInt("a -> "); int b = Xterm.inputInt("b -> "); int x = a, y = b, z = 0; while (y > 0) { if ((y&1) == 0) { y >>>= 1; x += x; } else { y -= 1; z += x; } } Xterm.println("a * b = " + z); } }:
- # Данная функция:f:R->R,f(x)=sin x является T-инвариантной относительно преобразования:
- # Cвойствами наибольшего общего делителя являются:
- # Данная программа:public class Gcd { public static void main(String[] args) throws Exception { int x = Xterm.inputInt("x -> "); int y = Xterm.inputInt("y -> "); Xterm.print("gcd(" + x + "," + y + ") ="); while ( (x != 0) && (y != 0) ) { if (x >= y) x -= y; else y -= x; } Xterm.println(" " + (x+y)); } }находит наибольший общий делитель gcd(x,y) двух целых неотрицательных чисел x и y:
- # Индуктивные функции определены на последовательностях:
- # При работе с индуктивными функциями алфавитом X последовательности X* элементов является:
- # При работе с индуктивными функциями последовательности X* элементов алфавита X символом последнего является:
- # При работе с индуктивными функциями последовательности X* элементов алфавита X цепочкой над последним является:
- # При работе с индуктивными функциями последовательности X* элементов алфавита X цепочки над последним часто называют:
- # Множество всех цепочек над алфавитом X принято обозначать:
- # Длинной цепочки называется:
- # Данная операция:o:X* x X* -> X* является операцией:
- # Функция f:X*->Y называется индуктивной, если f(w o x) можно вычислить, зная:
- # Схема вычисления индуктивной функции напоминает:
- # Схема вычисления индуктивной функции позволяет легко построить программу вида:
- # Простым примером, иллюстрирующим схему вычисления индуктивной функции, является задача нахождения значения многочлена:
- # Эффективный метод вычисления значения многочлена в точке носит имя:
- # При решении задач на рекурсию необходимо:
- # При использовании схемы вычисления инвариантной функции необходимо указать:
- # Теоремой, на которой базируется схема проектирования цикла при помощи инварианта, является утверждение, которое:
- # Истинность утверждения на котором базируется схема проектирования цикла при помощи инварианта может быть выведена из:
- # Свойствами преобразователя предикатов wp или определением оператора цикла являются:
- # Какую функцию надо взять в качестве ограничивающей, чтобы правильность данной программы:public class Gcd { public static void main(String[] args) throws Exception { int x = Xterm.inputInt("x -> "); int y = Xterm.inputInt("y -> "); Xterm.print("gcd(" + x + "," + y + ") ="); while ( (x != 0) && (y != 0) ) { if (x >= y) x -= y; else y -= x; } Xterm.println(" " + (x+y)); } }легко могла быть доказана:
- # В данном случае:public class Gcd { public static void main(String[] args) throws Exception { int x = Xterm.inputInt("x -> "); int y = Xterm.inputInt("y -> "); Xterm.print("gcd(" + x + "," + y + ") ="); while ( (x != 0) && (y != 0) ) { if (x >= y) x -= y; else y -= x; } Xterm.println(" " + (x+y)); } }сохранение инварианта после выполнения тела цикла следует из:
- # На практике постановка задачи:
- # Любая корректная постановка задачи содержит:
- # Предусловие и постусловие, которые содержатся в постановке задачи должны послужить основой для построения:
- # Что соответствует отсутствию ограничений на начальные условия, в которых должна правильно работать программа:
- # Если предусловие Q имеет вид T, то в этом случае инвариант можно строить только исходя из:
- # Программирование называют:
- # Описание того, что происходит с множеством переменных программы в процессе выполнения цикла называется:
- # Основным методом построения инварианта является:
- # При использовании основного метода построения инварианта часто удается получить:
- # При использовании основного метода построения инварианта и получении условия продолжения цикла в его качестве берется:
- # Сколько применяется реально методов построения инварианта:
- # Методами построения инварианта являются:
- # Предикат A^B^C можно ослабить до:
- # При ослаблении предиката A^B^C до A^C имеет место:
- # Предикат 5i<10 можно ослабить до:
- # При ослаблении предиката 5<i<10 до 0<i<10 имеет место:
- # В чем причина того, что метод добавления дизъюнктивного члена не применяется:
- # При построении инварианта с помощью метода устранения конъюнктивного члена в качестве условия продолжения цикла e может быть взято:
- # При построении инварианта с помощью метода устранения конъюнктивного члена истинность инварианта перед началом выполнения цикла легко устанавливается присваиванием:
- # Для того чтобы при построении инварианта с помощью метода устранения конъюнктивного члена цикл завершился, величина a должна:
- # Простейший способ увеличения величины a, при построении инварианта с помощью метода устранения конъюнктивного члена, - это:
- # При построении инварианта с помощью метода устранения конъюнктивного члена увеличение величины a на единицу на каждой итерации цикла:
- # Данную программу:public class Sqrt { public static void main(String[] args) throws Exception { int n = Xterm.inputInt("n -> "); int a = 0; while ( n >= (a+1)*(a+1) ) a += 1; Xterm.println("sqrt(" + n + ") = " + a); } }можно переписать в следующем компактном виде:
- # При написании программы, определяющей первое вхождение заданного целого числа x в заданный массив b[0..m-1] целых чисел (m>0), если известно, что x находится в массиве b, в качестве ограничивающей функции можно попробовать взять:
- # В качестве примера использования метода замены константы переменной можно рассматривать:
- # Программу, находящая сумму s элементов заданного целочисленного массива b[0..n-1], элементы которого и величину n изменять нельзя будет иметь вид:
- # В данном случае:"i=0;s=0;while(i<n)S;" уменьшить h можно:
- # Данная программа:public class Sqrt3 { public static void main(String[] args) throws Exception { int a, b, n; n = Xterm.inputInt("n -> "); a = 0; b = n+1; while (a+1 != b) { int c = (a+b)/2; if (c*c <= n) a = c; else b = c; } Xterm.println("sqrt(" + n + ") = " + a); } }находит приближенное значение квадратного корня:
- # Какой метод в значительной мере подобен методу расширения области значения переменной:
- # При нахождении минимального числа, содержащегося в каждом из трех упорядоченных по возрастанию массивов целых чисел, в предположении, что таковое существует, в качестве действий, которые будут приближать цикл к завершению можно использовать следующие операторы:
- # Данная программа:public class Arr3 { public static void main(String[] args){ int a[] = { 1, 2, 4, 8,16,32,64,128}; int b[] = {10,12,14,16,18,20,22, 24}; int c[] = { 9,12,13,16,17,20,21, 24}; int i = 0, j = 0, k = 0; while (true) { if (a[i] < b[j]) { i++; continue; } if (b[j] < c[k]) { j++; continue; } if (c[k] < a[i]) { k++; continue; } Xterm.println("Минимальное общее число=" + a[i]); return; } } }реализует алгоритм нахождения минимальное число, содержащееся в каждом из трех упорядоченных:
- # Подавляющее большинство функций на пространстве последовательностей:
- # Доказательство индуктивности функции обычно проводят:
- # Какая функция позволяет написать программу, реализующую схему вычисления индуктивной функции:
- # Для доказательства факта, что заданная функция не является индуктивной, применяют:
- # Теорема критерия индуктивности утверждает, что f индуктивна тогда и только тогда, когда из равенства значений f на последовательностях a и b следует равенство значений f:
- # Если при доказательстве теоремы о критерии индуктивности найдутся две различные цепочки a и b такие, что f(a) = f(b), то можно гарантировать, что:
- # В качестве примера использования критерия индуктивности можно доказать, что функция f:Z*->Z количество максимальных элементов последовательности целых чисел:
- # Схема вычисления индуктивной функции может быть несколько упрощена при условии наличия у функции:
- # Для функции f:{0,1}*->{T,F} все элементы цепочки:
- # Для функции f:{0,1}*->{T,F} все элементы цепочки равны нулю значение F является:
- # Для того чтобы расширить сферу применимости схемы вычисления индуктивной функции вводится понятие:
- # Для вычисления значения f(w) не являющейся индуктивной функции f на цепочке w применяется следующая:
- # Минимальные индуктивные расширения хороши тем, что:
- # Для любой функции на пространстве последовательностей существует и единственно:
- # Минимальное индуктивное расширение любой функции f:X*->Y единственно с точностью до:
- # Минимальное индуктивное расширение для любой функции f:X*->Y:
- # Каноническое минимальное индуктивное расширение для доказательства теоремы о минимальном индуктивном расширении для любой функции f:X*->Y, строится в:
- # Каноническое индуктивное расширение, построенное в ходе доказательства теоремы о минимальном индуктивном расширении для любой функции f:X*->Y, позволяет убедиться в истинности:
- # Необходимость первого условия критерия минимальности следует непосредственно из:
- # Второе условие критерия минимальности выполнено по построению:
- # Минимальные индуктивные расширения обладают тем достоинством, что позволяют свести к минимуму ту дополнительную информацию, которая необходима для:
- # Для произвольной функции f на пространстве последовательностей существует единственный с точностью до изоморфизма:
- # Данная программа:public class NumMaxSeq2 { public static void main(String[] args) { int y1 = 0, y2 = Integer.MIN_VALUE; try { while (true) { int x = Xterm.inputInt("x -> "); if (x == y2) { y1 += 1; } else if(x > y2) { y1 = 1; y2 = x; } } } catch (Exception e) { Xterm.println("\nn = " + y1); } } }вводит последовательность целых чисел, и печатает:
- # В данной программе:public class NumMaxSeq2 { public static void main(String[] args) { int y1 = 0, y2 = Integer.MIN_VALUE; try { while (true) { int x = Xterm.inputInt("x -> "); if (x == y2) { y1 += 1; } else if(x > y2) { y1 = 1; y2 = x; } } } catch (Exception e) { Xterm.println("\nn = " + y1); } } }:любая ошибка при вводе рассматривается как:
- # Данная программа:public class First1{ public static void main(String[] args) throws Exception { int x0 = Xterm.inputInt("x0 ->"); int y1 = 0, y2 = 0; try { while (true) { int x = Xterm.inputInt("x -> "); y2 += 1; if ( (y1 == 0) && (x == x0) ) y1 = y2; } } catch (Exception e) { Xterm.println("\nn = " + y1); } } }определяющую номер f первого элемента, равного Xo, в последовательности:
- # Данная программа:public class First1{ public static void main(String[] args) throws Exception { int x0 = Xterm.inputInt("x0 ->"); int y1 = 0, y2 = 0; try { while (true) { int x = Xterm.inputInt("x -> "); y2 += 1; if ( (y1 == 0) && (x == x0) ) y1 = y2; } } catch (Exception e) { Xterm.println("\nn = " + y1); } } }по достижению конца вводимой последовательности:
- # По достижению конца вводимой последовательности данной программой:public class First1{ public static void main(String[] args) throws Exception { int x0 = Xterm.inputInt("x0 ->"); int y1 = 0, y2 = 0; try { while (true) { int x = Xterm.inputInt("x -> "); y2 += 1; if ( (y1 == 0) && (x == x0) ) y1 = y2; } } catch (Exception e) { Xterm.println("\nn = " + y1); } } }управление передается на:
- # Данная программа:public class AverSeq{ public static void main(String[] args) { double y1 = 0., y2 = 0.; try { while (true) { double x = Xterm.inputDouble("x -> "); y1 = (y1*y2 + x) / (y2 + 1.); y2 += 1; } } catch(Exception e) { Xterm.println("\nf = " + y1); } } }вводит последовательность вещественных чисел, и печатает:
- # Данная программа:public class AverSeq{ public static void main(String[] args) { double y1 = 0., y2 = 0.; try { while (true) { double x = Xterm.inputDouble("x -> "); y1 = (y1*y2 + x) / (y2 + 1.); y2 += 1; } } catch(Exception e) { Xterm.println("\nf = " + y1); } } }вводит последовательность вещественных чисел, и печатает среднее арифметическое ее элементов для:
- # При написании программы, определяющей количество вхождений образца abcd в последовательность символов, функция F3 - это::
- # При написании программы, определяющей количество вхождений образца abcd в последовательность символов, для доказательства сюръективности функции F необходимо:
- # Данная программа:import java.io.*; public class ABCDSeq { public static void main(String[] args) { DataInputStream in = new DataInputStream(System.in); int f = 0, n = 0; try { while (true) { char x = (char)in.readByte(); if (x=='\n') continue; if (x=='d' && n==3) { f += 1; n = 0; } else if (x=='c' && n==2) { n = 3; } else if (x=='b' && n==1) { n = 2; } else if (x=='a') { n = 1; } else{ n = 0; } } } catch(Exception e) { Xterm.println("f = " + f); } } }определяет:
- # В данной программе:import java.io.*; public class ABCDSeq { public static void main(String[] args) { DataInputStream in = new DataInputStream(System.in); int f = 0, n = 0; try { while (true) { char x = (char)in.readByte(); if (x=='\n') continue; if (x=='d' && n==3) { f += 1; n = 0; } else if (x=='c' && n==2) { n = 3; } else if (x=='b' && n==1) { n = 2; } else if (x=='a') { n = 1; } else{ n = 0; } } } catch(Exception e) { Xterm.println("f = " + f); } } }используется метод:
- # В данной программе:import java.io.*; public class ABCDSeq { public static void main(String[] args) { DataInputStream in = new DataInputStream(System.in); int f = 0, n = 0; try { while (true) { char x = (char)in.readByte(); if (x=='\n') continue; if (x=='d' && n==3) { f += 1; n = 0; } else if (x=='c' && n==2) { n = 3; } else if (x=='b' && n==1) { n = 2; } else if (x=='a') { n = 1; } else{ n = 0; } } } catch(Exception e) { Xterm.println("f = " + f); } } }символ '\n' оказывается введенным после того, как пользователь нажимает клавишу:
- # Как в данной программе:import java.io.*; public class ABCDSeq { public static void main(String[] args) { DataInputStream in = new DataInputStream(System.in); int f = 0, n = 0; try { while (true) { char x = (char)in.readByte(); if (x=='\n') continue; if (x=='d' && n==3) { f += 1; n = 0; } else if (x=='c' && n==2) { n = 3; } else if (x=='b' && n==1) { n = 2; } else if (x=='a') { n = 1; } else{ n = 0; } } } catch(Exception e) { Xterm.println("f = " + f); } } }игнорируется символ '\n':
- # какие операторы необходимы для вызова метода "readByte":