- •Язык высокого програмирования “с”
- •Переменные и типы переменных.
- •2.1 Типы данных в си
- •Подробное описание типов данных в языке си
- •Комплексные числа в си
- •Логический тип данных в си
- •Операторы объявлений
- •Константы в си
- •Оператор создания типов данных в си
- •Неявное приведение типа
- •Явное приведение типа в языке c
- •1.1. Арифметические операции
- •2.4 Побитовые операции в си
- •№3 Циклические алгоритмы.
- •Операция присваивания
- •Операции отношения
- •Арифметические операции
- •Логические операции
- •Сдвиговые операции
- •3.2 Цикл с предусловием while
- •Цикл с постусловием do...While
- •Цикл с постусловием
- •Параметрический цикл for
- •Рекомендации по выбору цикла
- •Операторы break и continue
- •Оператор безусловного перехода goto
- •Синтаксис
- •Синтаксис
- •Заметки
- •Синтаксис
- •Заметки
- •Тернарные операции
- •Оператор ветвления switch (оператор множественного выбора)
- •№5 Указатели и массивы.
- •Объявление и инициализация массивов
- •Многомерные массивы
- •Инициализация многомерных массивов
- •Передача массива в функцию
- •5.2 И 5.3
- •5.1 Указатели и адреса
- •5.2 Указатели и аргументы функций
- •5.3 Указатели и массивы
- •5.4 Адресная арифметика
- •5.5 Символьные указатели функции
- •5.6 Массивы указателей, указатели на указатели
- •5.7 Многомерные массивы
- •5.8 Инициализация массивов указателей
- •5.9 Указатели против многомерных массивов
- •5.10 Аргументы командной строки
- •5.11 Указатели на функции
- •5.12 Сложные объявления
- •5.4 Указатели типа void
№1
Язык высокого програмирования “с”
1.1.1
Центра́льный проце́ссор(ЦП; такжецентра́льное проце́ссорное устро́йство—ЦПУ;англ.central processing unit,CPU, дословно —центральное обрабатывающее устройство) —электронный блоклибоинтегральная схема(микропроцессор), исполняющаямашинные инструкции(код программ), главная частьаппаратного обеспечениякомпьютераилипрограммируемого логического контроллера. Иногда называютмикропроцессоромили простопроцессором.
1.1.2
Регистр (цифровая техника) — последовательное или параллельное логическое устройство, используемое для хранения n-разрядных двоичных чисел и выполнения преобразований над ними.
Регистр процессора — сверхбыстрая память внутри процессора, предназначенная для хранения адресов и промежуточных результатов вычислений (регистр общего назначения/регистр данных) или данных, необходимых для работы самого процессора.
Регистр флагов (FLAGS) — регистр процессора, биты (флаги) которого отражают состояние процессора и свойства результатов предыдущих операций.
1.1.3
Двои́чный код— это способ представления данных в одномразрядев виде комбинации двухзнаков, обычно обозначаемых цифрами 0 и 1. Разряд в этом случае называетсядвоичным разрядом.
В случае обозначения цифрами «0» и «1», возможные состояния двоичного разряда наделяются качественным соотношением «1» > «0» и количественными значениями чисел«0» и «1».
Двоичный код может быть непозиционным и позиционным. Позиционный двоичный код лежит в основедвоичной системы счисления, широко распространенной в современнойцифровой технике.
1.2.1
Компиля́ция—трансляция программы, составленной на исходномязыке высокого уровня[источник не указан 102 дня], в эквивалентную программу нанизкоуровневом языке[источник не указан 102 дня], близкоммашинному коду(абсолютный код,объектный модуль, иногда наязык ассемблера)[2][3][4]. Входной информацией для компилятора (исходный код) является описание алгоритма или программа наобъектно-ориентированном языке[источник не указан 102 дня], а на выходе компилятора — эквивалентное описание алгоритма на машинно-ориентированном языке (объектный код)[5].
1.2.2
Ассе́мблер(отангл.assembler— сборщик) — транслятор исходного текста программы, написанной наязыке ассемблера, в программу намашинном языке.
Как и сам язык, ассемблеры, как правило, специфичны для конкретной архитектуры,операционной системыи варианта синтаксиса языка. Вместе с тем существуют мультиплатформенные или вовсе универсальные (точнее, ограниченно-универсальные, потому что на языке низкого уровня нельзя написать аппаратно-независимые программы) ассемблеры, которые могут работать на разных платформах и операционных системах. Среди последних можно также выделить группукросс-ассемблеров, способных собирать машинный код и исполняемые модули (файлы) для других архитектур и ОС.
Ассемблирование может быть не первым и не последним этапом на пути получения исполнимого модуля программы. Так, многие компиляторы с языков программирования высокого уровня выдают результат в виде программы на языке ассемблера, которую в дальнейшем обрабатывает ассемблер. Также результатом ассемблирования может быть не исполняемый, а объектныймодуль, содержащий разрозненные блоки машинного кода и данных программы, из которого (или из нескольких объектных модулей) в дальнейшем с помощьюредактора связейможет быть полученисполнимый файл.
1.3.1
Препроцессор С/С++ (англ. pre processor, предобработчик) — программа, подготавливающая код программы на языке C/C++ к компиляции.
Препроцессором выполняются следующие действия:
замена соответствующих диграфов и триграфов на эквивалентные символы «#» и «\»;
удаление экранированных символов перевода строки;
замена строчных и блочных комментариев пустыми строками (с удалением окружающих пробелов и символов табуляции);
вставка (включение) содержимого произвольного файла (#include);
макроподстановки (#define);
условная компиляция (#if, #ifdef, #elif, #else, #endif);
вывод сообщений (#warning, #error).
Условная компиляция позволяет выбрать код для компиляции в зависимости от:
модели процессора (платформы);
разрядности адресов;
размерности типов;
наличия/отсутствия поддержки расширений языка;
наличия/отсутствия библиотек и/или функций;
особенностей поведения конкретных функций;
и другого.
Этапы работы препроцессора:
лексический анализ кода C/C++ (синтаксический анализ не выполняется);
обработка директив;
выполнение подстановок:
диграфов и триграфов;
комментариев;
директив;
лексем, заданных директивами.
Язык препроцессора C/C++ не является полным по Тьюрингу хотя бы потому, что с помощью директив невозможно заставить препроцессор зависнуть. См. рекурсивная функция (теория вычислимости).
1.3.2
□ S-компилятор (англ. S-compiler) –
программа s-машины для преобразования исходного кода программ, написанных на одном из языков программирования высокого уровня (Паскаль, Си, Фортран или др.), в эквивалентный набор инструкций на языке низкого уровня, называемый объектным кодом [как правило, предназначенным для дальнейшего преобразования специальной программой (компоновщиком) в исполняемый код, рассчитанный на конкретную вычислительную платформу].
1.3.3
Компоновщик (также реда́ктор свя́зей, линкер — от англ. link editor, linker) — программа, которая производит компоновку — принимает на вход один или несколько объектных модулей и собирает по ним исполнимый модуль.
Для связывания модулей, компоновщик использует таблицы имён, созданные компилятором в каждом из объектных модулей. Такие имена могут быть двух типов:
Определённые или экспортируемые имена — функции и переменные, определённые в данном модуле и предоставляемые для использования другим модулям
Неопределённые или импортируемые имена — функции и переменные, на которые ссылается модуль, но не определяет их внутри себя
Работа компоновщика заключается в том, чтобы в каждом модуле разрешить ссылки на неопределённые имена. Для каждого импортируемого имени находится его определение в других модулях, упоминание имени заменяется на его адрес.
№2