Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ekzamen

.docx
Скачиваний:
0
Добавлен:
04.06.2024
Размер:
89.45 Кб
Скачать

Трансляция программы – преобразование программы, представленной на одном языке программирования, в программу на другом языке.

Компилятор – программа, переводящая текст, написанный на языке программирования, в набор машинных кодов.

Инициализация – создание, активация, подготовка к работе. Приведение программы в состояние готовности к использованию. X=10. ы

Интерпретация – построчный анализ, обработка и выполнение исходного кода программы или запроса.

Идентификатор – уникальный признак объекта, позволяющий отличать его от других объектов т.е. идентифицировать.

Идентификация – процедура распознавания субъекта по его ID.

Итератор – интерфейс, предоставляющий доступ к элементам коллекции (массива или контейнера) и навигация по ним.

Иногда счётчик цикла называют «итератором цикла». Тем не менее, счётчик цикла обеспечивает только перебор элементов, но не доступ к элементу.

Полиморфизм – способность функции обрабатывать данные разных типов. Объект в программировании — некоторая сущность в цифровом пространстве, обладающая определённым состоянием и поведением, имеющая определённые свойства (атрибуты) и операции над ними (методы). Как правило, при рассмотрении объектов выделяется то, что объекты принадлежат одному или нескольким классам, которые определяют поведение (являются моделью) объекта. Термины «экземпляр класса» и «объект» взаимозаменяемы.

Интерфейс — программная/синтаксическая структура, определяющая отношение между объектами, которые разделяют определённое поведенческое множество и не связаны никак иначе. Это набор средств, используемых для взаимодействия 2 систем. Наиболее часто под интерфейсом подразумевают систему взаимодействия программы с человеком для обмена данными и получения нужной информации.

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

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

Программирование – процесс создания компьютерных программ.

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

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

В библиотеке выделяют 5 основных компонентов:

1. Контейнер – хранение набора объектов в памяти.

2. Итератор – обеспечение средств доступа к содержимому контейнера.

3. Алгоритм – определение вычислительной процедуры.

4. Адаптер – адаптация компонентов для обеспечения различного интерфейса.

5. Функциональный объект – сокрытие функции в объекте для использования другими компонентами.

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

Контейнеры библиотеки STL можно разделить на четыре категории: последовательные, ассоциативные, контейнеры-адаптеры и псевдоконтейнеры. Последовательные – vector, list, deque. Ассоциативные – set, multiset, map, multimap. Адаптеры – stack, queue, priority queue. Псевдоконтейнеры – bitset, basic string, valarray.

Объектный модуль – файл с промежуточным представлением отдельного модуля программы, полученный в результате обработки исходного кода компилятором.

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

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

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

АОТ-компилятор – это вид транслятора, который использует метод компиляции перед исполнением.

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

Гипертекст – термин, обозначающий систему из текстовых страниц, имеющих перекрестные ссылки. HTTP (Hyper Text Transfer Protocol) — это протокол передачи гипертекста. Протокол HTTP используется при пересылке Web-страниц между компьютерами, подключёнными к одной сети.

Гиперссылка – часть гипертекстового документа, ссылающаяся на элемент в этом документе или на другой объект, расположенный на локальном диске или в компьютерной сети, либо на элементы этого объекта.

Парадигма программирования – это совокупность идей и понятий, определяющих стиль написания компьютерных программ (подход к программированию).

Как происходит вызов функции в C++?

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

При вызове функции локальным переменным отводится память в стеке и производится их инициализация. Управление передается первому оператору тела функции и начинается выполнение функции, которое продолжается до тех пор, пока не встретится оператор return или последний оператор тела функции.

 Что такое область видимости в C++? Как ее создать?

Область видимости (scope) представляет часть программы, в пределах которой можно использовать объект.

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

В C++ существуют отдельные блоки, которые начинаются с открывающей скобки ({) и заканчиваются соответственно закрывающей скобкой (}).

Если переменная была создана в таком блоке, то ее областью видимости будет являться этот блок от его начала (от открывающей скобки —  { ) и до его конца (до закрывающей скобки — } ) включая все дочерние блоки созданные в этом блоке.

Глобальными переменными называются те переменные, которые были созданы вне тела какого-то блока. Их можно всегда использовать во всей вашей программе, вплоть до ее окончания работы.

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

 В чем преимущества и недостатки динамически типизированных языков программирования? Приведите примеры таких языков.

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

+ компактность кода

+ эффективность разработки

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

- никакие ошибки не могут быть обнаружены без исполнения

- может привести к прекращению выполнения программы из-за ошибок типизации(тип объекта который использовали неверный)

Пример: Python, Ruby, JavaScript, Lisp.

 Что такое вектор в C++?

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

 Что такое компиляция?

Компилятор – программа, переводящая текст, написанный на языке программирования, в набор машинных кодов.

Компиляция – сборка программы, включающая:

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

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

 В чем преимущества и недостатки статически типизированных языков программирования? Приведите примеры таких языков.

Язык обладает статической типизацией, если тип переменной известен во время компиляции, а не выполнения. Типичными примерами таких языков являются Ada, C, C++, C#, JADE, Java, Fortran, Haskell, ML, Pascal, и Scala.

+ большую часть ошибок типов можно увидеть на ранней стадии разработки

+ более быстрое исполнение скомпилированного кода, потому что компилятор знает точные типы используемых данных и создает оптимизированный машинный код

+ нет необходимости проверки типов перед каждым запуском программы

- более громоздкий код

 Что такое проект GNU?

Проект GNU — проект по разработке свободного программного обеспечения

Проект был запущен известным программистом и сторонником СПО Ричардом Столлманом 27 сентября 1983 года в Массачусетском технологическом институте.

Цель проекта — создание полной операционной системы, которая является свободным программным обеспечением

На сегодняшний день широко распространено использование систем GNU с ядром, называемым Linux и разработанным в рамках другого проекта. 

В отличие от Unix, GNU является свободным программным обеспечением.

 В чем преимущества и недостатки передачи данных на сервер в качестве параметров GET-запроса?

В методе GET данные отправляются в виде параметров URL (URL — это уникальный адрес, который ведет на ресурс в интернете).

«+» - Поскольку данные, отправленные методом GET, отображаются в URL-адресе, можно добавить в избранное страницу с определенными значениями строки запроса.

«-» - Метод GET не подходит для передачи конфиденциальной информации, такой как имя пользователя и пароль, потому что они полностью видны в строке запроса URL-адреса, а также потенциально могут храниться в памяти браузера клиента в качестве посещенной страницы.

«-» - Поскольку метод GET назначает данные для переменной среды сервера, длина URL-адреса ограничена. Таким образом, существует ограничение на общее количество отправляемых данных.

«-» - Существенным ограничением является возможность передачи строго определенных наборов символов. Например, символы ? и & уже зарезервированы и их передавать как значения параметров нельзя. Это правило можно обойти, если в строке запроса передавать не сам символ, а его кодовое значение. Для этого используется символ ‘%’, за которым следует код символа

 В чем разница мутабельных и иммутабельных объектов в Python? Приведите примеры тех и других.

Переменные в питоне не хранят данные, а лишь ссылаются на них, а данные бывают изменяемые (мутабельные) и неизменяемые (иммутабельные).

Значение иммутабельного объекта нельзя изменить после того, как он был создан, а значение мутабельного можно.

Функция id(название)

Строка иммутабельна, то есть, после того как она уже создана, нельзя изменить ее содержимое. Поэтому интерпретатор перезаписывает ее по новому адресу с новыми символами. А список мутабелен, поэтому его адрес не меняется оттого, что мы заменили один элемент.

Мутабельные типы данных – список list, множество set, словарь dict.

Иммутабельные типы – булевый bool, целочисленный int, число с плавающей точкой float, кортеж tuple, строка str.

Если мы захотим создать свой класс, он будет мутабельным.

 В чем преимущества интерфейса командной строки перед графическим интерфейсом?

(взаимодействие двух систем)

Низкие требования как ресурсные, так и аппаратные. Для ввода текста необходима лишь клавиатура, а для отображения текста лишь монитор. Ресурсов тратится минимально из-за отсутствия отрисовки графики на монитор.

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

Графический пользовательский интерфейс – самый распространенный на сегодняшний день способ взаимодействия пользователя с операционными системами и прикладным программным обеспечением. Отличается интуитивностью, простотой восприятия и ввода информации. Для взаимодействия с таким интерфейсом часто достаточно обычной компьютерной мыши.

Достоинства – требует меньше системных ресурсов для работы, поскольку параметры команд задаются в нескольких символах в каждой командной строке, опытный пользователь может часто находить эти параметры в более доступном режиме.

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

 Какого типа данных могут быть значения в документе JSON?

· String (строка)

· Number (число)

· object (JSON объект)

· array (массив)

· boolean (логический тип данных)

· null

 Перечислите несколько операций, которые поддерживает список в Python.

Операции:

  • + – конкатенация списков;

  • * – дублирование списка;

  • len – определение длины списка;

  • del – удаление элемента с списка;

  • присваивание по индексу;

  • К спискам можно применить встроенные функции Python, такие как len(), min() и max(), чтобы получить длину списка, наименьший и наибольший элементы соответственно.

методы ( на всякий случай):

A.count(x)

Количество вхождений элемента x в список

A.sort()

Сортировка списка (меняет сам список, ничего не возвращает)

A.append(x)

Добавить элемент x в конец списка

A.extend(L)

Добавить все элементы списка L в конец списка A

sum(A)

Возвращает сумму элементов в списке

 Что такое идентификатор в C++? В чем его отличие от переменной?

Идентификатор — это имя переменной, функции, класса или другого объекта в языке C++.

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

 Что такое отладка? Перечислите несколько методов отладки.

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

- узнавать текущие значения переменных;

- выяснять, по какому пути выполнялась программа.

Отладка – обнаружение причины ошибки.

(Когда программа доходит до точки останова, ее работа приостановится, можно будет просмотреть значения переменных перед выполнением работы в командной строке)

Для отладки программ обычно применяют 3 способа:

- f11 – выполнение одной строки программы. Если эта строка будет методом (цикл), отладчик выполнит одну строку этого метода. «Шаг с заходом»

- f10 – выполнение одной строки программы. Если эта строка будет методом, отладчик выполнит метод целиком. «Шаг с обходом». Позволяет ек выполнять пошаговую отладку метода.

- shift + f11 – выполнение всех действий программы до конца текущего метода и выход из него. «Шаг с выходом»

 Что такое доменные имена? Уровень домена?

Домен — это имя сайта. 

Доменное имя — символьное имя, служащее для идентификации областей, которые являются единицами административной автономии в сети Интернет. (Это адрес сайта, состоящий из символов или цифр, но напрямую не связанный с сервером. Однако система Domain name server (DNS-сервер) ассоциирует доменное имя с IP-адресом или другими доменными именами. Например, 94.100.180.200 – это IP-адрес, а его доменное имя – Mail.ru.Суть IP-адреса заключена в адресации запросов и ответов на них. Доменное имя ассоциировано с этим адресом. Это как отправленное по почте письмо, на конверте которого указано его местонахождение для обратной связи, где личные данные отправителя и будут доменным именем.)

Уровень домена – расположение домена в иерархической структуре доменных имен в сети Интернет.

Корневой (нулевой) домен – самый верхний уровень, в любой системе доменных имен. В действующей системе DNS, он отображается без символов. У этого уровня нет символьного обозначения, поэтому он отображается как точка – «.»;

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

Уровни домена, начиная от второго и ниже, служат для уточнения информации о сайте. Например, домен второго уровня будет указывать на страну, третьего – на город. Также это могут быть субдомены, то есть обозначения отдельных, автономных частей некоторых организаций.

 Что такое список в Python?

Списки в Python — это просто некий набор упорядоченных объектов. Списки могут содержать разные данные: это могут целые и дробные числа, строчки. В списках могут храниться даже сами списки.

 Из чего состоит HTTP-ответ?

HTTP (HyperText Transfer Protocol, протокол передачи гипертекста) – протокол, используемый в компьютерных сетях для обмена данными между серверами и клиентами. Взаимодействие происходит в формате запрос-ответ, причем и запрос, и ответ, имеют четко определенный формат и правила построения.

Версия протокола здесь задаётся так же, как в запросе. Код состояния (Status Code) — три цифры (первая из которых указывает на класс состояния), которые определяют результат совершения запроса. Например, в случае, если был использован метод GET, и сервер предоставляет ресурс с указанным идентификатором, то такое состояние задаётся с помощью кода 200. Если сервер сообщает о том, что такого ресурса не существует — 404. Если сервер сообщает о том, что не может предоставить доступ к данному ресурсу по причине отсутствия необходимых привилегий у клиента, то используется код 403. Спецификация HTTP 1.1 определяет 40 различных кодов HTTP, а также допускается расширение протокола и использование дополнительных кодов состояний. Пояснение к коду состояния (Reason Phrase) — текстовое (но не включающее символы CR и LF) пояснение к коду ответа, предназначено для упрощения чтения ответа человеком. Пояснение может не учитываться клиентским программным обеспечением, а также может

отличаться от стандартного в некоторых реализациях серверного ПО.

После стартовой строки следуют заголовки, а также тело ответа.

 В чем преимущества вектора перед статическим массивом в C++?

Вектор может расширяться и уменьшаться по мере надобности, а массив нет.

То есть можно изменять размер вектора.

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

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

 Как соотносится GNU и Linux?

Linux обычно применяют в комбинации с операционной системой GNU: вся система представляет собой в основном GNU с добавлением Linux, то есть GNU/Linux. Все так называемые дистрибутивы “Linux” на самом деле являются дистрибутивами GNU/Linux.

GNU — это набор из командной строки и утилит. Linux — это ядро системы. Ядро бесполезно без минимального набора утилит, а утилиты бесполезны без ядра.

 В чем преимущества и недостатки компилируемых языков программирования? Приведите примеры таких языков.

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

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

- скорость выполнения программы, скомпилированной в машинный код, превосходит скорость интерпретируемой программы в 10 и в 100 раз.

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

Примеры – BASIC, C, C++, PASCAL.

+ и –

+ скорость

+ эффективность

- прежде, чем программу исполнить, ее нужно прежде пропустить через компилятор, что увеличивает количество этапов рабочего процесса

- если в программе нужно что-то корректировать, то после каждой поправки компиляция запускается повторно

- платформенная зависимость языка, т.е. зависимость от той машины, на которой происходят компиляция и исполнение программы.

 Что такое стек (область памяти)? Как он работает?

Стек — это область оперативной памяти, которая создаётся для каждого потока. 

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

Стек вызовов – LIFO (last in first out) контейнер, в который сохраняется адрес выполняющегося кода и значения локальных переменных в момент вызова функции. Когда программа вызывает функцию, функция отправляется на верх стека вызовов. Стек вызовов — специальная область памяти, где хранятся данные о точках перехода между фрагментами кода. Программа запускается, потом идёт вызов функции. Она выполняется, и программа продолжает с того места, где остановилась.

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

Самый простой пример – факториал.

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

 Чем отличаются компилируемые и интерпретируемые языки программирования?

Разница заключается в следующем:

Компилируемый язык:

- компилирует программу целиком после ее ввода, преобразуя в объектный код, который хранится в файле

- существует этап генерации промежуточного объектного кода (С, С++)

- более высокая скорость, т.к. компиляция происходит до исполнения

- высокая потребность в памяти

- информация об ошибках появляется после процесса компиляции всей программы

- исходный код – компилятор – машинный код – вывод

Интерпретируемый язык:

- программа интерпретируется построчно, т.е. принимает одну инструкцию в качестве одного ввода и выполняет ее

- не генерирует промежуточный объектный код (Perl, Python)

- медленная скорость работы

- требуются меньшие объемы памяти

- отображение ошибок происходит для каждой отдельной инструкции

- исходный код – интерпретатор - вывод

 В чем преимущества языков программирования, использующих байт-код? Приведите примеры таких языков

Байт-код-языки — это такие языки, которые используют для исполнения кода как компиляцию, так и интерпретацию. При использовании байт-код-языка сначала происходит процесс компиляции программы, написанной понятным человеку языком, в байт-код. Далее он поступает в виртуальную машину, которая производит интерпретацию. Java и фреймворк.NET — это типичные примеры байт-код-языков. В байт-код-языке сперва происходит компиляция программы из языка программирования в байт-код. Байт-код — это набор инструкций, созданный для эффективного исполнения интерпретатором и состоящий из компактных числовых кодов, констант и ссылок на память. С этого момента байт-код передаётся в виртуальную машину, которая затем интерпретирует код также, как и обычный интерпретатор.

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

превосходя при этом по скорости интерпретируемые. Для них также доступна JIT-компиляция.

Компиляторы из байт-кода в машинный код легче в реализации, так как большинство работы по оптимизации уже было проделано компилятором.

.  Что такое абстракция? Примеры абстракций в информатике.

Абстракция— процесс отвлечения (абстрагирования) от тех или иных характеристик объекта для их избирательного анализа; при этом наблюдае-мый объект замещается его идеализированным теоретическим образом – аб-страктным объектом. Результат абстрагирования — абстрактные понятия, например: цвет, кривизна, масса, красота и т. д. Абстракция в объектно-ориентированном программировании — это использование только тех характеристик объекта, которые с достаточной точностью представляют его в данной системе.

Соседние файлы в предмете Информатика