Главная arrow Программирование С++ arrow Демонстрация интерпретатора 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. Все три объявления независимы и отличаются друг от друга.