Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
программирование билеты-ответы.doc
Скачиваний:
16
Добавлен:
24.09.2019
Размер:
113.15 Кб
Скачать

1.Классификация яп: компилируемые, исполняемые на виртуальных машинах, интерпретируемые. Типизация данных в яп.

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

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

Интерпретируемый язык программирования — язык программирования, в котором исходный код программы не преобразовывается в машинный код для непосредственного выполнения центральным процессором (как в компилируемых языках), а исполняется с помощью специальной программы-интерпретатора. Есть ЯП на которых программы выполняются непосредственно по исходному коду с помощью программ – интерпретаторов. Интерпретатор берёт небольшие фрагменты программы и на лету превращает их в инструкции для процессора.

Интерпрета́тор — программа (разновидность транслятора) или аппаратное средство, выполняющее интерпретацию

Интерпрета́ция — пооператорный (покомандный, построчный) анализ, обработка и тут же выполнение исходной программы или запроса (в отличие от компиляции, при которой программа транслируется без её выполнения).

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

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

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

типизация :

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

также выделяют статическую и динамическую типизацию

в статической контроль типов происходит на этапе компиляции, в динамической – во время исполнения программ.

2. ЯП С++. Стандарт языка. Стандартная библиотека. Структура простейшей программы на С++.

C++ — компилируемый статически типизированный язык программирования общего назначения.

С++ поддерживает парадигмы объекто-ориентированного и структурного программирования. При этом для совместимости с создавать класс для обёртки простых программ не обязательно. Кроме этого с++ поддерживает обобщённый подход., который позволяет алгоритмы и структуры данных описывать без привязки к конкретным типам. Подход реализуется в С++ с помощью шаблонов. В С++ нет основного подхода.

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

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

Объединенный комитет ANSI/ISO развил исходные принципы предыдущего стандарта, являющийся основным на сегодняшний день.

Стандартная библиотека языка программирования — набор модулей, классов, объектов, констант, глобальных переменных, шаблонов, макросов, функций и процедур, доступных для вызова из любой программы, написанной на этом языке и присутствующих во всех реализациях языка.

Простейшая программа на C++ выглядит примерно так:

#include <iostream>

int main(void) {

std::cout << "Hello world";

return 0;

}

Это её исходный код (source code) — текстовая запись программы, состоящая из символов и команд, понятных прежде всего программисту, знакомому с конкретным языком программирования (или обучающемуся такому языку).

Представленная программа выведет на экран фразу «Hello world», но только после того, как будет откомпилирована и запущена.

3. Встроенные типы данных С++. Способы представления чисел различных типов на уровне ЭВМ.

В C++ существуют встроенные типы данных для хранения логических значений, целых и вещественных чисел, кодов символов.

char Для хранения кодов символов или маленьких целых чисел 1 байт signed: [-128;127]

unsigned: [0;255]

short int (или просто short) Короткие целые числа 2 байт [-32768;32767]

unsigned: [0;65535]

int Целые числа 4 байта signed: [-2147483648;2147483647]

unsigned: [0;4294967295]

long int (или просто long) Длинные целые числа 4 байта signed: [-2147483648;2147483647]

unsigned: [0;4294967295]

bool Логические значения 1 байт true либо false

float Вещественные числа одинарной точности 4 байта ≈±3.4*10±38 (~7 цифр после запятой)

double Вещественные числа двойной точности 8 байт ≈±1.7*10±308 (~15 цифр после запятой

long double Длинные вещественные числа 8 байт ≈±1.7*10±308 (~15 цифр после запятой)

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

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

В С++, как и в Java для хранения отрицательных целых используется так называемый дополненный код. Он позволяет заменить операцию вычитания сложением, ускорив вычисление. Старший бит в дополненном коде так же яв-ся знаковым.

Дополнительный код осуществляется по следующему алгоритму :

  1. берётся двоичное представление модуля исходного числа.( берутся все числовые биты из прямого кода, но не берётся старший знаковый бит.)

  2. каждый бит заменяется на противоположный.(0-1,1-0) в результате полуается обратный код числа.

  3. К полученному обратному коду добавляется единица

  4. К полученному числу слева дописывается знаковый бит. В итоге получается дополнительный код числа.

Пример дополнительного кода числа -5 :

5 (10)=0000101(2)  1111010(2) +1 = 1111011 допишем единицу 11111011 (дополнительный код числа -5)

Сумма прямого и дополнительного n-битного кода всегда = 2 в степени n

Вещественные числа в памяти компьютера.

В качестве разделителя между целой и десятичной частью используется точка, поэтому десятичные числа порой называют point numbers. Выделяют 2 способа хранения : с фиксированной и с плавающей точкой. Первый способ предусматривает что среди доступного объёма памяти часть битов отводится для целой части, а оставшиеся для цыфр после запятой.