Ваша первая программа на Pascal |
У попа была собака
Для тех, кто не знает, привожу полный текст стихотворения: У попа была собака Он ее любил Она съела кусок мяса Он ее убил и на камне написал: А дальше по кругу то же самое. Конечно его можно было бы проще напечатать с помощью цикла но это не интересно. Рекурсия больше отвечает духу стихотворения. Конечный цикл рано или поздно закончится, т.е. не не выполнит задание до конца, а бесконечный подразумевает бессмысленность труда автора (попа), поскольку какой смысл трудиться, точно зная, что стихотворение никогда не будет написано до конца? С рекурсией дело хитрее. Вызывая в который раз саму себя, функция считает, что скоро будет конец, что в ближайшем вызове дело закончится полным успехом. А чтобы во время печати не пришлось ждать слишком долго, пусть программа продолжается до тех пор, пока не будет нажата какая-нибудь клавиша. program pop; uses crt; procedure absaz(c:word);{ Процедура, печатающая один абзац } { В качестве параметра цвет абзаца } begin textcolor(c); writeln(' У попа была собака'); writeln(' Он ее любил'); writeln(' Она съела кусок мяса'); writeln(' Он ее убил'); writeln(' И на камне написал:'); delay(500);{ Задержка перед выводом следующего абзаца } if not keypressed then absaz((c+1)mod 15+1); { Продолжать, пока не нажата клавиша } end; begin clrscr; absaz(1); readkey; end. |