
- •1. Модель компьютера для программиста
- •2.Программное обеспечение. Компиляторы и интерпретаторы
- •3. Создание программ. Жизненный цикл программного обеспечения.
- •4. Транслятор и компоновщик. Библиотека языка Си.
- •5. Базовые элементы языка Си. Алфавит и словарь языка.
- •6. Правила образования идентификаторов. Ключевые слова и имена. Символы операций и разделителей.
- •7. Литералы. Структура предложений в Си.
- •9.Константы и переменные в Си
- •10. Типы данных и их роль в языке Си
- •11. Стандартные скалярные типы данных
- •11.Массивы
- •Структуры
- •14 .Арифметические выражения и операции
- •15. Выражение
- •16. Выражения присваивания.
- •17. Условные и логические операции.
- •18. Выражения с указателями
- •19. Постфиксное выражение
- •21.Приоритет операций и скобочная структура выражений
- •22. Структура программы на Си
- •23. Базовые операторы языка Си
- •24. Условные операторы языка Си.
- •25. Оператор Switch . Организация множественного выбора.
- •26. Оператор return
- •27. Операторы цикла
- •28. Оператор continue как средство управления циклом
- •30. Указатели
- •31. Массивы. Синтаксис объявления.
- •32. Основные свойства массивов
- •Массив и константный указатель
- •34. Символьная строка и массив символов
- •37. Многомерный массив
- •38. Многомерные массивы и указатели
- •39. Директива процессора #define
- •40. Директива #include
- •43. Вызовы функций
- •44. Массивы и параметры
- •48. Объявление функции
- •50 Преобразование основных типов.
- •51. Тип функции
- •52. Стандартные функции библиотеки Си
1. Модель компьютера для программиста
Язык программирования C++ это формальный язык. Он служит для описания данных и алгоритмов их обработки на ЭВМ. C++ является языком "общения" человека с компьютером. Основным "читателем" текстов на языке C++ является транслятор. Это особая программа, в обязанности которой входит проверка правильности текста программы и его последующий перевод на язык процессора - основного устройства ЭВМ, который и обеспечивает выполнение программы. Он не имеет никакого представления о содержательной стороне описываемых алгоритмов. Процессору важны адреса, регистры, прерывания. Язык программирования позволяет описывать алгоритмы и данные. Даже самые абсурдные с точки зрения программиста, реализующего сколько-нибудь значимый алгоритм, предложения языка остаются абсолютно правильными и корректными для транслятора.
Формальный язык является объединением нескольких множеств:
множества исходных символов, называемых литерами (алфавит),
множества правил, которые позволяют строить из букв алфавита новые слова (правила порождения слов или идентификаторов),
множества предопределённых идентификаторов или словаря ключевых слов (прочие идентификаторы называются именами),
множества правил, которые позволяют собирать из имён и ключевых слов выражения, на основе которых строятся простые и сложные предложения (правила порождения операторов или предложений).
Множество правил порождения слов, выражений и предложений называют грамматикой формального языка или формальной грамматикой. Грамматика формального языка также может быть описана в виде множества правил на естественном языке. Но обычно для этого используют специальные средства записи: формулы и схемы.
Компьютер состоит из
1АЛУ с входными и выходными регистрами
2Оперативной памяти с областью команд и данных
3Устройства управления
4Устройства ввода-вывода
Регистры представляют собой устройства для хранения одной единицы информации. Арифметико-логическое устройство выполняет основные вычислительные и логические команды. Оперативная память представляет собой последовательность пронумерованных ячеек, называемых байтом. Каждая ячейка имеет порядковый номер, который является ее линейным адресом. В ячейке храниться информация, которая составляет содержимое ячейки. Элемент данных записывается в один байт или группу смежных байтов. Адрес первого из них является адресом этого элемента. В ОП хранятся как данные, так и команды.
2.Программное обеспечение. Компиляторы и интерпретаторы
Устройство современных ЭВМ основано на принципах двоичной арифметики, где для представления чисел используются всего две цифры - 0 и 1. В двоичной арифметике любое число кодируется битовыми последовательностями. Вся необходимая для работы ЭВМ информация также хранится в памяти ЭВМ в битовом представлении.
Особенности устройства ЭВМ определяют способы её управления. Командами для управления ЭВМ служат всё те же битовые последовательности. Для первых ЭВМ альтернативных способов управления просто не существовало. Алфавит языка непосредственного кодирования содержал всего две буквы. Процесс программирования в кодах малоэффективен. Программирование в мнемонических командах удобнее для программиста, поскольку мнемонические коды содержат для программиста дополнительную информацию по сравнению с трудно различимыми последовательностями нулей и единиц. Вместе с тем текст подобной программы становится абсолютно непонятным вычислительной машине и требует специальной программы-переводчика (или транслятора), которая бы заменяла мнемонический код исходной двоичной командой. С момента реализации этой идеи кодирование становится программированием.
Машинные команды, это команды низкого уровня, обращенные непосредственно к процессору. Точный вид команд на языках низкого уровня зависит от типа компьютера. Инструкции, написанные на языке ассемблера, выглядят почти также как машинные команды, однако для их реализации необходимо дополнительное преобразование (а именно, перевод в двоичные строки).
Перевод инструкций с языка высокого уровня на машинный язык осуществляют специальные программы, называемые компилятором. Компиляторы это особый вид программ, для которых входными и выходными данными являются программы. Принято первичную программу называть исходной программой, а переведенную компилятором объектным кодом. Языки, которые требуют предварительного перевода, называются языками высокого уровня. Считается, что эти языки в определённом смысле более близки к естественному языку. С последним утверждением можно не согласится, но одно очевидно: многолетний опыт показал, что использование языков высокого уровня значительно повышает эффективность программирования