русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Операции над адресами


Дата добавления: 2013-12-23; просмотров: 1087; Нарушение авторских прав


Задание окна вывода

Функции вывода puts( ) и cputs()

В строке форматов должно быть столько же спецификаторов полей вывода, сколько указано объектов. Спецификатор обязательно должен соответствовать типу объекта.

Пример распространенной ошибки:

int x;

float y;

. . .

printf (”Получено x = %f y = %f \n”, x , y);

 

Объекты int и float это объекты разных типов и должны иметь разные спецификаторы.

Пара символов \n, \r и т.п. называется управляющей последовательностью.

Назначение этих последовательностей следующее:

\n – переход на следующую строку;

\r – возврат каретки;

\t – табуляция;

\a – звонок;

\b – возврат на один шаг;

\f - перевод формата (страницы);

\ \ - вывод знака \ ;

\ ’ – вывод знака ’;

\ ’’- вывод знака ’’.

 

 

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

Например:

“Система Borland C”

Функция puts() выводит строку символов, а затем выполняет переход к следующей строке поля экрана.

Пример простой программы:

# include <stdio.h> / / Подключение функций ввода/вывода

# include <conio.h >

void main (void) / / Главная функция

{

printf(“Система Borland C\n”) ; / / Печать строки

puts(“Система Borland C”); / / Печать строки

cputs(“Система Borland C\n\r”); / / Печать строки

}

 

Большинство программ связано с окнами (windows), а не со всем экраном. Окно – это прямоугольная область экрана, которую программа использует для выдачи сообщения.

Borland C++ позволяет устанавливать размер и местоположение окон на экране. Окном может быть весь экран или его маленькая область. По умолчанию областью вывода является весь экран. Если требуется установить окно меньшего размера нужно использовать функцию window(), а для очистки окна – функцию clrscr().



Приведем пример простой программы и рассмотрим ее более подробно:

Пример:

#include <conio.h>

int main (void)

{

clrscr( ); /* очистка текстового окна*/

window(10,10,60,20,); /* задание нового окна */

cputs (“Это текст \r\n”); /* вывод текста */

getch( ); /* ждать нажатия клавиши */

retrn 0;

}

Рассмотрим каждую строку:

1. #include <conio.h> - директива препроцессора (текстового процессора), требующая подключить файл conio.h к нашей программе. Любая директива препроцессора начинается с символа # (номер).

2. int main (void) – здесь int - тип значения, возвращаемого функцией main, т.е. целое число;

main – имя функции;

(void) – означает отсутствие параметров у функции.

3. { - открывающая скобка – означает начало описания функции.

4. /* это комментарий */ - игнорируется компилятором.

5. clrscr ( ) - функция, очищающая текущее текстовое окно. Первоначально текстовое окно занимает все поле экрана.

6. window(10,10,60,20),

window(x1,y1,x2,y2) - функция, определяющая координаты текущего текстового окна. Окно задается координатами левого верхнего угла (x1,y1) и правого нижнего угла (x2,y2). В обычном режиме (С80) эти координаты задаются пределами: 1<= x <= 80; 1<= y <= 25.

7. cputs() – выводит строку текста, заключенную в двойные кавычки. \r\n -управляющие последовательности (см. табл.1.3).

8. getch( ) – функция, ожидающая нажатия любой клавиши; используется для временной остановки программы.

9. return 0 - оператор, с помощью которого функция возвращает в точку вызова некоторое значение.

10. } - закрывающая скобка функции main ().

Число открывающих и закрывающих скобок в программе должно быть всегда одинаковым.

 

 

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

&- определение адреса операнда;

* - обращение по адресу.

Например, если bip – переменная типа int, то &bip – адрес переменной, по которому она расположена в памяти;

Если char *prt –указатель на данное типа char, то *prt – это само данное типа char (символ).

Пример операции над адресами:

# include <conio.h>

void main (void)

{

int bip;

char *prt;

bip = 2+3;

prt = ‘’Язык Turbo C\n’’

cprintf (‘’bip = %d &bip = %p\n\r’’, bip, &bip);

cprintf (‘’*prt = %c prt = %p\n\r’’, *prt, prt);

}

В результате выполнения этой программы в первой строке будет выведено значение переменной bip, равное 5 и адрес, по которому это значение размещено в памяти. Во второй строке будет выведен символ ''Я'', т.е. первый символ и адрес, по которому этот символ расположен в памяти.

Для того, чтобы более четко уяснить механизм адресации к строке символов, рассмотрим этот вопрос более подробно.

Определение местоположения строки символов и адресация к ней осуществляется с помощью указателя.

Символьные массивы (строки). Вспомним, что в языке Си переменная типа указатель объявляется следующим образом:

int *a; char *b; и т.п.

После таких объявлений а и в трактуются как переменные - указатели на соответствующий тип, a *a и *b – как сами переменные данного типа.

Переменные типа указатель содержат адрес операнда, на который они ссылаются:

Пример:

# include <conio.h>

void main (void)

{

char *st;

st = ”Язык программирования C\n”

cputs (st);

}

В результате обработки строки программы:

st =”Язык программирования C\n”

компилятор создает в тексте объектного кода машинный эквивалент этой строки, а переменной - указателю st присвоит адрес первого символа строки, т.е. адрес символа “Я”. Машинный код строки завершается специальным символом - терминатором или нулевым символом '\О'.

Команда cputs(st) воспроизведет строку символов на экране дисплея, начиная с того, который адресуется переменной st, вплоть до символа - терминатора.

Помимо определения строки символов в форме указателей существует и другая форма задания строки: в форме массива символов.

Пример:

# include <conio.h>

# include <string.h> /* файл заголовка функций, оперирующих со строками*/

void main (void)

{

char mas [24];/* описание массива из 24 символов */

strcpy (mas,’’Язык программирования С ''); /*копирование строки в массив */

cputs (mas);

}

По команде char mas [24] компилятор зарезервирует область памяти для 23 символов строки и еще один байт для размещения символа- терминатора '\О'.

Переменная mas несет информацию об адресе первого символа (нулевого элемента массива, т.к. массивы в Си нумеруются с 0: mas [0], mas[1],.. и т.д.).

Функция cputs() выведет на экран посимвольно все элементы массива. При этом каждый раз будет осуществляться проверка: не является ли очередной символ символом-терминатором.

Вот почему при размещении строки в массиве всегда необходимо отводить как минимум на один элемент больше для '\О', или определяйте необходимый размер в памяти по умолчанию:

char mas[]=’’Строка символов''; /* Размер массива не задан */.

Отметим, что функция cputs() и strcpy() работают с формальными параметрами типа указатель. Их прототипы имеют следующий вид:

int cputs (char* string);

char strcpy (char*dest, char* sours).

Это значит, что при вызове этих функций им должны в качестве фактических параметров передаваться адреса. Но в нашей программе нигде не встречается символ &. В чем же дело?

В том, что при описании массива его имя трактуется как указатель на его первый элемент, т.е.

 

 

  mas эквивалентно & mas[0]  

 

 



<== предыдущая лекция | следующая лекция ==>
Операции вывода данных | Поразрядные (побитовые) операции


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.004 сек.