Руководство полного чайника по программированию на языке Си


То же самое, но теперь нужно еще и печатать номер строки


/* То же самое, но теперь нужно еще и печатать номер строки. */

#include

/* Вообще-то глобальные переменные принято объявлять в самом начале файла с программой. */

int LINES = 25; /* всего строк. */

/* Добавим к функции еще один аргумент, указатель - печатать ли номер строки. Назовем его drawLineNumber. Не впадите в заблуждение по аналогии с именем ФУНКЦИИ drawOneLine() ! В данном случае - это имя ПЕРЕМЕННОЙ - АРГУМЕНТА ФУНКЦИИ.

Оператор if(x) .....; РАБОТАЕТ ТАКИМ ОБРАЗОМ (так он устроен): в качестве условия он принимает целое число (типа int). Условие истинно, если x != 0, и ложно, если x == 0.

Второй добавленный аргумент - собственно номер строки. */ void drawOneLine(int nspaces, int nsymbols, char symbol, /* а это мы добавили */ int drawLineNumber, int linenum ){ int i; /* счетчик */

if(drawLineNumber) printf("%d\t", linenum); /* без перевода строки */

/* На самом деле это условие более полно надо записывать как

if(drawLineNumber != 0)

но в языке Си это то же самое. */

/* Тут мы снова видим новый специальный символ \t - ТАБУЛЯЦИЯ. Весь экран (или лист бумаги) условно поделен на колонки шириной по 8 позиций. Примерно так: | | | | | | | | | ... Символ табуляции вызывает переход из текущей позиции в начало следующей колонки. Например | | | | | | | | | ... ^ отсюда

| | | | | | | | | ... ^ в это место

*/ for(i=0; i < nspaces; i++) putchar(' '); for(i=0; i < nsymbols; i++) putchar(symbol); putchar('\n'); }

void main(){ /* ОБЪЯВЛЕНИЕ ПЕРЕМЕННЫХ */ int nline; /* номер строки */

/* ВЫПОЛНЯЕМЫЕ ОПЕРАТОРЫ (ДЕЙСТВИЯ) */ for(nline=0; nline < LINES; nline++){

if((nline % 2) == 0) /* четное ? */ drawOneLine(LINES - nline - 1, nline*2 + 1, '+', 1, nline); else drawOneLine(LINES - nline - 1, nline*2 + 1, '*', 9, nline); }

/* А почему именно 1 или именно 9 ? * А все что попало, лишь бы не 0. * Можно 3, 333, 666, -13445, итп * * Вопрос: что будет, если тут написать 0 ? */ }




- Начало -  - Назад -  - Вперед -