Программирование на языке Си/§2

Материал из Викиверситета

В этой лекции мы разберём несколько программ на языке Си и подробно разберём их.

Первая программа[править]

Это программа даётся практически во всех учебниках программирования в самом начале, не будем же исключением:

 
#include <stdio.h>             /*1*/
int main()                     //2
{
    printf("Hello, World!\n"); //3
    return 0;                  //4
}

Разберём программу построчно:

  •  #include <stdio.h>
    
    -- директива препроцессора, при выполнении которой препроцессор включает в текст содержимое заголовочного файла stdio.h, где содержится сведения о библиотечных средствах ввода-вывода используемых в программе
  •  int main()
    
    -- int - тип возвращаемого значения функции (int - целый, void - ничего не возвращает и т.д.). Функция main которая запускается на исполнение по командам операционной системы, возвращение функцией значение также передаётся операционной системе. В скобках указывается набор параметров, в отличие от обычных функций главная функция main() может использоваться как с параметрами так и без них.
  • Вслед за заголовком функции идёт её тело. Тело функции - это блок, последовательность определений, описаний и исполняемых операторов, заключённая в фигурные скобки.
  • printf("Hello, World!\n"); -- это библиотечная функция вывода на экран текста, в данном случае "Hello, World!". Прототип функции хранится в директиве stdio.h, поэтому прежде чем её использовать всегда необходимо объявить директивы процессора (#include <stdio.h>). \n - переход на новую строчку. После каждого определения объектов и исполнения объектов ставится ";".
  • return 0; -- завершение исполнения программы и возвращение нулевого значения среде исполнения.

Вторая программа[править]

В этой программе мы с вами изучим функции вывода сообщений на экран

#include <stdio.h>
int main()
{
   /*объявим переменные*/
   int k,r,s; // мы объявили три целочисленные переменные
   /*присвоим им значения*/
   k=5; r=4; s=12;
   /*выведем их на экран*/
   printf(" k=%d \n r=%d \n s=%d \n", k, r, s);
   return 0;
}

Как мы видим программа несколько отличается от предыдущей, давайте по порядку рассмотрим эти изменения:

  • int k,r,s; -- когда мы работаем с идентификаторами которых нет в самой программе нам необходимо их объявлять. Синтаксис объявления довольно прост: Тип идентификатор;. В конкретном случае мы объявили идентификаторы k,r,s целочисленного типа int.
  • k=5; r=4; s=12; -- после объявления идентификаторов нам необходимо задать им некоторое начальное значение, иначе оно будет присвоено произвольно. Синтаксис присвоения следующий: Идентификатор=значение;. Это необходимо запомнить, присвоение всегда происходит справа налево.
  • printf(" k=%d /n r=%d /n s=%d /n", k, r, s); -- мы производим вывод на экран значений идентификаторов функцией printf. Синтаксис: printf(" текст=%спецификатор",идентификатор);.

Спецификаторы:

  • d - десятичный, целочисленный со знаком(int);
  • i - десятичный, целочисленный со знаком;
  • u - целочисленный, десятичный без знака(unsigned);
  • o - целочисленный, восьмеричный без знака;
  • x - целочисленный, шестнадцатеричный без знака;
  • f - вещественный с фиксированной точкой (float, double);
  • e - вещественный с плавающей точкой (float, double);
  • c - отдельный символ (char);
  • s - символьная строка (char).

Третья программа[править]

Третья программа поможет разобраться с параметрами сообщений выводимых на экран

#include <stdio.h>
int main()
{
   /*объявим переменные и сразу же присвоим им значения*/
   int k=51; // целочисленная
   float z=12.123, l=14.1234; // вещественная
   
   /*выведем их на экран*/
   printf(" k=%d \t z=%e \t l=%f \n\n",k,z,l);
   printf(" k=%4d \t z=%2.4e \t z=%5.2e \t l=%10.3e",k,z,z,l);
   return 0;
}

рассмотрим различия между программами:

  • printf(" k=%4d \t z=%2.4e \t z=%5,2e \t l=%10,3e",k,z,z,l); -- синтаксис остался тот же, изменился лишь формат выдаваемого значения. к спецификатору мы добавили ширину поля и точность. Синтаксис: текст=% ширина_поля.точность спецификатор. \t - напомню табуляция по горизонтали.

Практикум[править]

Напишите на компиляторе языка Си все выше приведённые примеры. Обратите внимание как меняется расположение выводимых сообщений в зависимости от изменения ширины поля и точности выводимых значений. Поэкспериментируйте с типами переменных (int,float,double и т.д.) и значениями присваиваемых идентификаторам. Проанализируете выдаваемые ошибки и результаты.

Домашнее задание[править]

  1. Напишите программу на языке Си выдающую число Пи до 4 знака после запятой. Идентификатору присвойте значение в 12 знаков после запятой (3,141592653589).
  2. Напишите на странице Обсуждение:Программирование на языке Си/§2 какие инструменты Вы используете для программирования на Си?

Смотри также[править]



Курс "Программирование на языке Си"
Предыдущий урок: Программирование на языке Си/§1Следующий урок: Программирование на языке Си/§3