|
|
|
| |
Главная Программирование С++ Демонстрация интерпретатора Mini С++
Демонстрация интерпретатора Mini С++ |
В этом разделе приведено несколько программ на языке С++, иллюстрирующих свойства и возможности интерпретатора Mini С++. Первая демонстрирует все элементы языка, поддерживаемые интерпретатором Mini С++. |^1истинг 9.5. Демонстрационная программа 1 1 /* Эта программа демонстрирует все элементы С++, распознаваемые Mini С++.*/ int i, j; // глобальные переменные char ch; int main() { int i» j; // локальные переменные // Вызов функции из "Стандартной библиотеки", cout « "Mini С++ Demo Program.\n\n"; // Вызов функции, определенной программистом. print_alpha(); cout « "\n"; // Демонстрирует циклы do и for. cout « "Use loops.\n"; do { cout « "Enter a number (0 to quit): "; cin » i; // Демонстрирует оператор if if(i < 0 ) { cout « "Numbers must be positive, try again.\n" } else { for(j = 0; j <= i; ++j) { cout « j « " summed is " ; cout « sum(j) « "\n"; } } } while(i != 0); cout « "\n"; // Демонстрирует оператор break в цикле, cout « "Break from a loop.\n"; for(i=0; i < 100; i++) { cout « i « "\n"; if(i == 5) { cout « "Breaking out of loop.\n"; break; } cout « "\n"; // Демонстрирует оператор swicch cout « "Use a switch. \n"; for(i=0; i < 6; i++)i { switch(i) case 1: // может сохранять метки в стеке (can stack cases) case 0: cout « "1 or 0\n"; break; case 2: cout « "two\n"; break; case 3: cout « "three\n"; break; case 4: cout « "four\n"; cout « "4 * 4 is "« 4*4 « "\n"; I break; // этот оператор break не обязателен // нет метки для значения 5 } } cout « " \п" ; cout « "Use a library function to generate " « "10 random integers.\n"; for(i=0; i < 10; i++) { cout « rand() « " "; } cout « "\n"; cout « "Done!\n"; return 0; '/ Сумма значений между 0 и num. /I Эта функция принимает параметр. int sum (int num) { int running_sum; running_sum = 0; while(num) { running_sum = running_sum + num; num—; } return running_sum; } // Выводит на экран алфавит. int print_alpha() { cout « "This is the alphabet:\n"; for(ch = 'A'; dKs'Z'; ch++) { putchar(ch); } cout « "\n"; return 0; } Далее приведен образец вывода программы из листинга 9.5. Mini С++ Demo Program. This is the alphabet: ABCTFJXMIJKLMNOPQRSTUVWXYZ Use loops. Enter number (0 to quit) : 10 0 summed is 0 1 summed is 1 2 summed is 3 3 summed is б 4 summed is 10 5 summed is 15 6 summed is 21 7 summed is 28 8 summed is 36 9 summed is 45 10 summed is 55 Enter a number (0 to quit) : 0 0 summed is 0 Break from a loop. 0 1 2 3 4 5 Breaking out of loop. Use a switch. 1 or 0 1 or 0 two three four 4 * 4 is 16 Use a library function to generate 10 random integers. 130 10982 1090 11656 7117 17595 6415 22948 31126 9004 Done! Приведенная в листинге 9.6 программа демонстрирует применение вложенных циклов. Листинг 9.6. Демонстрационная программа 2 // Пример вложенного цикла. int main() { int i, j, k; for(i = 0; i < 5; i = i + 1) { for(j = 0; j < 3; j = j + 1) { for(k = 3; к ; к = к - 1) { cout « i «", "; cout « j « "; cout « к « "\n"; } } } cout « "done"; return 0; } Далее приведен фрагмент вывода программы из листинга 9.6. о, О, 3 0, 0, 2 0, 0, 1 0, 1, 3 О, 1, 2 О, 1, 1 О, 2, 3 О, 2. 2 О, 2, 1 В листинге 9.7 приведен пример программы, в которой выполняется операция присваивания. Листинг 9.7. Демонстрационная программа 3 // Присваивания, как операции. int main() { int а, Ь; а = b = 5; cout « a « " " « b « "\n" ; while(a=a-l) { cout « a « " "; do { cout « b « " "; } while((b=b-l) > -5); cout « "\n"; } return 0; } Далее приведен вывод программы из листинга 9.7. 5 5 4 5 4 3 2 10-1-2-3-4 3 -5 2 6 1 -7 В программе из листинга 9.8 демонстрируется применение рекурсивных функций. В ней функция facer о вычисляет факториал числа. —„------------------------.--------------------------.-----------------------------.------------------------п Листинг 9.8. Демонстрационная программа 4 j // Эта программа демонстрирует рекурсивную функцию. // Рекурсивная функция, возвращающая факториал i. int factr(int i) { if(i<2) { return 1,- } else { return i * factr(i-l); } int main () { cout « "Factorial of 4 is: "; cout « factr(4) « "\n"; cout « "Factorial of б is: "; cout « factr(6) « "\n"; return 0; } Вывод программы из листинга 9.8 приведен далее. Factorial of 4 is: 24 Factorial of б is: 720 Следующая программа, код которой приведен в листинге 9.9, демонстрирует обработку аргументов функции. Листинг 9.9. Демонстрационная программа 5 J // Более полноценный пример обработки аргументов функции. int fl(int a, int b) { int count; cout « "Args for fl are "; cout « a « " " « b « "\n"; count = a; do { cout « count « " "; } while(count=count-l); cout « a « " " « b « " " « a*b « "\n"; return a*b; } int f2(int a, int x, int y) { cout « "Args for f2 are "; cout « a « " " « x « " " « у « "\n"; cout « x / a « " "; cout « y*x « "\n"; return 0; } int main() { f2(10, fl(10, 20), 99); return 0; } Далее приведен вывод программы из листинга 9.9. Args for fl are 10 20 10 9 8 7 б 5 4 3 2 1 10 20 200 Args for f2 are 10 200 99 20 19800 В программе из листинга 9.10 проверяются все виды операторов цикла. Листинг 9.10. Демонстрационная программа 6 // Проверка операторов цикла. int main() { int а; char ch; // Оператор while. cout « "Enter a number: "; cin » a; while(a) { cout « a*a « " "; —а; } 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 a 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 0123456789 Done! Обратите внимание на то, что встроенная библиотечная функция getchar О использует в этом прогоне буферизацию строки, благодаря которой символы, посылаемые функцией putcharo, не выводятся на экран до тех пор, пока не нажата клавиша <Enter>. Такое поведение — результат работы реальной функции getchar (), вызываемой интерпретатором Mini С++. Как вы знаете, большинство компиляторов реализуют функцию getchar о с буферизацией строки. Вывод — встроенная функция Mini С++ ведет себя так же, как и лежащая в ее основе библиотечная функция. Программа, приведенная в листинге 9.11, демонстрирует обработку вложенных областей видимости. В ней переменная х объявляется три раза: сначала как глобальная переменная, потом как локальная переменная в блоке оператора if и, наконец, снова в блоке цикла while. Все три объявления независимы и отличаются друг от друга.
|
|
|
|
|