Программирование на Cи





Содержание:


Язык программирования Си, является языком высокого уровня, то есть вся последовательность инструкций программы пишется зарезервированными словесными и символьными выражениями составляющими алгоритм программы. Несмотря на это, язык Си позволяет осуществлять прямой доступ ко всем ресурсам компьютера - микропроцессору, памяти, портам ввода-вывода и тому подобное. Поэтому язык Си (не смотря на свой почтенный возраст) часто используется для написания программ драйверов устройств компьютера, программирования микроконтроллеров и решения тому подобных задач. Язык Си, является прародителем таких современных языков как Java, C++, C#.

Интегрированная среда разработки программ на языке Си
Для обучения программированию на Си достаточно установить на компьютер интегрированную среду разработки Turbo C версии 2 или 3. Turbo C (фирмы Borland) содержит в себе текстовый редактор для написания кода программы, отладчик и компилятор программы в коды микропроцессора.



Текст программы вводится в поле Edit. Для отладки программы следует нажимать клавишу F9, а для просмотра и тестирования готовой программы сочетание клавиш Ctrl + F9. Запущенная программа открывается в том же окне, что и редактор Edit. По окончании работы запущенной программы она закрывается, и система переходит в режим Edit. Для просмотра результатов работы программы следует нажимать сочетание клавиш Alt + F5, а для возврата к редактированию текста программы клавишу Esc.



Структура программы на языке Си
Всякая программа на Си начинается с директив препроцессора. Директива #include включает в текст программы содержимое указанного файла. Обычно подключаемый файл содержит прототипы библиотечных функций необходимых для работы программы на Си. Так, например файл stdio.h содержит функции ввода-вывода, а файл math.h наиболее распространённые математические функции. Директива #include записывается следующим образом: #include <имя файла>. Например, #include <stdio.h>. Несколько директив include записываются в столбик с новой строки.
Так же, программисты на Си часто используют директивы #define и #undef. Директива #define служит для замены часто использующихся констант, ключевых слов, операторов или выражений некоторыми идентификаторами. Директива #undef отменяет действие директивы #define. Про директивы #define и #undef будет подробно рассказано в соответствующем разделе.
Далее, программа на Си должна содержать обязательную функцию main, с которой, собственно, и начинается выполнение программы. Сама программа может содержать любое количество функций и выражений внутри функции main. Если функция не возвращает никакого значения, то перед функцией пишется слово void. Всякая функция должна иметь параметры (значения для обработки), например функция sin(x) имеет параметр (аргумент) x - значение угла. Наша функция main не имеет аргументов, поэтому функция записывается с пустыми скобками - main(). Описание функции (тело) заключается в фигурные скобки {}. Скобка { - означает начало описания, а скобка } - конец.
Следует отметить, что язык Си очень чувствителен к регистру вводимых слов и символов. Так слова main и Main имеют совершенно разные значения.


Первая программа на Си
Напишем простую программу на Си и проверим её в действии. В текстовом редакторе среды программирования следует ввести такие строки:
#include <stdio.h>
void main()
{
   clrscr();
   printf("Hello, Word");
}
Эта программа выводит на экран монитора надпись: Hello, Word. Функция clrscr() очищает экран, а функция printf выводит аргумент "Hello Word" на экран.
Следует обратить внимание, что запись выражения printf("Hello, Word") заканчивается точкой с запятой. В языке Си, любое законченное выражение должно заканчиваться точкой с запятой.
Запустим нашу программу на исполнение, нажав комбинацию клавиш Ctrl + F9. Скорее всего (если программа написана правильно) мы ничего не увидим, так как программа выполняется очень быстро и система переходит в режим редактирования. Для просмотра результатов запущенной программы следует нажать комбинацию клавиш Alt + F5.



Для возврата в редактор следует нажать клавишу Esc.
Может так случиться, что в тексте программы допущена ошибка, тогда компилятор выдаст сообщение об ошибке, которую нужно устранить.
Например:



Компилятор сообщает, что в функции main в одном из выражений пропущена точка с запятой, а именно в выражении printf("Hello Word").


Типы данных и их объявление
Для обработки различной информации (как числовой, так и символьной) в языке Си существуют предопределённые типы данных.
Целые типы данных
Наименование (тип) Диапазон значений Занимает памяти (бит)
int (целый) -32768 ... 32767 16
long (длинный целый) -2147483648 ... 2147483647 32
char (символьный) -128 ... 127 8
unsigned - беззнаковый тип. Запись unsigned перед типом переменной будет означать, что эта переменная будет принимать только положительные значения, причём переменная может принимать большие положительные значения, чем переменная знакового типа. Например, unsigned int может принимать значения от 0 до 65535.
Вещественные типы данных
Наименование (тип) Диапазон значений Занимает памяти (бит)
float (вещественный) От +3.4е-38 до +3.4е+38 32
double (двойная точность) От +1.7е-308 до +1.7е+308 64
По умолчанию все объявленные данные являются величинами переменными. Если нужно объявить константу (неизменяемую величину), то перед типом следует написать слово const. В языке Си принято объявлять все переменные до начала программы. Объявление производится следующим образом: тип переменной имя переменной. Например:
int x;
double argx;
const float pi = 3.14;
Если в программе используется несколько переменных одного типа, то допустимо эти переменные перечислить через запятую. Например: int x,y,z;
Имена переменных программист придумывает сам. Это могут выть буквы или слова. Допустимо в именах переменных добавлять цифры, но цифры должны записываться только после букв. Например: int counter2; double x1;. Важно, чтобы имена переменных записывались английским шрифтом.
Напишем следующую программу, что бы разобраться с объявлением переменных:
#include<stdio.h>
void main()
{
    int q,x,z;
    const float pi = 3.14;
    clrscr();
    z = 10;
    q = 5;
    x = z + q;
    printf("X= %d\nPI= %f", x,pi);
}
В этой программе мы объявили три переменных q, x, z типа int. Так же объявили константу const float pi = 3.14 и присвоили ей значение 3.14.
Далее в программе мы присвоили переменным определённые значения z = 10, q = 5. Затем переменной x присвоили значение суммы переменных z и q, и наконец, вывели значение суммы и значение константы pi на экран при помощи функции printf.


Аргументом функции printf является весьма мудрёная запись, связанная с форматированием выводимого текста на экран, поэтому остановимся на ней поподробней.



Функция вывода printf и форматирование вывода
Функция printf обладает уникальными свойствами, так как может выводить на экран не только надписи, но и числовые значения, причём, вывод может осуществляться в заданном формате.
Аргумент функции заключённый в двойные кавычки выводится непосредственно на экран, но может содержать специальные символы форматирования которые на экране не отображаются, а служат командами форматирования. Часть текста не заключённая в двойные кавычки является перечислением переменных и констант (записанных через запятую), значения которых нужно вывести на экран. Рассмотрим последовательно, что означают записи printf("X= %d\nPI= %f", x,pi). Запись в кавычках Х= выводится непосредственно на экран, далее запись %d означает, что значение переменной х должно отображаться на экране как целое число. Для числовых значений принято несколько записей которые следует использовать при выводе значений на экран:
Запись Типы выводимых значений
%d десятичное целое число
%f вещественное десятичное число с плавающей точкой
%u беззнаковое целое число
%e вещественное число в экспоненциальной форме
%o восьмеричное целое число
%x шестнадцатеричное целое число
%c символ
%s строка символов
%p указатель (адрес)
Далее, запись \n означает, что продолжение строки следует перенести на следующую строку. В качестве символов форматирования текста зарезервировано несколько значений:
\n - для перехода на новую строку;
\a - для кратковременной подачи звукового сигнала;
\b - для перевода курсора влево на одну позицию;
\r - для перевода курсора в начало текущей строки;
\t - для горизонтальной табуляции;
\v - для вертикальной табуляции.
PI= выводится непосредственно на экран, %f указывает, что на экране следует отобразить значение константы pi в формате вещественного десятичного числа с плавающей точкой. И наконец, после закрывающих кавычек, через запятую перечислены переменная х и константа pi которые должны выводиться на экран. Попробуем заменить %f на %e и убедимся, что теперь константа pi отображается в экспоненциальном виде:







   ©Гуков Константин Михайлович 2006 - 2013     Почта: [email protected]