Структуры и типы данных языка программирования
Концепция типов данных развилась в языках программирования высокого уровня как естественное отражение того факта, что обрабатываемые программой двоичные данные могут иметь различные множества допустимых значений, храниться в памяти компьютера различным образом, занимать различные объемы памяти и обрабатываться с помощью различных команд процессора.
На самом деле типы данных различаются уже в базовом Ассемблере для процессоров х86 (например, "целое число" и "вещественное число"). Это объясняется тем, что для чисел рассматриваемых типов отводятся различные объемы памяти, используются различные регистры микропроцессора, а для операций с ними применяются различные команды Ассемблера.
Как правило, типы в языках программирования не всегда строго соответствуют подобным типам в математике. Например, тип данных "целое число" всех языков программирования не соответствует принятому в математике понятию целого числа, в математике указанный тип не имеет ограничений ни сверху, ни снизу (не является перечислимым), а в языках программирования эти ограничения есть. Как правило, в языках и системах имеется множество целых типов, отличающихся допустимым диапазоном значений (определяемым объемом занимаемой памяти). Стоит отметить, что в большинстве реализаций языков и систем выход за границу целого типа (переполнение) не приводит к исключительной ситуации (возникновению ошибки времени исполнения программы).
Каждый язык программирования поддерживает один или несколько встроенных типов данных (базовых типов), кроме того, развитые языки программирования предоставляют программисту возможность описывать собственные типы данных, комбинируя или расширяя существующие.
Принято различать следующие основные типы данных:
Простые. Представляют собой базовые типы, характеризующиеся объемом памяти, выделяемой под переменную или константу данного типа, диапазоном значений, которые может принимать переменная и способом ее обработки машиной. Подробнее основные простые типы данных будут рассмотрены далее.
Перечислимый тип. Может хранить только те значения, которые прямо указаны (перечислены) в его описании. Чаще всего значения перечислимого типа представляют собой лишь удобные для человека обозначения (например, названия дней недели), а компьютер интерпретирует их как целочисленные значения (например, названию дня недели соответствует его номер). В ряде языков определены также типы-диапазоны, которые могут принимать лишь ограниченный набор числовых значений (например, тип данных для номера дня в месяце может принимать значения от 1 до 31 включительно). Диапазоны удобны тем, что могут обеспечивать встроенный контроль значений переменных от переполнения. Обычно диапазоны записываются в следующем виде: 1..31
Числовые типы. Хранят числа, к которым могут применяться обычные арифметические операции. К числовым типам относятся:
· Целочисленные типы записываются со знаком + или -, или без знака, по обычным арифметическим правилам. Различают целочисленные типы со знаком, которые могут принимать как положительные, так и отрицательные значения (обычные названия типов – Integer или Int, Long Int); и без знака, которые могут принимать только неотрицательные значения (Word).
· Вещественные типы могут записываться в одной из двух форм:
обычная запись: 2.5 -3.14 2.
В большинстве языков программирования целая часть отделяется от дробной символом точки;
экспоненциальная ("научная")запись: в этой форме вещественное число представляется в виде m*10p, где m - мантисса или основание числа, принимающее значение 0.1≤|m|≤1, p - порядок числа, заданный целочисленной константой. Действительно, любое вещественное число можно представить в экспоненциальной форме:
-153.5 -0.1535*103
99.005 0.99005*102
Во всех IBM‑совместимых компьютерах вещественные числа хранятся как совокупность мантиссы и порядка, что позволяет упростить операции над ними, используя специальную арифметику, отдельно обрабатывающую мантиссу и порядок. Для программной записи числа в экспоненциальной форме в качестве обозначения "умножить на 10 в степени" используется символ E или e (латинские):
-153.5 -0.1535*103 -0.1535E3 или -1.535E02
99.005 0.99005*102 0.99005E+02
В большинстве языков различаются вещественные типы обычной (Real или Float) и двойной (Double) точности. В последнем случае под число выделяется больший объем памяти и сохраняется большее число знаков в дробной части.
· Числа произвольной точности, обращение с которыми происходит посредством длинной арифметики. Примером языка с встроенной поддержкой таких типов является UBASIC, часто применяемый среди криптографов.
Символьный тип (char). Хранит код одного символа. Могут использоваться различные кодировки. Во многих языках величины символьного типа записываются как символ, заключенный в апострофы или двойные кавычки. В разных языках под типом char может пониматься:
· набор печатных символов из алфавита, зафиксированного в описании языка (для большинства языков англоязычного происхождения этот алфавит соответствует кодовому набору ASCII);
· произвольная комбинация нулей и единиц, размещаемых в одном байте.
В первой интерпретации (свойственной языкам линии Паскаль) для значений типа char определены только операции сравнения в соответствии с принятым алфавитом. Например, при использовании ASCII выполняются соотношения 0 < 1 < ...< 9 < A < B < ...< Z < a < b < ...< z; известно, что если значение переменной x удовлетворяет условию 0 <= x <= 9, то это значение - цифра; если A <= x <= Z, то значение x - прописная буква; если a <= x <= z, то значение x - строчная буква и т.д. При использовании этой интерпретации арифметические операции над символьными значениями не допускаются.
Во второй интерпретации (свойственной языкам линии Си) литеральными константами типа char по-прежнему могут быть печатные символы из принятого в языке алфавита, но возможно использование и числовых констант, задающих желаемое содержимое байта. В этом случае, как правило, над значениями типа char возможно выполнение не только операций сравнения, но и операций целочисленной арифметики.
Наконец, в некоторых языках явно различают тип char как чисто символьный тип и тип сверхмалых целых (tiny integer) как тип целых чисел со значениями, умещающимися в один байт.
В современных компьютерах, как правило, поддерживается целочисленная байтовая арифметика, обеспечивающая как первую, так и вторую интерпретацию типа char.
Логический тип (bool, boolean, logical). Имеет два значения: истина и ложь. К величинам этого типа могут применяться логические операции. Как правило, данный тип используется в операторах ветвления и циклах. В некоторых языках является подтипом числового типа, при этом ложь (false) равна 0, а истина (true) равна единице или любому ненулевому значению. Несмотря на то, что для хранения значений этого типа теоретически достаточно одного бита, обычно в реализациях переменные этого типа занимают один байт памяти. Для всех типов данных, для которых определены операции сравнения, определены также и правила, по которым эти операции сравнения вырабатывают булевские значения. Над булевскими значениями возможны операции конъюнкции или логического умножения (обозначается & или AND), дизъюнкции или логического сложения (обозначается | или OR) и отрицания (~ или NOT), определяемые следующими таблицами истинности:
TRUE AND TRUE = TRUE
TRUE AND FALSE = FALSE
FALSE AND TRUE = FALSE
FALSE AND FALSE = FALSE
TRUE OR TRUE = TRUE
TRUE OR FALSE = TRUE
FALSE OR TRUE = TRUE
FALSE OR FALSE = FALSE
NOT FALSE = TRUE
NOT TRUE = FALSE
Множество (set). В основном определение типа совпадает с обычным математическим понятием множества. Допустимы стандартные операции с множествами и проверка на принадлежность элемента множеству. В некоторых языках рассматривается как составной тип.
Теперь перечислим и кратко охарактеризуем составные (сложные) типы данных.
Массив (аrray). Массивом называют упорядоченный набор однотипных переменных (элементов). Каждый элемент имеет целочисленный порядковый номер, называемый индексом. Число элементов в массиве называют его размерностью. Массивы используются там, где нужно обработать сразу несколько переменных одного типа - например, оценки всех 20 студентов группы или координаты 10 точек на плоскости. Строку текста можно рассматривать как массив символов, а текст на странице - как массив строк. Пример одномерного массива — вектор в математике, двумерный массив — матрица (см. п. 1.2).
Строковый тип (string). Хранит строку символов. Аналогом сложения в строковой алгебре является конкатенация (прибавление одной строки в конец другой строки, сцепление строк). В языках, близких к бинарному представлению данных, чаще рассматривается как массив символов, в языках более высокой абстракции зачастую выделяется в качестве простого.
Запись (структура). Как и массивы, записи относятся к составным типам данных. Запись состоит из фиксированного числа элементов, называемых полями. Каждое поле представляет собой объект простого типа данных - как правило, строку или число. Существенно то, что в одну запись могут входить поля различного типа, в отличие от массива, все элементы которого однотипны. Например, записью можно считать следующую строку экзаменационной ведомости:
Борисова Ю.А. 4 5 5
Данная запись состоит из четырех полей: одно поле - строкового типа (фамилия и инициалы студента), остальные три поля - числовые (оценки студента по трем дисциплинам).
На языке Паскаль описание переменной типа "запись" могло бы выглядеть следующим образом:
type zap = record
fam: string;
m, inf, h: integer;
end;
Здесь zap - имя нового типа данных, а fam, m, inf и h - имена полей записи. Служебные слова record … end в данном случае играют роль операторных скобок, внутри которых записываются поля записи с указанием их типов.
Файловый тип (file). Хранит только однотипные значения, доступ к которым осуществляется только последовательно (файл с произвольным доступом, включенный в некоторые системы программирования, фактически является неявным массивом).
Класс (class). Используется в объектно-ориентированном программировании, подробнее описан в п. 1.4.
Не все типы данных представляют имеют отношение к описанию каких-либо объектов реального мира, то есть типы, представляющие объекты компьютерного мира и являющиеся исключительно компьютерными терминами. Примеры таких типов:
· Указатель (Pointer). Хранит адрес в памяти компьютера, указывающий на какую-либо информацию, как правило — указатель на переменную или массив.
· Ссылка. Объект, указывающий на определенные данные, но не хранящий их.
Процесс проверки и накладывания ограничений — контроля типов, может выполняться во время компиляции (статическая проверка) или во время выполнения (динамическая проверка).
· Статическая типизация — контроль типов осуществляется при компиляции.
· Динамическая типизация — контроль типов осуществляется во время выполнения.
Контроль типов также может иметь несколько вариантов реализации.
· Строгая типизация — совместимость типов автоматически контролируется транслятором:
· Номинативная типизация (англ. nominative type system) — совместимость должна быть явно указана (наследована) при определении типа.
· Структурная типизация (англ. structural type system) — совместимость определяется структурой самого типа (типами элементов, из которых построен составной тип).
· Слабая типизация — совместимость типов никак транслятором не контролируется. Совместимость определяется и реализуется общим интерфейсом доступа к данным типа.
Перечислим основные преимущества от использования типов данных.
· Надежность. Типы данных защищают от трех видов ошибок:
1. Некорректное присваивание. Пусть переменная объявлена как имеющая числовой тип. Тогда попытка присвоить ей символьное или какое-либо другое значение в случае статической типизации приведет к ошибке компиляции и не даст такой программе запуститься. В случае динамической типизации код программы перед выполнением потенциально опасного действия сравнит типы данных переменной и значения и также выдаст ошибку. Все это позволяет избежать неправильной работы и "падения" программы.
2. Некорректная операция. Позволяет избежать попыток применения выражений вида "Строка" + 1. Поскольку все переменные в памяти хранятся как наборы битов, то при отсутствии типов подобная операция была бы выполнима (и могла дать странный результат). С использованием типов такие ошибки отсекаются.
3. Некорректная передача параметров. Если функция "синус" ожидает, что ей будет передан числовой аргумент, то передача ей в качестве параметра строки может иметь непредсказуемые последствия. При помощи контроля типов такие ошибки также отсекаются на этапе компиляции.
· Стандартизация. Благодаря соглашениям о типах, поддерживаемых большинством систем программирования, сложилась ситуация, когда программисты могут быстро менять свои рабочие инструменты, а программы не требуют больших переделок при переносе исходных текстов в другую среду. К сожалению, стандартизации по универсальным типам данных еще есть куда развиваться.
· Документирование. Использование того или другого типа данных объясняет намерения программиста. Например, типы enum (перечислимый) и bool (логический) в конкретном языке программирования не обязательны и вместо них может быть int (целочисленный) — но оба они означают, что перед нами не целая величина, а одно из нескольких предопределенных значений.
Тесты по теме 1
№ п/п | Вопрос | Варианты ответов | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Какие из перечисленных языков подходят для программирования? | 1. PHP 2. Ассемблер 3. C, C++ 4. Java | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
К какому типу языков относится язык Lisp? | 1. язык системного программирования 2. язык структурного программирования 3. язык функционального программирования 4. язык логического программирования | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
К какому типу языков относится язык Prolog? | 1. язык системного программирования 2. язык структурного программирования 3. язык функционального программирования 4. язык логического программирования | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Не является принципом объектно-ориентированного программирования... | 1. инкапсуляция 2. наследование 3. полиморфизм 4. использование функций | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Декларативный (с точки зрения парадигмы) язык рассматривает программу как: | 1. совокупность определений функций, которые обмениваются между собой данными без использования промежуточных переменных и присваиваний 2. совокупность описания входных данных и описания искомого результата 3. описание задачи в терминах фактов и логических формул, а решение задачи выполняет система с помощью механизмов логического ввода 4. совокупность описаний процедур | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Методика анализа, проектирования и написания приложений с помощью структуры классов, каждый из которых является целостным фрагментом кода и обладает свойствами и методами, называется___________ программированием | 1. модульным 2. объектно-ориентированным 3. формальным 4. структурным | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
В языке Prolog при решении задач используются: | 1. прямая цепочка логического вывода 2. конструктор основного класса программы 3. прямая и обратная цепочки логического вывода 4. основная функция программы | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
В объектно-ориентированном программировании каждый объект по отношению к своему классу является... | 1. кодом 2. экземпляром 3. функцией 4. фрагментом | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Что делает операция "модификация" над объектом? | 1. дает доступ к состоянию, но не изменяет его 2. доступ к содержанию объекта по частям, в строго определенном порядке 3. разрушает объект и освобождает, занимаемую им память 4. изменяет состояние объекта | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Языки программирования 2-го поколения характеризует: | 1. система машинных команд конкретного компьютера 2. система мнемоник для обозначения машинных команд конкретного семейства компьютеров 3. система обозначений для абстрактного описания вычислений 4. система визуального проектирования пользовательских приложений, выполняющая автоматическую генерацию соответствующих программ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Какие виды программ не присущи языку программирования С++: | 1. процедуры 2. функции 3. модули 4. методы | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Что делает операция "цикл" над объектом? | 1. дает доступ к состоянию, но не изменяет его 2. изменяет состояние объекта 3. разрушает объект и освобождает занимаемую им память 4. доступ к содержанию объекта по частям, в строго определенном порядке | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Какие языки являются языками декларативного программирования? | 1. языки структурного программирования 2. языки сценариев 3. языки запросов к базам данных 4. логические языки | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Решение задач на компьютере состоит из ряда этапов: А – "Анализ результатов"; В – "Анализ задачи и моделирование"; С – "Постановка задачи"; D – "Программирование"; Е – "Разработка алгоритма"; F – "Сопровождение программы"; G – "Тестирование и отладка". Укажите правильную последовательность этапов. | 1. C, B, E, D, A, G, F 2. C, B, E, D, G, A, F 3. B, C, E, D, G, A, F 4. C, E, B, D, G, A, F | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Свойство алгоритма завершаться определенными результатами – это… | 1. оперативность 2. завершаемость (конечность) 3. детерминированность 4. результативность | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Дана блок-схема алгоритма. Если начальные значения переменных A, B и C равны 3, 3 и 1соответственно, то значение переменной F будетравно … | 1. 6 2. 8 3. 7 4. -1 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
В приведенном фрагменте блок-схемы выполняется… | 1. обмен значениями переменных А и С 2. обмен значениями переменных А и В 3. сравнение переменных А, В, С 4. обмен значениями переменных В и С | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
После выполнения следующего фрагмента алгоритма значение целочисленной переменной Х будет равно… | 1. 5 2. 10 3. 0 4. 15 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Не является формой записи алгоритма … | 1. формула 2. программа на Паскале 3. устное подробное описание маршрута 4. карта с проложенным маршрутом | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
При решении задачи на ЭВМ к этапу "Программирование" относится… | 1. разработка математической модели 2. определение формы выдачи результатов 3. совершенствование программы 4. выбор языка программирования | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
В ходе исследования транспортного потока по магистралям города получены зависимости скорости движения автомобилей от их количества на магистрали для различного времени суток, представленные в виде ряда формул. Определены условия применения тех или иных формул при разных ситуациях, а также записан алгоритм на выбранном языке программирования. Все описанные действия представляют собой этапы решения задачи исследования транспортного потока. Следующим, по технологии, должен быть этап… | 1. "Тестирование и отладка" 2. "Сопровождение программы" 3. "Разработка алгоритма" 4. "Программирование" | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Значение переменной S после выполнения алгоритма при n =4 будет равно … | 1. 11/6 2. 4 3. 25/12 4. 0 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
При работе с программами существуют этапы: а) компиляции б) компоновки в) интерпретации г) исполнения программы. Создание исполняемого файла из исходного текста программы предполагает выполнение этапов… | 1. а, в 2. а, б 3. б, в 4. в, г | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Задан одномерный массив X1, X2, …,XN . Фрагмент алгоритма определяет… | 1. индекс первого отрицательного элемента 2. минимальный элемент массива 3. количество отрицательных элементов 4. индекс последнего отрицательного элемента | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Определите, при каких значениях переменных x, y, z выделенный блок выполнится 2 раза. | 1. x=2; y=4; z=1 2. x=1; y=4; z=0 3. x=2; y=4; z=3 4. x=3; y=3; z=1 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Фрагмент блок-схемы представляет собой алгоритм, который содержит … | 1. две команды ветвления в полной форме, одна из которых вложена в другую 2. команду ветвления в полной форме, в которую вложена команда ветвления в неполной форме 3. команду ветвления в полной форме и команду выбора, вложенную в команду ветвления 4. команду ветвления в полной форме, в которую вложена команда цикла | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Детерминированность алгоритма – это свойство, заключающееся в том, что … | 1. при корректно заданных исходных данных алгоритм должен завершать работу за конечное число шагов 2. алгоритм должен быть применим к разным наборам исходных данных 3. алгоритм должен завершаться определенными результатами 4. алгоритм выдает один и тот же результат (ответ) для одних и тех же исходных данных | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Значение переменной F, если начальные значения переменных A, B и C равны 1, 1 и 4соответственно, будет равно … | 1. 0 2. 6 3. -4 4. 5 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Запись выражения y = Ax2 + Bx + C на алгоритмическом языке (возведение в степень обозначим через ^, а присваивание – через :=) имеет вид… | 1. y := A*x^2 + B*x + C 2. y := (A*x)^2 + B*x + C 3. y := Ax2 + Bx + C 4. y := Ax^2 + Bx + C | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Определите, сколько раз выполнится цикл во фрагменте программы a := 2; b := 15; нц пока a+b<40 a := a+2 b := b+3 кц | 1. ни разу 2. 4 3. бесконечное число раз 4. 5 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Разработана программа с использованием средств ООП. Для вычисления суммы двух чисел создана функция суммы, которая в качестве входных аргументов использует значение соответствующих свойств объектов "Поле ввода 1" и "Поле ввода 2". Выполнение этой функции осуществляется при обработке события "Одно нажатие кнопки Сумма". Результирующая сумма изменяет … объекта "Поле ввода 3". | 1. свойство 2. базовый класс 3. событие 4. метод | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Определите значение переменной F после выполнения программы a:=1; b:=1; c:=3; f:=0; если a=b то если b<c то b:=b+c; f:=a+b+c; иначе все иначе a:=c; f:=a+b+c; все | 1. 7 2. 0 3. 5 4. 8 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Понятие "переменная" в традиционных языках программирования определяется как … | 1. описание действий, которые должна выполнять программа 2. именованная область памяти, в которой хранится некоторое значение 3. служебное слово на языке программирования 4. любое законченное минимальное смысловое выражение на языке программирования | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Машинно-зависимый язык низкого уровня, в котором мнемонические имена соответствуют отдельным машинным командам, – это … | 1. Pascal 2. естественный язык 3. язык ассемблера 4. Visual Basic | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Определите значение переменной K после выполнения следующей программы: a:=-5; b:=-12; c:=0; d:=7; k:=0; если a<0 то k:=k+1 все если b<0 то k:=k+1 все если c≤0 то k:=k+1 все если d<0 то k:=k+1 иначе k:=k+2 все | 1. 5 2. 1 3. 3 4. 0 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Построена логическая цепочка "Животные", "Млекопитающие", "Кошачьи", "Пантера". В объектно-ориентированном программировании данную последовательность можно описать принципом … | 1. полиморфизма 2. наследования 3. абстракции данных 4. инкапсуляции | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Языком разметки данных является ... | 1. SQL 2. Java 3. ADA 4. XML | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Приведенному фрагменту блок-схемы соответствует фрагмент программы … | 1. ввод x,z если (x<100) тоесли (z>10) то y:=x+z иначе y:=x*z все иначе y:=x*z все вывод y 2. ввод x,z нц пока (x<100) и (z>10) y:=x*z y:=x+z вывод y кц 3. ввод x,z выбор при x<100: y:=x*z при z>10: y:=x+z все вывод y 4. ввод x,z если (x<100) тоесли (z>10) то y:=x*z иначе y:=x+z все иначе y:=x+z все вывод y | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Функция mod вычисляет остаток от деления нацело первого аргумента на второй. Значение переменной K после выполнения следующей программы: k:=0; нц для i от 1 до 100 если (mod(i,3)=2) и (mod(i,5)=1) то k:=k+1 все кц будет равно … | 1. 288 2. 6 3. 3 4. 7 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
В объектно-ориентированном программировании понятию объекта соответствует схема… | 1. А 2. Б 3. В 4. Г | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Значения переменных a и b после вычисления выражений a:=15 div (16 mod 7) будут равны … (Справка: x div y – результат деления нацело x на y. x mod y – остаток от деления нацело x на y) | 1. a=7, b=25 2. a=7, b=22 3. a=1, b=4 4. a=1, b=160 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
На рисунке представлена иерархическая структура классов для нескольких объектов. Класс, выделенный красным цветом, для трех используемых классов будет являться … | 1. производным 2. абстрактным 3. базовым 4. основным | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Режим интерпретации можно использовать... | 1. для компоновки программ на языке высокого уровня 2. для изменения синтаксиса языка программирования 3. при отладке программ на языке высокого уровня 4. для изменения семантики языка программирования | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Если элементы массива D равны, соответственно, 3, 4, 5, 1, 2, то значение выражения D[D[5]]-D[D[3]] равно ... | 1. -1 2. 1 3. -3 4. 2 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Результатом компиляции программы, написанной на языке высокого уровня, является... | 1. дисплейный файл 2. командный файл 3. исходный текст программы на языке высокого уровня 4. объектный файл | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Элементы массива в памяти компьютера упорядочены по... | 1. алфавиту 2. возрастанию значений элементов 3. возрастанию индексов элементов 4. частотным характеристикам | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
В приведенном ниже фрагменте алгоритма переменные a, b, c имеют тип "строка", а переменные i, k – тип "целое". Используются следующие функции: Длина(a) – возвращает количество символов в строке a (тип "целое"). Извлечь (a,i) – возвращает i-ый (слева) символ в строке a (тип "строка). Склеить (a,b) – возвращает строку, в которой записаны сначала все символы строки a, а затем все символы строки b (тип "строка). Значения строк записываются в одинарных кавычках (например, a:='дом'). a:= ‘ИНФОРМАТИКА’ i:=Длина(a)-5 k:=1 b:=‘А’ пока i > 2 нц c:=Извлечь(a,i) b:=Склеить(c,b) i:=i-k кц Определите значение переменной b после выполнения вышеприведенного фрагмента алгоритма. | 1. ‘ФОРМА’ 2. ‘АРФА’ 3. ‘ФИРМА’ 4. ‘МИНОР’ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
В показанном ниже приложения используется__________ визуальных компонентов. | 1. 7 2. 8 3. 9 4. 5 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Выберите правильную запись выражения на языке программирования. | 1. ((a*b)-c/(a-c))/(2*b*c) 2. (a*b)-c/(a+c)/2*b*c 3. = ((a*b)-c/(a-c))/(2*b*c) 4. ((ab)-c)/(a+c))/(2bc) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Укажите фрагмент программы, соответствующий приведенному фрагменту алгоритма. | 1. если Условие 1 то Серия 1 иначе если Условие 2 то серия 3 иначе серия 2 все все 2. если Условие 1 то иначе если Условие 2 то серия 2 иначе серия 3 иначе серия 1 все все 3. если Условие 1 то Серия 1 все если Условие 2 то серия 2 иначе серия 3 все 4. если Условие 1 то Серия 1 иначе если Условие 2 то серия 2 иначе серия 3 все все | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Утверждение "Языковый процессор, который построчно анализирует исходную программу и одновременно выполняет предписанные действия, а не формирует на машинном языке скомпилированную программу, которая выполняется впоследствии" справедливо для … | 1. компилятора 2. синтаксического анализатора 3. транслятора 4. интерпретатора | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Укажите последовательность команд, в результате выполнения которых значения переменных x и y поменяются местами. | 1. y:=x; b:=x; x:=y; 2. c:=x; x:=y; x:=c; 3. x:=x+y; y:=x-y; x:=x-y; 4. b:=x; x:=y; y:=x; | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Укажите, каким циклом составляется следующая последовательность из n=8 элементов [4; 6; 8; 10; 12; 14; 16; 18 ] | 1. для i от 1 до n A[i]:=i*2 2. для i от 1 до n A[i]:=i*2+2 3. для i от 1 до n A[i]:=i*2-2 4. для I от 2 до n A[i]:=i*i | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Какие из перечисленных языков являются скриптовыми языками? | 1. PHP 2. C++ 3. Tcl 4. Java | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Установите соответствие между свойством алгоритма и его описанием:
| 1. A – 2, B – 3, C – 1 2. A – 2, B – 1, C – 3 3. A – 1, B – 3, C – 2 4. A – 3, B – 1, C – 2 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
На блок-схеме представлена алгоритмическая конструкция | 1. Ветвление 2. Цикл с предусловием 3. Цикл с повторением 4. Выбор | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Допустимыми именами переменных являются | 1. ?Gross 2. Sor1_t1_12 3. M O D 4. SchwarzKopf | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Укажите нечисловые типы данных | 1. Integer 2. Long Int 3. Boolean 4. String | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Укажите операторы присваивания, в которых не нарушен синтаксис | 1. x := x + 2 +1; 2. x + 1 := y; 3. x := (y + 2) / y + 1); 4. x := y x + 1; | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Выражению соответствует оператор присваивания | 1. S := X * Y / (A * B * C); 2. S := (X * Y) / A / B / C; 3. S := X * Y / A * B * C; 4. S := X / A * B / C * Y; | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
При y = -1 логическое выражение ((y*y -x) > x*x) or (cos(x)>0) and not P ложно при значениях переменных | 1. x = - 0.5, P = TRUE 2. x = 0.5, P = TRUE 3. x = 3, P = FALSE 4. x = 1, P = FALSE | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Функция Random(X) возвращает случайное целое число, значение которого лежит в диапазоне от 0 до X-1 вколючительно. После выполнения фрагмента программы x := Random(51) – 20; значение переменной x будет случайным числом из диапазона | 1. [-50; -20] 2. [-20; 50] 3. [-20; 30] 4. [20; 50] | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Дан фрагмент программы, в котором условно пронумерованы строки 1. a := a + 1; 2. b := a – 2; 3. c := sqr(a + 1); 4. Edit1.text:= inttostr(a); 5. Edit2.text:= inttostr(c); Выберите пары строк, которые можно поменять местами, чтобы этот обмен не повлиял на результат вычислений | 1. 3 и 4 2. 1 и 2 3. 2 и 3 4. 2 и 4 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
В результате работы алгоритма Y := X – 1; X := Y + 2; Y := X + Y; переменная Y приняла значение 10. Значение переменной X до начала работы алгоритма было равно … | 1. 5 2. 10 3. 1 4. 2 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Укажите, после выполнения каких операторов значение переменной k станет равно 1, если a = 8 и b = 6: 1) Если (a>b) And (b>7) То k:=0 Иначе k:=1; 2) Если (a<b) Or (b>7) То k:=1 Иначе k:=0; 3) Если (a>b) Or (b>7) То k:=1 Иначе k:=0; 4) Если Not (a = 8) То k := 1 Иначе k := 0; | 1. (1,2) 2. (1,3) 3. (2,4) 4. (2,3) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
После выполнения фрагмента программы x := 1; y := 0; z := -2; If x > 0 Then If y < 0 Then z := y + 5 Else z := y + 4; If z = 0 Then z := z + 1; | 1. 1 2. -2 3. 0 4. 4 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Вычисленное по блок-схеме значение переменной F для входных данных A, B, C = 3, 3, 1, равно … | 1. 7 2. -7 3. 0 4. 1 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Значение переменной d после выполнения фрагмента программы k := 5; casek mod 12 of 7: d := k; 5: d := 2*k-1; 9..11: d := k mod 12 ; else d := k div 12 ; end; равно | 1. 0 2. 5/12 3. 5 4. 9 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Точки с координатами (i, Y), последовательно получаемыми при выполнении фрагмента алгоритма Y := 1; i := 0; Для i := 1 До 6 НЦ Y := Y – i ; КЦ расположены на графике | 1. A 2. B 3. C 4. D | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
После выполнения фрагмента программы a := 73045; b := 0; While a <> 0 Do НЦ b := b + a Mod 10; a := a div 10; КЦ значение переменной b равно … | 1. 19 2. 0 3. 45 4. 1 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Стандартная функция round (X) округляет вещественный аргумент X до ближайшего целого значения. Тогда в представленном фрагменте программы X := 7; Y := round ( X / 2) + 4; while X <= Y do Y := (X + Y) mod 8; тело цикла будет выполнено … | 1. 2 раза 2. 1 раз 3. ни разу 4. 3 раза | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Дан фрагмент программы A := 0; B := 20; While A <= B Do НЦ A := A + 2; If A > 10 Then Break; КЦ Тело цикла выполнится … раз. Пояснение: оператор break служит для немедленного выхода из цикла. | 1. 10 2. 5 3. 6 4. 7 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
После выполнения фрагмента программы с двойным циклом k := 1; For i := 1 To 5 do For j := i To 5 do k := k + 1; значение переменной k равно ... | 1. 16 2. 25 3. 26 4. не определено | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
После выполнения фрагмента программы For i := 1 To 5 do For j := 1 To 5 do If i >= j Then A[i, j] := i - j Else A[i, j] := j – i; формируется матрица A размерностью 5 на 5 вида |
Наши рекомендации
|