
ЭКЗАМЕН_ИНФА
.pdf
1.Состав и назначение платформы Microsoft.NET. Компиляция и интерпретация. Выполнение программы в .NET
Платформа Microsoft .NET — это технология, которая поддерживает создание и выполнение веб-служб и приложений Windows. При разработке платформы .NET Framework учитывались следующие цели.
•Обеспечение согласованной объектно-ориентированной среды программирования для локального сохранения и выполнения объектного кода, для локального выполнения кода, распределенного в Интернете, либо для удаленного выполнения.
•Предоставление среды выполнения кода, в которой:
▪сведена к минимуму вероятность конфликтов в процессе развертывания программного обеспечения и управления его версиями;
▪гарантируется безопасное выполнение кода, включая код, созданный неизвестным или не полностью доверенным сторонним изготовителем;
▪исключаются проблемы с производительностью сред выполнения скриптов или интерпретируемого кода;
•обеспечиваются единые принципы разработки для разных типов приложений, таких как приложения Windows и вебприложения;
•обеспечивается взаимодействие на основе промышленных стандартов, которое гарантирует интеграцию кода платформы
.NET Framework с любым другим кодом.
.NET состоит из нескольких компонентов, включая:
1.Common Language Runtime (CLR): Это исполняющая среда,
которая управляет выполнением программного кода и предоставляет функции, такие как сборка мусора, управление памятью и обработка исключений.
2.Фреймворк классов .NET (англ. .NET Framework Class Library):
Это коллекция классов, которая предоставляет разработчикам множество готовых компонентов и функциональности для создания приложений.

3. Языки программирования: .NET поддерживает различные языки программирования, включая C#, Visual Basic.NET, F# и другие.
Приложения, разработанные для .NET, могут быть скомпилированы в промежуточный язык MSIL (Microsoft Intermediate Language) или CIL (Common Intermediate Language). Этот язык не зависит от конкретной операционной системы или процессора и представляет собой промежуточный код, который будет выполнен CLR.
CLR берет этот промежуточный код и выполняет его двумя способами: компиляцией и интерпретацией.
-Компиляция: CLR может выполнить компиляцию промежуточного кода в машинный код перед его выполнением с помощью JIT-компиляции (Just-In-Time). Таким образом, происходит компиляция в машинный код во время выполнения программы, что повышает производительность и ускоряет выполнение.
-Интерпретация: Если JIT-компиляция невозможна или нецелесообразна (например, когда исполняемая программа является скриптом или динамически генерируемым кодом), CLR может интерпретировать промежуточный код непосредственно на лету.
Выполнение программы в .NET происходит путем запуска исполняемого файла
.NET (например, с расширением .exe) или запуска приложения веб-
сервером IIS (Internet Information Services). Приложения .NET могут выполняться на различных операционных системах, таких как Windows, macOS и Linux, при наличии соответствующего исполняемого файла .NET или Runtime Environment (окружения выполнения).
Компилятор (англ. compiler - составитель, собиратель) читает всю программу целиком, делает ее перевод и создает законченный вариант программы на машинном языке, который затем и выполняется. Результат работы компилятора — бинарный исполняемый файл.

Интерпретатор (англ. interpreter - истолкователь, устный переводчик) переводит и выполняет программу строка за строкой.
2.История развития и практики программирования. Связь с развитием математики и вычислительной техники. Поколения вычислительных машин с точки зрения развития систем программирования.
История развития и практики программирования тесно связана с развитием математики и вычислительной техники. В начале 19-го века, математик Чарльз Бэббидж разработал аналитическую машину, которая считается предшественником современных компьютеров. Он также придумал первый бинарный код для программирования этой машины.
Следующий важный этап в истории программирования связана с появлением электронных компьютеров в середине 20-го века. В 1940- х годах, Клод Шеннон, Джон фон Нейман и другие ученые разработали основные принципы цифровых компьютеров, которые стали основой для программирования. Этот период называется первым поколением компьютеров.
Второе поколение компьютеров наступило в конце 1950-х годов и продолжалось в 1960-х. В это время были разработаны более надежные транзисторы, что привело к увеличению
производительности компьютеров. Также начали появляться высокоуровневые языки программирования, такие как COBOL и FORTRAN.
Третье поколение компьютеров связано с развитием интегральных схем в 1960-х. Это позволило уменьшить размер компьютеров, увеличить их производительность и снизить стоимость. В этот период становятся популярными языки программирования C и Pascal.
Четвертое поколение компьютеров наступило в 1970-х годах с развитием микропроцессоров и персональных компьютеров. Здесь начинают развиваться языки программирования, такие как C++, Java и Python, а также операционные системы для персональных компьютеров.
С развитием технологий, появилось и пятое поколение компьютеров, которое связано с развитием искусственного интеллекта, нейронных сетей, квантовых компьютеров и других передовых систем. В этом поколении активно разрабатываются языки программирования и инструменты для работы с данными, машинным обучением и искусственным интеллектом.
Таким образом, связь между развитием математики и вычислительной техники с развитием систем программирования очевидна. Каждое новое поколение компьютеров требует разработки новых алгоритмов и языков программирования, чтобы эффективно использовать их возможности. В то же время, профессиональное программирование активно развивается, учитывая новые требования и технологии, которые появляются вместе с новыми поколениями компьютеров.

3. Определение алгоритма. Основные алгоритмические операторы. Способы описания алгоритма. Понятие об эффективности и надежности алгоритмов и программ.
Алгори́тм — набор инструкций, описывающих порядок действий исполнителя для достижения результата решения задачи за конечное время.
Алгоритм — это последовательность шагов, выполняемых для решения определенной задачи или достижения определенного результата. Он может быть представлен в виде инструкций, которые указывают, как выполнять определенные операции.
Алгоритм обладает следующими свойствами:
1.Дискретность. Процесс решения задачи должен быть разбит на последовательность отдельных шагов-команд, которые выполняются одна за другой. Только после завершения одной команды начинается выполнение следующей.

2.Понятность. Алгоритм должен содержать только те команды, которые известны исполнителю.
3.Детерминированность. Каждый шаг и переход от шага к шагу должны быть точно определены, чтобы его мог выполнить любой другой человек или механическое устройство.
4.Конечность. Обычно предполагают, что алгоритм заканчивает работу за конечное число шагов. Результат работы алгоритма также должен быть получен за конечное время.
5.Массовость. Алгоритм должен решать не одну частную задачу,
акласс задач.
Основные алгоритмические операторы включают:
1.Последовательность: выполнение действий поочередно.
2.Ветвление: принятие решения на основе определенных условий.
3.Циклы: повторение определенной последовательности действий до выполнения определенного условия.
Существуют различные способы описания алгоритма:
1.Естественный язык: описание алгоритма в виде понятных инструкций широкому кругу людей.
2.Блок-схема: графическое представление алгоритма с использованием блоков, соединенных стрелками.
3.Псевдокод: абстрактный язык программирования для представления алгоритмов.
4.Программный код: описание алгоритма с использованием языка программирования.
Эффективность алгоритма связана с его скоростью работы и использованием ресурсов, таких как память и процессорное время. Более эффективные алгоритмы обычно выполняются быстрее и потребляют меньше ресурсов. Надежность алгоритмов и программ связана с их способностью работать корректно и предсказуемо в различных условиях.
4. Разновидности структур алгоритмов. Основные структурные блоки: ветвления, цикла, переключатель, подпрограмма.

Организация алгоритмов линейной, разветвляющейся, циклической и вложенных структур. Понятие рекурсивной процедуры. Разновидности структур алгоритмов включают следующие основные структурные блоки:
1.Ветвление: это структура, которая выполняет различные действия в зависимости от условия. Например, если условие истинно, выполнится одна часть алгоритма, если ложно - другая часть.
2.Цикл: это структура, которая позволяет повторять определенный блок кода несколько раз. Циклы используются для автоматизации повторяющихся задач. Например, цикл "for" или цикл
"while".
3.Переключатель: это структура, которая выполняет различные блоки кода в зависимости от значения переменной или выражения. Переключатель проверяет, совпадает ли значение с одним из предопределенных вариантов и выполняет соответствующий блок кода.
4.Подпрограмма: это блок кода, который может быть вызван несколько раз из разных частей программы. Подпрограммы позволяют структурировать код и избегать дублирования. Они могут принимать аргументы и возвращать значения.
Организация алгоритма может быть линейной, разветвляющейся, циклической и вложенной:
1.Линейная структура: алгоритм выполняется последовательно, без разветвлений или циклов. Команды выполняются по порядку.
2.Разветвляющаяся структура: алгоритм включает ветвления, и исполнение может перейти на различные пути в зависимости от условий.
3.Циклическая структура: алгоритм содержит циклы или повторения, которые позволяют выполнять определенный блок кода несколько раз.

4. Вложенная структура: алгоритм может включать в себя подпрограммы, которые в свою очередь могут содержать другие подпрограммы. Это позволяет разбить сложную задачу на более мелкие и управляемые части.
Рекурсивная процедура - это процедура, которая вызывает сама себя при выполнении определенного условия. Рекурсия является мощным инструментом программирования, особенно для решения задач, которые могут быть выражены в виде самоподобных или индуктивных структур данных.
5. Понятие метаязыка. Нормальная нотация Наура-Бэкуса. Примеры использования нормальной нотации.
Метаязык — это язык, который используется для описания другого языка. Он позволяет нам говорить и анализировать символы, грамматику и структуру самого языка.
Нормальная нотация Наура-Бэкуса (BNF - Backus-Naur Form) — это форма представления контекстно-свободной грамматики. Она была разработана Джоном Бэкусом и Питером Науром и широко используется для описания языков программирования и различных формальных грамматик.
Пример использования нормальной нотации Наура-Бэкуса:
1. Язык программирования: например, грамматика языка C может быть записана с использованием BNF:
<программа> ::= <объявление-функции> | <оператор> <объявление-функции> ::= <тип> <идентификатор> '(' <параметры> ')' '{' <тело> '}'
<тип> ::= 'int' | 'float' | 'char' <идентификатор> ::= [a-zA-Z_]+
<параметры> ::= <тип> <идентификатор> (',' <тип> <идентификатор>)* | ε <тело> ::= /* блок кода */

<оператор> ::= <цикл> | <условный оператор> | /* и др. */
Здесь метасимволы в угловых скобках (< >) представляют нетерминалы, а символы в кавычках (') представляют терминалы.
2. Расширение файла: Грамматика для описания расширения файла может быть записана следующим образом:
<расширение-файла> ::= '.' <буква> (<буква>)* <буква> ::= [a-zA-Z]
Здесь символы в квадратных скобках ([ ]) представляют класс символов, а звездочка (*) обозначает повторение нуля или более раз.
Используя нормальную нотацию Наура-Бэкуса, можно более явно определить грамматику и структуру различных языков и форматов данных. Это помогает разработчикам, лингвистам и другим специалистам в анализе и понимании сложных языковых конструкций.
6. Общие сведения о программном обеспечении ЭВМ. Схема решения задачи. Этапы подготовки задачи к решению на ЭВМ. Состав и назначение программ ЭВМ.
Программное обеспечение ЭВМ (электронно-вычислительная машина) — это набор программ, выполняющих задачи по обработке информации на компьютере. Оно включает в себя операционные системы, прикладное программное обеспечение и другие утилиты, необходимые для работы компьютера.
Схема решения задачи на ЭВМ обычно включает следующие этапы:
1.Анализ задачи: определение постановки задачи, ее цели и требований.
2.Формализация задачи: перевод задачи в математические или алгоритмические термины, чтобы описать ее решение в виде последовательности шагов.
3.Разработка алгоритма: определение оптимального алгоритма решения задачи и его структурирование.
4.Написание программы: перевод алгоритма в программный код, который может быть выполнен на ЭВМ.
5.Отладка и тестирование программы: проверка программы на правильность выполнения и исправление ошибок, если таковые обнаружены.
6.Запуск программы: выполнение программы на ЭВМ для получения результата.
Этапы подготовки задачи к решению на ЭВМ:
1.Формулировка задачи: Четкое определение проблемы и желаемого результата.
2.Сбор и подготовка данных: Сбор необходимых данных и их преобразование в формат, совместимый с ЭВМ.
3.Разработка алгоритма: Создание последовательности шагов для решения задачи.
4.Выбор программного обеспечения: Определение, какие программы или языки программирования будут использоваться.
5.Ввод данных: Внесение данных в ЭВМ для обработки.
6.Выполнение программы: Запуск программы для обработки данных и получения результата.
7.Анализ результатов: Оценка полученных результатов на соответствие целям задачи.
Состав и назначение программ ЭВМ могут варьироваться в зависимости от требуемых задач. Операционные системы, такие как Windows, macOS или Linux, управляют работой компьютера, его ресурсами и обеспечивают пользовательский интерфейс. Прикладное