Программирование >>  Формирование пользовательского контейнера 

1 ... 149 150 151 [ 152 ] 153 154 155 156


0123456789

Обратите внимание на то, что встроенная библиотечная функция getchar О использует в этом прогоне буферизацию строки, благодаря которой символы, посылаемые функцией putchar (), не выводятся на экран до тех пор, пока не нажата клавиша <Enter>. Такое поведение - результат работы реальной функции getchar (), вызываемой интерпретатором Mini С++. Как вы знаете.

cout \n ;

Оператор do-while.

cout \nEnter characters, q to quit.Xn ; do {

Использует две функции стандартной библиотеки .

ch = getchar () ;

putchar(ch); } while(ch != -q); cout , \n\n ;

Оператор for. for(a=0; a<10; ++a) { cout a ;

cout \n\nDone!\n ; return 0;

Далее приведен пример вывода программы из листинга 9.10.

Enter а number: 10

100 81 64 49 36 25 16 9 4 1

Enter characters, q to quit. This is test, q This is test, q



Листинг SCll. Демонстрационная программа 7

Демонстрирует вложенные области видимости.

int х; глобальная х

int main О {

int i; i = 4;

x = 99; глобальной переменной х присваиваивается значение 99

if(i == 4) {

int х; локальная х

int num; локальная для оператора if

x 5: i * 2;

cout Outer local x before loop: x \n ;

while (x-) {

int x; другая локальная x

x = 18;

cout Inner local x: x \n ;

cout Outer local x after loop: x \n ;

большинство компиляторов реализуют функцию getchar о с буферизацией строки. Вывод - встроенная функция Mini С++ ведет себя так же, как и лежащая в ее основе библиотечная функция.

Программа, приведенная в листинге 9.11, демонстрирует обработку вложенных областей видимости. В ней переменная х объявляется три раза: сначала как глобальная переменная, потом как локальная переменная в блоке оператора if и, наконец, снова в блоке цикла while. Все три объявления независимы и отличаются друг от друга.



Усовершенствование интерпретатора Mini С++

Mini С++ разрабатывался так, чтобы было легко следить за его функционированием. Основной целью было создание интерпретатора, принцип действия которого можно понять без особых усилий. Он также разрабатывался с учетом возможного расширения. Поэтому интерпретатор Mini С++ не особенно быстр и эффективен, но содержит базовую структуру, производительность которой можно повысить с помощью следующих действий. Практически все коммерческие интерпретаторы расширяют роль процедуры предварительного просмотра. Весь исходный код профаммы переводится из удобной для чтения формы во внутренний формат. В этом формате все переменные и сфоки, кроме заключенных в кавычки, преобразованы в целочисленные лексемы, подобно тому, как Mini С++ преобразует ключевые слова языка С++ в целочисленные лексемы. Вы, вероятно, заметили, что Mini С++ проводит ряд сравнений строк. Например, каждый раз, когда ведется поиск той или иной функции или переменной, требуется несколько сравнений строк. Подобные сравнения занимают много времени, а если заменить сфоки целочисленными лексемами, можно использовать гораздо

Не может ссылаться здесь на num, так как она локальная для предшествующего блока if. num = 10;

cout Global x: x \n ; }

Далее приведен вывод программы из листинга 9.11. Обратите внимание на то, что все 3 переменные х разные.

Outer local х before loop: 8

Inner local x: 18

Inner local x: 18

Inner local x: 18

Inner local x: 18

Inner local x: 18

Inner local x: 18

Inner local x: 18

Inner local x: 18

Outer local x after loop: -1

Global x: 99



1 ... 149 150 151 [ 152 ] 153 154 155 156

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика