Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
otvety_infa.docx
Скачиваний:
1
Добавлен:
04.08.2019
Размер:
187.42 Кб
Скачать
  1. Правила инициализации переменных с различным временем жизни.

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

Третий вид объектов позволяет программисту полностью управлять выделением и освобождением памяти. Такие объекты называют динамически размещаемыми или, для краткости, просто динамическими. Динамический объект “живет” в пуле свободной памяти, называемой хипом. Программист создает его с помощью оператора new, а уничтожает с помощью оператора delete. Динамически размещаться может как единичный объект, так и массив объектов. Размер массива, размещаемого в хипе, разрешается задавать во время выполнения.

  1. Модели памяти компьютера при работе с программами.

Моделью памяти называется набор опций компилятора, определяющий размер и структуру оперативной памяти, предоставляемой программе при ее выполнении.Модели памяти не являются частью языка Си, а зависят от используемой оболочки.

Когда программа загружается в ОЗУ для выполнения, ей отводится определенное место, в котором можно выделить несколько областей: область кода (ОК); область данных, глобальных и статических переменных(ОД); стек; куча (heap или динамическая память).

Модели памяти устроены по-разному. Рассмотрим расположение областей памяти в модели large.Область кода содержит машинные коды функций программы. Функции, присоединенные к exe-файлу на стадии линковки, размещаются вне области кода.

Область данных содержит глобальные и статические переменные, строковые константы.

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

  1. Управление экраном и курсором в текстовом режиме,

Вывод и манипулирование текстом

Ниже перечислены функции вывода и манипулирования текстом в текстовом режиме:

Запись и чтение текста:

cprintf Посылает на экран форматированный вывод.

cputs Посылает на экран строку.

getche Считывает символ с эхо-отображением его на экране putch Посылает на экран отдельный символ.

Манипулирование текстом (и курсором) на экране:

clreol Стирание от курсора до конца строки.

clrscr Стирание текстового окна.

delline Удаление текущей строки курсора.

gotoxy Позиционирование курсора.

Insline Вставка пустой строки под текущей позицией курсора.

movetext Копирование текста из одной области экрана на другую.

Пересылка блоков текста между памятью и экраном:

gettext Копирование текста из области экрана в память.

puttext Копирование текста из памяти в область экрана.

По умолчанию ваши программы экранного вывода работают с полноэкранным текстовым окном, поэтому вы можете в них сразу же начинать писать, читать и манипулировать текстом без каких-либо предварительных установок режима. Запись текста на экран выполняется при помощи консольных функций прямого вывода cprintf, cputs и putch, а ввод с консоли с эхо-отображением символов наа экране выполняется функцией getche. Циклический переход текста по экрану определяется глобальной переменной -wscroll. Если _wscroll равна 1, то текст при достижении конца строки переходит на следующую строку экрана, причем при необходимости выполняется вертикальный скроллинг. Если _wscroll равен 0, то текст переходит на ту же самую строку, и скроллинг не выполняется. По умолчанию _wscroll равна 1.

После того, как ваш текст выведен на экран, вы можете стереть активное окно при помощи clrscr, либо стереть часть строки от текущей позиции курсора при помощи clreol, либо удальть целую строку при помощи delline, либо вставить пустую строку при помощи insline. Три последние функции работают относительно текущей позиции курсора; перемещение курсора в желаемую позицию выполняется при помощи gotoxy. Вы можете также скопировать целый блок текста из одной прямоугольной области в другую при помощи movetext.

Имеется также функция копирования прямоугольной области текста с экрана в память gettext и обратная функция копирования текста из памяти на экран (в любую позицию) puttext.

Управление окнами и режимом

Существует две функции управления окнами и режимом:

textmode Устанавливает текстовый режим экрана.

window Определяет окно текстового режима.

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

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

Запрос состояния

Ниже кратко перечислены функции, при помощи которых ваша программа может сделать запрос состояния видео параметров:

gettextinfo Заполняет структуру text_info информацией о текущем текстовом окне.

wherex Дает x-координату ячейки экрана, в которой в текущий момент находится курсор.

wherey Дает y-координату ячейки экрана, в которой в текущий момент находится курсор.

Функции консольного ввода/вывода Turbo C++ включают в себя несколько специальных функций запроса состояния. При помощи этих функций вы можете получить достеп к информации о текущем текстовом режиме и текущей позиции курсора в этом окне.

Функция gettextinfo заполняет структуру text_info (определенную в conio.h) подробными данными о текстовом окне, включая:

- текущий видео режим

- позиция окна в абсолютных экранных координатах

- размеры окна

- текущие цвета переднего плана и фона

- текущая позиция курсора

Иногда вам нужны только некоторые из этих деталей. Вместо обращения к полной информации о данном текстовом окне можно отдельно получить сведения о текущей позиции (относительно начала окна) курсора с помощью функций wherex и wherey.

Форма курсора

Для изменения способа представления курсора служит новая функция _setcursortype. Она принимает значения _NOCURSOR, которая вообще отменяет курсор, _SOLIDCURSOR, которая дает курсор в виде сплошного прямоугольничка и _NORMALCURSOR, которое соответствует обычному курсору в форме подчеркивания.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]