вопросы. общие вопросы. Программа ипрограммирование
Скачать 1.45 Mb.
|
Комментарии в языке СиВ языке Си для комментариев используются символы /* — начало комментария; */ — конец комментария. Вся последовательность, заключенная между этими символами, является комментарием. Это удобно для написания многострочных комментариев: Int a; /* целая переменная */ Многострочные комментарии также удобно использовать при отладке для сокрытия от выполнения части кода. В дополнение к этому, для написания коротких комментариев могут использоваться символы //. При этом комментарием является все, что расположено после символов // и до конца строки: float b; // вещественная переменная Главная функцияПри выполнении консольного приложения, написанного на языке Си, операционная система компьютера передаёт управление функции с именем main(). Функцию main() нельзя вызывать из других функций программы, она является управляющей. Следующие за именем функции круглые скобки предназначены для указания параметров (аргументов), которые передаются в функцию при обращении к ней. В данном случае операционная система не передаёт в функцию main() никаких аргументов, поэтому список аргументов в круглых скобках пустой. Главную функцию можно записать по-разному: int main() void main(). Перед именем функции указывается тип возвращаемого значения. При обращении к главной функции значение возвращается операционной системе. Последняя запись не будет возвращать значения. Однако void main() — не совсем корректная запись, так как сообщает компилятору, что функция main() не возвращает никакого значения. При этом запись int main() сообщает компилятору о возвращении целочисленного значения, которое необходимо операционной системе и сообщает ей о том, что программа завершилась корректно. Если же это значение не возвращено, то операционная система понимает, что программа завершилась в аварийном режиме. Для возврата целочисленного значения перед завершением функции добавляется строка return 0; // вещественная переменная В фигурные скобки заключены описания и операторы. В общем случае программа может содержать несколько функций. Каждая функция имеет список передаваемых в нее параметров, указанный в круглых скобках, и набор операций, заключенных в блок, ограниченный фигурными скобками. Пример: Вывод на экран сообщения "Hello, world!". 1 2 3 4 5 6 7 #include int main() // Главная функция { printf("Hello, world!"); // Вывод сообщения getchar(); // Задержка окна консоли return 0; } Результат работы программы: Теперь попробуем написать текст на русском языке. 1 2 3 4 5 6 7 #include int main() { printf("Здравствуй, мир!"); getchar(); return 0; } 1 2 3 4 5 6 7 8 9 10 #include #include int main() { system("chcp 1251"); // Текущая кодовая страница 1251 system("cls"); // Очистка консоли printf("Здравствуй, мир!"); // Вывод сообщения getchar(); return 0; } Результат работы программы: Проблема русского языка в консольных приложениях заключается в том, что консоль и редактор кода Microsoft Visual Studio поддерживают разные кодовые страницы. Для того, чтобы увидеть русские символы в консоли необходимо поменять кодовую страницу в консоли, чтобы она соответствовала кодовой странице редактора (1251). С этой целью вызывается функция system("chcp 1251") с соответствующей командной строкой. Прототип функции system() содержится в библиотеке При этом текст программы будет выглядеть следующим образом: Результат работы программы: 44 Структуры данных и управления языка программирования Си Наряду с простыми одинарными переменными одного из базовых типов язык Си позволяет объявлять массивы. Под массивом понимается набор (упорядоченное множество) элементов одного типа. При этом возможен доступ к элементам массива путем указания индекса (то есть номера элемента в массиве). При этом, в отличие от многих языков программирования, в языке Си принято соглашение о том, что элементы массива нумеруются, начиная с нуля, то есть первый элемент — элемент с номером 0. Смысл подобной нумерации, несколько странной для читателя, не являющегося специалистом в программировании, заключается в том, что индекс можно рассматривать как величину смещения от начальной ячейки памяти, от которой в памяти помещается массив. При этом Си оказал огромное влияние на другие языки — даже современные языки Паскаль-семейства. Объявляются массивы там же, где и обычные переменные, то есть в начале функции, но в квадратных скобках после имени указывается размерность (количество элементов), например: int a,b,c; float x[20]; char c,str[40]; Здесь описаны массив вещественных чисел из 20 элементов, а также массив символов (строка) размерностью 40. Обратите внимание на то, что в языке Си строки представляют собой массивы символов, при этом на конец строки указывает символ с кодом (значением), равным нулю. При работе с массивами часто используют цикл по его элементам, при этом значение переменной, используемой в качестве индекса, либо увеличивается, либо уменьшается на единицу. Поскольку нумерация элементов начинается с нуля, переменная-индекс имеет значение от 0 до N – 1, где N — количество элементов массива. Связано это с тем, что фактически индекс элемента в массиве на Си представляет собой смещение относительно значения указателя в памяти на первый элемент массива. Массивы могут фигурировать в качестве формальных и фактических параметров функций. Пример: /* обработка массива в Си */ #include int Pecat_kornei(float args[],int kol) { int i; float res; for (i=0;i { if (args[i]>0) { res=sqrt(args[i]); printf("Корень из %d — го элемента равен %f\n",i,res); } else printf("Элемент массива номер %d меньше нуля !",i); } } Используется стандартная библиотека математических функций, описанных в заголовочном файле math.h. Функция sqrt() возвращает значение квадратного корня числа. В приведенной программе используется цикл for языка программирования Си, который является весьма гибким инструментом. После ключевого слова for в круглых скобках, разделенные точками с запятой, идут три выражения. Первое — группа операторов языка, разделяемых запятыми, которые должны выполниться до первого выполнения цикла. Второе — логическое условие, проверяемое перед каждым выполнением цикла и определяющее, продолжать выполнение или нет. Наконец, третье выражение — действия (через запятую), которые выполняются по окончании каждой итерации. Само тело цикла, то есть действия, выполняемые циклически, заключается в фигурные скобки, если это — не один оператор, в противном случае это просто следующий за круглыми скобками оператор. Выглядит все следующим образом:
Здесь <идn> — инициализирующее действие с номером n, <итn> — действия-итераторы. Цикл выполняется следующим образом. Сначала производятся действия, приписываемые <идn>. Затем проверяется условие, и если оно истинно, выполняется тело цикла.
|