Размещение данных и программ в памяти ПЭВМ - раздел Электроника, ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ Данные И Программы Во Время Работы Пэвм Размещаются В Оперативной Памяти, Кот...
Данные и программы во время работы ПЭВМ размещаются в оперативной памяти, которая представляет собой последовательность пронумерованных ячеек. По указанному номеру процессор находит нужную ячейку, поэтому номер ячейки называется ее адресом. Минимальная адресованная ячейка (согласно стандарту IBM), с точки зрения программиста, состоит из 8 двоичных позиций, т.е. в каждую позицию могут быть записаны либо 0, либо 1. Объем информации, который помещается в одну двоичную позицию, называется битом. Объем информации, равный 8 битам, называется байтом.
Таким образом, в одной ячейке из 8 двоичных разрядов помещается объем информации в один байт. Поэтому объем памяти принято оценивать количеством байт (210 байт = 1024 байт = 1 Кб, 210 Кб = 1048576 байт = 1 Мб).
Для помещения данных в такие ячейки производится их запись с помощью нулей и единиц (кодирование). При кодировании каждый символ, введенный с клавиатуры, заменяется последовательностью из 8 двоичных разрядов в соответствии со стандартной кодовой таблицей, т.е. символ занимает один байт. Например, в соответствии с таблицей кодов ASCII D ® 01000100; F ® 00100110; 4 ® 00110100; ? ® 0011110.
При кодировании числа преобразуются в двоичное представление. Например,
2 = 1×21 + 0×20 = 102; 5 = 1×22 + 0×21 + 1×20 = 1012; 256 = 1×28 = 1000000002.
При работе с числами различают:
1) целые: ±n;
2) вещественные:
- с фиксированной десятичной точкой: ±n.m;
- с плавающей десятичной точкой (экспоненциальная форма): ±n.mE±p, где n, m - целая и дробная части числа, р - порядок; ±0.xxxE±p - нормализованный вид.
С увеличением числа количество разрядов для его представления в двоичной системе резко возрастает, поэтому для размещения большого числа выделяется несколько подряд расположенных однобайтных ячеек. В этом случае адресом такой расширенной ячейки является адрес первого байта. Один бит такой ячейки выделяется под знак числа. Числа, размещенные таким образом - целые.
Для хранения вещественных чисел их предварительно приводят к нормализованному виду. Например, 35,6 = 0.356×10+2, где 0.356 – мантисса, +2 – порядок. После этого переводят порядок и мантиссу в двоичную систему. Такое число запоминается в комбинированной ячейке, один байт которой содержит порядок, несколько других содержат мантиссу. Числа, размещенные таким образом - вещественные.
Программа – это последовательность команд (инструкций), которые помещаются в памяти и выполняются процессором в указанном порядке.
Команда размещается в комбинированной ячейке следующим образом. Первый байт содержит код операции (КОП) (например + или – или *), которую необходимо выполнить над содержимым ячеек памяти. В одной, двух или трех ячейках (операндах команды) по 2 или 4 байта содержатся адреса ячеек (А1, А2, А3), над которыми нужно выполнить указанную операцию. Номер первого байта команды называется ее адресом. Последовательность из этих команд называется программой в машинных кодах (рис. 2).
Рис. 2
Все темы данного раздела:
Структура ПЭВМ
ПЭВМ содержат клавиатуру, системный блок, и дисплей. Схема ПЭВМ представлена на рис. 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
Новости и инфо для студентов