Программные модули - раздел Электроника, ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ Программист Пишет Программу На Языке Высокого Уровня...
Программист пишет программу на языке высокого уровня, т.е. наиболее удобном для записи алгоритма решения определенного класса задач. Исходный текст программы, введенный с помощью клавиатуры в память компьютера - исходный модуль (sourse code, в языке Си имеет расширение *.cpp).
Транслятор - программа, осуществляющая перевод текстов с одного языка на другой, т.е. транслятор переводит программу с входного языка системы программирования на машинный язык ЭВМ, на которой функционирует данная система или будет функционировать разрабатываемая программа; либо на промежуточный язык программирования, уже реализованный или подлежащий реализации. Одной из разновидностей транслятора является компилятор, обеспечивающий перевод программ с языка высокого уровня (приближенного к человеку) на язык более низкого уровня (близкий к ЭВМ), или машинозависимый язык.
Интерпретатор представляет собой программный продукт, выполняющий созданную программу путем одновременного анализа и реализации предписанных действий. При использовании интерпретатора отсутствует разделение на две стадии - перевод и выполнение.
Большинство трансляторов языка Си, с которыми мы будем работать - компиляторы.
Результат обработки исходного модуля компилятором - объектный модуль (object code, в языке Си имеет расширение *.obj). Он не может быть выполнен, т.е. это незавершенный вариант машинной программы, т.к., например, к нему должны быть присоединены модули стандартных библиотек. Здесь компилятор (compiler) - вид транслятора, представляющего программу-переводчик исходного модуля в язык машинных команд.
Исполняемый (абсолютный, загрузочный) модуль создает вторая специальная программа - «компоновщик». Ее еще называют редактором связей (Linker). Она и создает модуль, пригодный для выполнения на основе одного или нескольких объектных модулей.
Загрузочный модуль (Load module, расширение *.exe) – это программный модуль, представленный в форме, пригодной для загрузки его в память и выполнения.
Все темы данного раздела:
Структура ПЭВМ
ПЭВМ содержат клавиатуру, системный блок, и дисплей. Схема ПЭВМ представлена на рис. 1.
Р
Размещение данных и программ в памяти ПЭВМ
Данные и программы во время работы ПЭВМ размещаются в оперативной памяти, которая представляет собой последовательность пронумерованных ячеек. По указанному номеру процессор находит нужную ячейку,
Функциональная и модульная декомпозиции
Для большинства задач алгоритмы их решения являются довольно большими и громоздкими. При программировании нужно стараться получить программу удобочитаемую, высокоэффективную и легко модифицируемую.
Файловая система хранения информации
Для размещения информации и программ на различных устройствах компьютера, необходимых пользователю, была разработана концепция файлов.
Под файлом понимается поимено
Способы описания алгоритмов
Существует несколько способов описания алгоритмов. Наиболее распространенными являются словесное и графическое описания алгоритма.
Словесное описание алгоритма рассм
Основные символы схемы алгоритма
Символы ввода-вывода данных:
- данные ввода/вывода (носитель не определен);
Немного истории
Алгоритмический язык С был разработан в 1972 г. сотрудником фирмы AT&T Bell Laboratory Денисом Ритчи на базе языка В (автор К.Томпсон), который в свою очередь основывался на языке системного пр
Алфавит языка
Каждому из множества значений, определяемых одним байтом, - от 0 до 255, ‑ в таблице знакогенератора вычислительной машины ставится в соответствие символ. По системе кодировки фирмы IBM симво
Идентификаторы и ключевые слова
Идентификатор (в дальнейшем, для краткости - ID) – это имя программного объекта (константы, переменной, метки, типа, функции, модуля, поля в структуре). В иден
Простейшая программа
Программа написанная на языке Си состоит из одной или нескольких функций, причем одна функция обязательна имеет идентификатор (имя) main() – основная, главная. Ее назначение – управление всей работ
Основные типы данных
Данные в языке Си разделяются на две категории: простые (скалярные), будем их называть базовыми, и сложные (составные) типы данных.
Основные типы базовых данных: стандартный целый (int), в
Целочисленные константы
Общий формат: ±n (+ обычно не ставится).
Десятичные константы - последовательность цифр 0...9, первая из которых не должна быть 0. Например, 22 и 273 - обычные целые констант
Символьные константы
Символьная константа - это символ, заключенный в одинарные кавычки: 'A', 'х' (занимает 1 байт). Тип char ® целое int.
Так же используются специальные последовательности симво
Преобразование типов операндов арифметических операций
При выполнении операций могут встречаться операнды различных типов. В этом случае они преобразуются к общему типу в соответствии с небольшим набором правил.
Типы операндов преобразуются в
Операция приведения типа
В любом выражении преобразование типов может быть осуществлено явно. Для этого достаточно перед любым выражением поставить в скобках идентификатор соответствующего типа.
Вид записи операци
Стандартные математические функции
Математические функции алгоритмического языка Си декларированы в файлах <math.h> и <stdlib.h>. В последующих записях аргументы x и y имеют тип double; параметр n им
Функции вывода данных на дисплей
Для вывода информации в языке Си чаще всего используются функции: printf() и puts().
Формат функции printf():
printf((<управляющая строка>, список объектов
Функции ввода информации
Функция scanf() предназначена для форматированного ввода исходной информации с клавиатуры
Общий вид этой функции:
scanf (<управляющая строка>, список адресо
Ввод - вывод потоками
Поток - это абстрактное понятие расширенной версии языка С, которое относится к любому переносу данных от источника к приемнику.
Чтение данных из потока - это извлечение (extraction).
Указатели
Указатель – это переменная, которая может содержать адрес некоторого объекта. Указатель объявляется следующим образом:
<тип> *< ID переменной-указателя>;
Понятие массива
В математике для удобства записи различных операций часто используют индексированные переменные: векторы, матрицы, тензоры. Так, вектор пред
Одномерные массивы
Индексы у одномерных массивов в языке Си начинаются с 0, а в программе одномерный массив объявляется следующим образом:
<тип> < ID_массива>[размер]={список начальных значений};
Операция sizeof
Данная операция позволяет определить размер объекта по ID или типу, результатом является размер памяти в байтах (тип результата int). Формат записи:
sizeof(параметр
Применение указателей
Идентификатор массива – это адрес памяти, начиная с которого он расположен, т.е. адрес его первого элемента. Работа с массивами тесно связана с применением указателей.
Пусть объявлены масс
Указатели на указатели
В языке Си можно описать переменную типа «указатель на указатель». Это ячейка оперативной памяти, в которой будет храниться адрес указателя на какую либо переменную. Признак такого типа данных – по
Адресная функция
Использование многомерных массивов в языке Си связано с расходами оперативной памяти на массивы указателей.
Можно избежать таких расходов, если ввести адресную функцию для доступа к элемен
Работа с динамической памятью
В языке С размерность массива при объявлении должна задаваться константным выражением. При необходимости работы с массивами переменной размерности вместо массива достаточно объявит
Строки в языке Си
В языке Си отдельного типа данных «строки символов» нет. Работа со строками реализована путем использования одномерных массивов типа char, т.е. строка символов – это одномерный масс
Русификация под Visual
При работе в консольном приложении Visual ввод-вывод выполняется в кодировке ASCII, которая является международной только в первой половине кодов (от 0 до 127, см. Приложение 1). Символы национальн
Декларация функции
Как объект языка Си, функцию необходимо объявить. Объявление функции пользователя, т.е. ее декларация, выполняется в двух формах – в форме описания и в форме определения.
Описание функции
Вызов функции
Вызов функции имеет следующий формат:
ID _функции (список_аргументов);
где в качестве аргументов можно использовать константы, переменные, выражения (их значения перед вызо
Операция typedef
Любому типу данных, как стандартному, так и определенному пользователем, можно задать новое имя с помощью операции typedef:
typedef <тип> <новое_имя>;
Параметры командной строки функции main
Функция main, с которой начинается выполнение программы, может быть определена с параметрами, которые передаются из внешнего окружения, например, из командной строки. Во внешнем окружении действуют
Функции с переменным числом параметров
Иногда нельзя перечислить типы и число всех возможных параметров функции. В этих случаях список параметров представляется многоточием (...), которое отключает механизм проверки типов. Наличие много
Автоматические переменные
Переменные, декларированные внутри функций, являются внутренними и называются локальными переменными. Никакая другая функция не имеет прямого доступа к ним. Такие объекты существуют временно
Внешние переменные
Объекты, размещаемые в статической памяти, декларируются с атрибутом static и могут иметь любой атрибут области действия. Глобальные объекты всегда являются статическими. Атрибут s
Декларация структурного типа данных
Структурный тип данных задается в виде шаблона, общий формат описания которого следующий:
struct ID структурного типа {
описание полей
};
Атрибут «ID структурног
Создание структурных переменных
Как уже отмечалось само описание структуры не приводит к выделению под нее места в ОП. Теперь необходимо создать нужное количество переменных с приведенной структурой и сделать это можно двумя спос
Вложенные структуры
Структуры могут быть вложенными, т.е. поле структуры может связующим полем с внутренней структурой, описание которой должно предшествовать по отношению к основному шаблону.
Например, в стр
Объединения
Объединение - поименованная совокупность данных разных типов, размещаемых с учетом выравнивания в одной и той же области памяти, размер которой достаточен для хранения наибольшего элемента.
Перечисления
Перечисления - средство создания типа данных посредством задания ограниченного множества значений.
Определение перечислимого типа данных имеет вид
enum ID_
Открытие файла
Каждому файлу присваивается внутреннее логическое имя, используемое в дальнейшем при обращении к нему. Логическое имя (идентификатор файла) - это указатель на файл, т.е. на область памяти, где соде
Закрытие файла
После работы с файлом доступ к нему необходимо закрыть. Это выполняет функция int fclose(указатель файла). Например, из предыдущего примера файл закрывается так: fclose (f);
Блоковый ввод-вывод
В функциях блокового ввода-вывода работа происходит с целыми блоками информации:
int fread(void *p, int size,
int n, FILE *f)
- считывает n блоков
Бинарные файлы
Бинарные (двоичные) файлы обычно используются для организации баз данных, состоящих, как правило, из объектов структурного типа. При чтении-записи бинарных файлов удобнее всего пользоваться функция
Макрозамещение
Макрозамещение - обобщение лексемного замещения посредством параметризации строки директивы define в виде:
#define ID(параметр1,... ) строка
здесь между элементом «ID» и открывающ
Подключение файлов исходного текста
Напомним, что имеются два варианта запроса включения в текущий файл содержимого другого файла. Директива:
#include < ID_файла>
вводит содержимое файла из стандартного катало
Условная компиляция
Директивы условной компиляции и реализуемые правила включения исходного текста:
а) условное включение (аналог работы оператора if):
#if<предикат_условия>
ТЕКСТ_1
Новости и инфо для студентов