Общие сведения о компьютерах, программах и программировании

Вопросы к экзамену по курсу «Информатика».

преподаватель Макаревич А.А.

1. Информация. Хранение и передача.

 

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

Характерными чертами информации являются следующие:

  1. Это наиболее важный ресурс современного производства: он снижает потребность в земле, труде, капитале, уменьшает расход сырья и энергии.
  2. Вызывает к жизни новые производства.
  3. Является товаром, причем продавец информации ее не теряет после продажи.
  4. Придает дополнительную ценность другим ресурсам, в частности, трудовым. Действительно, работник с высшим образованием ценится больше, чем со средним.
  5. Информация может накапливаться.

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

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

 

2. Оцифровка информации.

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

 

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

 

3. Двоичная система исчисления.

 

Для цифрового представления информации могут применяться различные системы исчисления - совокупности приемов и правил для записи чисел цифровыми знаками.

Нам наиболее привычна десятичная система исчисления, где для записи информации используются цифры 0,1,:,9.

В компьютерах используется двоичная система исчислений, где для записи информации используются только цифры 1 и 0.

Двоичная система используется в цифровых устройствах, поскольку является наиболее простой и соответствует требованиям:

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

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

Двоичная арифметика является довольно простой. Простыми являются таблицы сложения и умножения — основных действий над числами.

 

4. ЭВМ. Форм-факторы современных компьютеров.

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

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

 

5. Архитектура персонального компьютера.

Внутренняя архитектура большинства персональных компьютеров в независимости от их форм-фактора очень похожа.

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

 

6. Оперативная память: структура, адресация, бит, байт.

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

Содержащиеся в оперативной памяти данные доступны только тогда, когда на модули памяти подаётся напряжение, то есть, компьютер включён. Пропадание на модулях памяти питания, даже кратковременное, приводит к искажению либо полному уничтожению данных в ОЗУ.

С точки зрения процессора, оперативная память представляет собой массив пронумерованных ячеек. Номер каждой ячейки памяти называется ее адресом.В общем случае размер одной такой ячейки равен одному байту, байт в свою очередь состоит из 8 бит (знаков двоичной системы).

7. Процессор: рабочий режим, базовые операции обработки.

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

Каждая операция выполняется процессором за один такт. Количество тактов, которые процессор может выполнить за определенное время. Например процессор с частотой 1 МГц выполняет миллион тактов в секунду, а 1ГГц – миллиард тактов.

Разрядность адреса является другой важнейших характеристико процессора и реализуемой им системы команд. Разрядность важна не как самоцель, а потому, что ею обусловлен объем адресуемой памяти — адресного пространства. Системы с 16-разрядным адресом способны адресовать 64 Кбайт (65 536) ячеек памяти, а с 32-разрядным — 4 Гбайт (4 294 967 296) ячеек.

 

8. Файловая система.

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

 

9. Периферийные устройства и устройства ввода.

Периферийные устройства позволяют пользователю взаимодействовать с компьютером. Периферийные устройства можно разделить на следующие группы:

- устройства ввода информации (клавиатура, мышь, микрофон, сенсорный экран и т.д.);
- устройства вывода информации (монитор, принтер…);
- устройства хранения информации (жесткий диск, флэш-память…);
- мультимедийные устройства (колонки, наушники…);
- устройства передачи информации (сетевая карта, модем...).

 

10. Понятие о программе.

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

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

 

11. Внутренний язык компьютера– машинный код.

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

 

12. Операционная система.

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

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

13. Архитектура операционных систем. Основные современные платформы.

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

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

В настоящее время наиболее распространёнными операционными системами являются ОС семейств Windows и Unix.

 

14. Виртуальные машины.

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

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

 

15. Языки программирования высокого уровня.

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

Для большинства же практических задач программирования применяются так называемые «языки высокого уровня». Программа на языках высокого уровня состоит из набора ключевых слов на «человеческом языке» и математических операторов.

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

16. Компиляторы и интерпретаторы.

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

Есть два способа выполнения программы: она может быть подвергнута компиляции или интерпретации. Программа, написанная на любом языке программирования, может как компилироваться, так и интерпретироваться, однако многие языки изначально созданы для выполнения преимущественно одним из этих способов. Например, Java рассчитан в основном на интерпретацию программы, а язык С — на компиляцию.

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

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

 

17. Парадигмы программирования.

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

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

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

 

18. Процедурное программирование.

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

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

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

19. Алгоритмы.

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

20. Объектно-ориентированное программирование.

Объе́ктно-ориенти́рованное программи́рование — парадигма программирования, в которой основными концепциями являются понятия объектов и классов

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

Данные объекта скрыты от остальной программы. Сокрытие данных называется инкапсуляцией.

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

Третьим признаком ООП является полиморфизм; или возможность объектов с одинаковой спецификацией иметь различную реализацию.

 

21. Типизация данных.

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

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

22. Интегрированные среды разработки программ.

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

Обычно среда разработки включает в себя:

- текстовый редактор;

- компилятор и/или интерпретатор;

- отладчик.

Иногда содержит также разнообразные инструменты для упрощения конструирования графического интерфейса пользователя. Многие современные среды разработки также включают браузер классов, инспектор объектов и диаграмму иерархии классов — для использования при объектно-ориентированной разработке ПО. Хотя ранее большинство сред разработки предназначалось для одного конкретного языка программирования, в наше время существуют и популярны среды, предназначенные для нескольких языков программирования — такие, как, например, Microsoft Visual Studio

23. Полный цикл создания программ.

Существует несколько подходов к разработке программного обеспечения.

В общем случае процесс разработки обычно включает следующие этапы:

-анализ (на этом этапе формируются видение и границы проекта, создается экономическое обоснование, определяются основные требования, ограничения и ключевая функциональность продукта, оцениваются риски);

- проектирование (выбор архитектуры проекта, создание прототипа);

- разработка;

-тестирование и стабилизация.

24. Паттерны проектирования.

 

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

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

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

25. Отладка и тестирование, понятие об автоматическом тестировании.

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

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

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

2. Основы программирования на языке С#

1. Основы синтаксиса С#, регистр, написание ключевых слов, выделение блоков кода.

2. Типы данных.

3. Переменные и их хранение в памяти. Стэк и куча.

4. Значения и ссылки.

5. Особенности типа данных string.

6. Приведение типов данных.

7. Области видимости.

8. Классы и объекты, статические классы.

9. Основы ООП: наследование, инкапсуляция, полиморфизм.

10. Интерфейсы и абстрактные классы.

11. Перечисления.

12. Методы.

13. Функции.

14. Параметры. Передача параметров по значению и ссылке.

15. Свойства.

16. События и делегаты.

17. Массивы и коллекции.

18. Генерация случайных величин - чисел и строк.

19. Условные операторы.

20. Оператор switch.

21. Циклы for.

22. Циклы while.

23. Циклы foreach.

24. Операторы сontinue и break.

25. Консольные приложения на C#. Ввод/вывод информации.

3. Дополнительные вопросы программирования на С#

1. .NET Framework. Философия и основные компоненты.

2. Общая библиотека классов .NET.

3. Промежуточный язык MSIL.

4. Среда выполнения CLR.

5. Сборки .NET.

6. Пространства имен .NET. Подключение внешних ссылок к проекту.

7. Использование пространства имен System.IO.

8. Использование пространства имен Math.

9. Автоматизация Microsoft Office: Word.

10. Автоматизация Microsoft Office: Excel.

11. Автоматизация Microsoft Office: Powerpoint.

12. Автоматизация AutoCAD.

13. Многопоточность. Задачи и реализация (System.Threading).

14. Язык разметки XML (System.XML).

15. Способы хранения данных.

16. Работа с файловой системой.

17. ADO.NET –доступ к базам данных.

18. Обработка исключений. Блок try – catch.

19. .NET Framework 2.0. Разработка приложений с использованием Windows Forms.

20. .NET Framework 3.0. Windows Presentation Foundation. Язык разметки XAML.

21. .NET Framework 3.5. LINQ.

22. .NET Framework 3.5. ADO.NET Entity Framework.

23. ASP.NET – общие сведения.

24. Web Service’ы. Задачи.

25. Реализация .NET для других платформ (Silverlight, Mono, MonoTouch).