Загрузить PDF Загрузить PDF

Язык C — один из старых языков программирования. Он был разработан в 70-х годах прошлого века, но все еще остается достаточно мощным средством благодаря тому, что относится к низкоуровневым средствам программирования, использующим осмысленные сокращения слов для обозначения различных команд. Изучение языка C также является отличной базой для перехода к изучению более сложных языков, а полученные здесь знания будут полезными практически во всех языках программирования и помогут вам втянуться в самостоятельную разработку приложений. Чтобы приступить к изучению этого языка, ознакомьтесь с информацией данной статьи.

Часть 1
Часть 1 из 6:

Подготовка

Загрузить PDF
  1. Язык С необходимо компилировать с помощью программы, которая будет интерпретировать код языка в машинные сигналы. Компиляторы обычно бывают бесплатными и доступны для различных операционных систем.
    • Для Windows попробуйте использовать Microsoft Visual Studio Express или MinGW.
    • Для Mac одним из лучших компиляторов считается XCode.
    • Для Linux наиболее популярен GCC .
  2. Язык C — один из старых и достаточно мощных языков программирования. Он был предназначен для операционной системы Unix, но был расширен и перенесен практически на все операционные системы. Современным воплощением языка С является язык C++ .
    • Язык C, в основном, состоит из функций, а в этих функциях можно использовать переменные, условия и циклы, чтобы сохранять информацию и управлять данными.
  3. Посмотрите на код простейшей программы ниже, чтобы ознакомиться с тем, как некоторые составляющие языка взаимодействуют друг с другом, и понять принцип действия самой программы.
     #include 
     <stdio.h> 
      
     int 
     main 
     () 
     { 
     printf 
     ( 
     "Здравствуй, Мир! 
     \n 
     " 
     ); 
     getchar 
     (); 
     return 
     0 
     ; 
     } 
    
    [1]
    • Команда #include выполняется еще до запуска программы и запускает библиотеки, которые содержат необходимые вам функции. В указанном выше примере stdio.h позволяет использовать в программе функции printf() и getchar() .
    • Команда int main() сообщает компилятору о запуске основной функции "main", которая по окончании вернет определенное целое число. Все программы на C используют функцию "main".
    • Фигурные скобки { } говорят о том, что все их содержимое является частью функции. В данном случае, они означают, что содержимое скобок является частью функции "main".
    • Функция printf() отображает на экране пользователя содержимое круглых скобок. Наличие кавычек гарантирует, что содержимое скобок будет считаться текстом. Управляющая последовательность \n говорит компьютеру перенести курсор в следующую строку.
    • Точка с запятой ; обозначает конец строки. Большинство строк кода на C следует заканчивать этим знаком.
    • Команда getchar() говорит компьютеру ожидать нажатия кнопки, прежде чем делать что-либо дальше. Это очень полезно, так как многие операционные системы выполняют программу и потом немедленно закрывают окно. В данном же случае программа не завершается до тех пор, пока не будет нажата кнопка.
    • Команда return 0 указывает на завершение программы. Обратите внимание, что функция "main" относится к функциям int . Это означает, что она должна вернуть определенное значение по завершении программы. Ноль "0" указывает на правильно выполненную программу, а любое другое число говорит об ошибке.
  4. Наберите свой код в редакторе кода и сохраните его файлом формата "*.c". Скомпилируйте его в компиляторе. Для этого обычно требуется нажать кнопку "Build" или "Run".
  5. Комментарии — это часть кода, которая не подвергается компиляции, но позволяет объяснить, что именно происходит в программе. Они полезны для напоминания самому себе о предназначении кода и объяснения принципа его работы другим разработчикам, которые, возможно, будут изучать этот код.
    • Чтобы написать комментарий в C, поставьте косую черту со звездочкой /* в начале пояснительного текста и звездочку с косой чертой */ в его конце.
    • Комментируйте все базовые составляющие вашего кода.
    • Комментарии можно использовать для быстрого исключения из работы отдельных частей кода без их удаления. Просто заключите в комментарий тот код, который хотите отключить, и скомпилируйте программу. Если вы захотите вернуть код, всего лишь удалите теги комментариев.
    Реклама
Часть 2
Часть 2 из 6:

Использование переменных

Загрузить PDF
  1. Переменные позволяют собирать и хранить данные, полученные в результате вычислений в самой программе или посредством пользовательского ввода. Прежде чем переменные можно будет использовать, их следует обозначить. Это можно сделать различными способами.
    • Среди наиболее часто используемых переменных следует назвать переменные int , char и float . Каждая из них хранит различные типы данных.
  2. Переменные следует обозначить, или "объявить", прежде чем их можно будет использовать в программе. Объявить переменную можно указанием используемого типа данных и названия переменной. Например, правомерны все указанные ниже примеры:
     float 
     x 
     ; 
     char 
     name 
     ; 
     int 
     a 
     , 
     b 
     , 
     c 
     , 
     d 
     ; 
    
    • Заметьте, что у вас есть возможность объявлять сразу несколько переменных в одной строке, если все они относятся к одному типу. В таком случае названия переменных просто отделяются запятыми.
    • Как и большинство строк в C, каждую строку с объявлением переменной следует заканчивать точкой с запятой.
  3. Переменные для удобства рекомендуется объявлять в начале каждого блока кода (той части, которая заключена в фигурные скобки {}). Если вы попробуете объявить переменную позже ее первого использования в коде, то программа не будет работать правильно.
  4. Используйте переменные для хранения введенных пользователем данных. Теперь, когда вы уже знакомы с принципами работы переменных, можно попробовать написать простую программу, которая будет хранить введенные пользователем данные. Для нее потребуется еще одна функция scanf . Данная функция осуществляет поиск введенных данных для присвоения конкретных значений переменным.
     #include 
     <stdio.h> 
      
     int 
     main 
     () 
     { 
     int 
     x 
     ; 
     printf 
     ( 
     "Введите число: " 
     ); 
     scanf 
     ( 
     "%d" 
     , 
     & 
     x 
     ); 
     printf 
     ( 
     "Вы ввели %d" 
     , 
     x 
     ); 
     getchar 
     (); 
     return 
     0 
     ; 
     } 
    
    • Спецификатор формата "%d" говорит функции scanf считать целое десятеричное число, введенное пользователем.
    • Префикс & перед названием переменной x сообщает функции scanf , где можно будет найти значение переменной, чтобы ее изменить, и хранит введенное целое значение.
    • Заключительная команда printf считывает значение введенной переменной и отображает его пользователю.
  5. Для управления введенными вами переменными можно использовать математические выражения. При этом для математических выражений важнее всего запомнить отличительную особенность, что единичный знак равно = присваивает значение переменной, а двойной знак равно == сравнивает значения по обеим сторонам от этого знака, для проверки на соответствие друг другу.
     x 
     = 
     3 
     * 
     4 
     ; 
     /* присваивает "x" значение 3 * 4,  или 12 */ 
     x 
     = 
     x 
     + 
     3 
     ; 
     /* добавляет 3 к исходному значению "x" и присваивает ей новое значение */ 
     x 
     == 
     15 
     ; 
     /* проверяет, равняется ли переменная "x" пятнадцати*/ 
     x 
     < 
     10 
     ; 
     /* проверяет, является ли значение "x" меньшим, чем десять */ 
    
    Реклама
Часть 3
Часть 3 из 6:

Создание условий

Загрузить PDF
  1. На условных операторах построено большинство программ. Они представляют собой выражения, которые проверяются на истину (TRUE) или ложь (FALSE) и в зависимости от результата определяют дальнейшие действия. Самый простой оператор условия — это оператор IF .
    • Параметры TRUE и FALSE в языке C работают иначе, чем в других языках программирования, к которым вы, возможно, привыкли. Истинный результат TRUE всегда возвращает число, отличное от нуля. Если вы производите сравнение и результат оказывается истинным (TRUE), то программа возвращает значение "1". Если результат ложный (FALSE), то возвращается значение "0". Знание этой особенности поможет вам понять принцип обработки выражений с оператором IF.
  2. Условные выражения строятся на применении математических операторов, которые сравнивают значения. Ниже приведен список наиболее часто используемых операторов условия.
     > 
     /* больше чем */ 
     < 
     /* меньше чем */ 
     >= 
     /* больше или равно */ 
     <= 
     /* меньше или равно */ 
     == 
     /* равно */ 
     != 
     /* не равно */ 
    


     10 
     > 
     5 
     TRUE 
     6 
     < 
     15 
     TRUE 
     8 
     >= 
     8 
     TRUE 
     4 
     <= 
     8 
     TRUE 
     3 
     == 
     3 
     TRUE 
     4 
     != 
     5 
     TRUE 
    
  3. Оператор условия IF можно использовать для того, чтобы определять, что программа должна делать после оценки выполнения или невыполнения условия. Этот оператор можно сочетать с другими условными выражениями для создания мощной многовариантной последовательности действий, но на данном этапе попробуйте записать легкий пример, чтобы сначала просто познакомиться с использованием условий.
     #include 
     <stdio.h> 
      
     int 
     main 
     () 
     { 
     if 
     ( 
     3 
     < 
     5 
     ) 
     printf 
     ( 
     "3 is less than 5" 
     ); 
     getchar 
     (); 
     } 
    
  4. Используйте выражение ELSE/ELSE IF для того, чтобы расширить задаваемые условия. Можно расширить выражение с оператором IF, применив выражения ELSE и ELSE IF, которые будут обрабатывать разные результаты. ELSE вступает в действие тогда, когда проверка выражения оператором IF возвращает ложь (FALSE). ELSE IF позволяет включить в одну строку проверку на выполнение различных условий IF для определенных ситуаций. Рассмотрите указанный ниже код программы, чтобы понять, как взаимодействуют все эти параметры.
     #include 
     <stdio.h> 
      
     int 
     main 
     () 
     { 
     int 
     age 
     ; 
     printf 
     ( 
     "Пожалуйста, введите свой текущий возраст: " 
     ); 
     scanf 
     ( 
     "%d" 
     , 
     & 
     age 
     ); 
     if 
     ( 
     age 
     <= 
     12 
     ) 
     { 
     printf 
     ( 
     "Ты все еще ребенок! 
     \n 
     " 
     ); 
     } 
     else 
     if 
     ( 
     age 
     < 
     20 
     ) 
     { 
     printf 
     ( 
     "Хорошо быть подростком! 
     \n 
     " 
     ); 
     } 
     else 
     if 
     ( 
     age 
     < 
     40 
     ) 
     { 
     printf 
     ( 
     "Вы все еще молоды сердцем! 
     \n 
     " 
     ); 
     } 
     else 
     { 
     printf 
     ( 
     "С годами приходит мудрость. 
     \n 
     " 
     ); 
     } 
     return 
     0 
     ; 
     } 
    
    [2]
    • Программа считывает ввод пользователя и проводит его через ряд последовательных условных проверок. Если введенное число соответствует первому условию, то на экран выводится первое выражение printf . Если первое условие не выполняется, то проверка переходит к каждому очередному условию ELSE IF, пока не будет выявлен истинный результат. Если же ни одно из таких условий не выполняется, то информация обрабатывается последним выражением ELSE в конце программы.
    Реклама
Часть 4
Часть 4 из 6:

Изучение работы с циклами

Загрузить PDF
  1. Циклы — один из самых важных аспектов программирования, так как они позволяют повторно запускать отдельные блоки кода до тех пор, пока не будет выполнено определенное условие. Это позволяет упростить программную запись повторяющихся действий и избавляет вас от необходимости каждый раз писать новые условия, когда вы хотите, чтобы программа что-то сделала.
    • Существует три основных типа циклов: FOR, WHILE и DO...WHILE.
  2. Это самый популярный и полезный из циклов. Он продолжает выполнять заданную функцию, пока установленные в FOR условия не будут выполнены. Циклы FOR требуют указания трех условий: инициализируемой переменной, условия, которое должно быть выполнено, и способа обновления значения переменной. Если вам не нужны все три этих условия, вам необходимо оставить пробел с точкой с запятой на их месте, в таком случае цикл будет вечным. [3]
     #include 
     <stdio.h> 
      
     int 
     main 
     () 
     { 
     int 
     y 
     ; 
     for 
     ( 
     y 
     = 
     0 
     ; 
     y 
     < 
     15 
     ; 
     y 
     ++ 
     ){ 
     printf 
     ( 
     "%d 
     \n 
     " 
     , 
     y 
     ); 
     } 
     getchar 
     (); 
     } 
    
    • В вышеуказанной программе начальное значение переменной y равно нулю, а цикл продолжается до тех пор, пока значение переменной остается меньшим, чем 15. Каждый раз, когда на экран выводится новое значение y , оно увеличивается на единицу и цикл повторяется. Как только переменная y окажется равной 15, цикл завершится.
  3. Циклы WHILE проще, чем циклы FOR. В них задается только одно условие и цикл работает до тех пор, пока это условие выполняется. Здесь у вас нет необходимости инициализировать или обновлять переменную, но это можно сделать в основной части кода самого цикла.
     #include 
     <stdio.h> 
      
     int 
     main 
     () 
     { 
     int 
     y 
     ; 
     while 
     ( 
     y 
     <= 
     15 
     ){ 
     printf 
     ( 
     "%d 
     \n 
     " 
     , 
     y 
     ); 
     y 
     ++ 
     ; 
     } 
     getchar 
     (); 
     } 
    
    • Команда y++ добавляет единицу к значению переменной y при каждом выполнении цикла. Как только переменная y становится равной 16 (обратите внимание, что цикл должен выполняться до тех пор, пока переменная меньше или равна 15), цикл прекращается.
  4. . Данный цикл очень полезен в тех случаях, когда операции цикла необходимо провести, по крайней мере, один раз. В циклах FOR и WHILE условие проверяется в самом начале, то есть при получении ложного результата задаваемая условием операция пропускается и не осуществляется. Цикл DO...WHILE проверяет выполнение условий в самом конце, что позволяет выполнить действия цикла минимум один раз.
     #include 
     <stdio.h> 
      
     int 
     main 
     () 
     { 
     int 
     y 
     ; 
     y 
     = 
     5 
     ; 
     do 
     { 
     printf 
     ( 
     "Цикл работает! 
     \n 
     " 
     ); 
     } 
     while 
     ( 
     y 
     != 
     5 
     ); 
     getchar 
     (); 
     } 
    
    • Данный цикл отобразит предусмотренное сообщение, несмотря на то, что проверка условия окажется ложной. Переменная y задана равной пяти, а цикл должен повторяться в том случае, когда переменная не равна пяти, поэтому происходит выход из цикла. Сообщение отражается на экране один раз, так как условие проверяется только в самом конце.
    • Условие WHILE в цикле DO...WHILE следует заканчивать точкой с запятой. Это единственный цикл, который требует наличия в конце точки с запятой.
    Реклама
Часть 5
Часть 5 из 6:

Использование функций

Загрузить PDF
  1. Функции представляют собой автономные блоки кода, которые можно вызывать в различных участках программы. Они облегчают повторение кода и помогают упростить понимание принципов работы самой программы и дальнейшее ее изменение. Функции могут включать в себя все упомянутые выше приемы, и даже другие виды функций.
    • Строка main() в самом начале всех указанных примеров является функцией, как и строка getchar()
    • Функции важны для эффективной организации кода и облегчения его чтения. Правильно пользуйтесь функциями, чтобы рационально построить свою программу.
  2. Функции лучше всего объявлять в самом начале программы, чтобы обозначить их предназначение до того, как вы приступили к написанию программного кода. Базовый синтаксис для функций выглядит как "return_название функции (аргумент 1, аргумент 2 и так далее);". Например, чтобы задать функцию, которая складывает два числа, необходимо составить следующий код:
     int 
     add 
     ( 
     int 
     x 
     , 
     int 
     y 
     ); 
    
    • Так вы объявите функцию, которая суммирует два целых числа ( x и y ), а затем возвращает сумму в виде целого числа.
  3. Ранее объявленную функцию можно использовать для создания программы, использующей два вводимых пользователем числа и складывающей их между собой. Такая программа позволит продемонстрировать работу функции "add" и понять, как с ее помощью можно управлять введенными данными.
     #include 
     <stdio.h> 
      
     int 
     add 
     ( 
     int 
     x 
     , 
     int 
     y 
     ); 
     int 
     main 
     () 
     { 
     int 
     x 
     ; 
     int 
     y 
     ; 
     printf 
     ( 
     "Введите два числа, которые следует сложить: " 
     ); 
     scanf 
     ( 
     "%d" 
     , 
     & 
     x 
     ); 
     scanf 
     ( 
     "%d" 
     , 
     & 
     y 
     ); 
     printf 
     ( 
     "Сумма введенных чисел составляет %d 
     \n 
     " 
     , 
     add 
     ( 
     x 
     , 
     y 
     ) 
     ); 
     getchar 
     (); 
     } 
     int 
     add 
     ( 
     int 
     x 
     , 
     int 
     y 
     ) 
     { 
     return 
     x 
     + 
     y 
     ; 
     } 
    
    • Обратите внимание, что объявление функции все еще находится в верхней части программы. Он сообщает компилятору, чего ожидать при вызове функции и что именно она должна возвратить в виде результата. Это необходимо только в том случае, если вы хотите вызвать функцию ниже по тексту программы. Запрограммировать функцию add() можно до функции main() , и результат будет тем же без объявления.
    • Фактический функционал конкретной функции определяется в конце программы. Функция main() собирает числовые данные от пользователя, а затем направляет их в функцию add() для обработки. А функция add() передает готовый результат обратно функции main()
    • Когда функция add() уже объявлена, ее можно вызвать в любом месте программы.
    Реклама
Часть 6
Часть 6 из 6:

Дальнейшее изучение языка

Загрузить PDF
  1. Данная статья охватывает лишь основы языка, которые лежат на поверхности возможностей программирования на C и всей связанной с этим информации. Хорошая книга поможет вам решить возникающие проблемы и избавит вас от немалой головной боли в процессе дальнейшей работы с языком.
  2. Существует множество сообществ как в сети, так и в реальном мире, посвященных программированию на всех возможных языках. Поищите что-нибудь вроде "объединения программистов на C", чтобы обмениваться примерами кодов и идеями. Вскоре вы заметите, что многое почерпнули с помощью сообщества.
    • По возможности посещайте хакатоны. Это события, на которых команды программистов и индивидуальные разработчики за ограниченное количество времени должны создать программу и найти для нее определенное решение, проявив при этом немалую сообразительность. Так можно встретиться с большим количеством хороших программистов, а сами хакатоны проводятся регулярно по всему миру.
  3. Чтобы научиться программировать, необязательно поступать в учебное заведение, но посещение всего нескольких занятий соответствующего курса по программированию внесет большой вклад в ваши знания. Ничто не сравнится с помощью тех людей, которые обладают большим опытом практического применения языка. Обычно курсы предлагают различные общественные центры, профессиональные колледжи и университеты, позволяя изучить определенные компьютерные науки без необходимости поступления в учебное заведение для получения полноценного образования.
  4. Как только вы достаточно хорошо освоите язык программирования C, ничто не помешает вам присмотреться к C++. Это более современная версия языка C, обладающая более гибкими возможностями. C++ смоделирован с парадигмой объектно-ориентированного программирования, поэтому знание C++ позволит вам создавать мощные программы практически для любой операционной системы.
    Реклама

Советы

  • Обязательно комментируйте свой программный код. Комментарии помогут не только тем, кто потом будет пытаться разобраться в вашем коде, но и позволят вам самим запомнить, что, где и зачем вы писали. Вероятно, на текущий момент вы хорошо понимаете, что именно делаете, но спустя два или три месяца вы уже многое забудете.
  • Никогда не забывайте заканчивать точкой с запятой (;) строки printf(), scanf(), getch() и тому подобные, но никогда не ставьте этот знак после условия IF или циклов WHILE или FOR.
  • Столкнувшись с синтаксической ошибкой при компилировании, которая ставит вас в тупик, попробуйте найти разъяснения по ошибке с помощью поисковой системы Google (или любого другого поисковика). Есть вероятность, что до вас кто-то уже сталкивался с такой же ошибкой и опубликовал возможный вариант ее исправления.
  • Ваш исходный код должен иметь расширение *.c , чтобы компьютер понимал, что это исходный файл с программным кодом C.
  • Всегда помните о том, что в практике рождается совершенство. Чем больше вы занимаетесь программированием, тем лучше становятся ваши навыки. Поэтому начинайте с простых коротких программ, чтобы немного освоиться, а когда станете программировать уже достаточно уверенно, переходите к созданию более сложных программ.
  • Научитесь логическому структурированию, что поможет решать различные проблемы при создании кода.
Реклама

Об этой статье

Эту страницу просматривали 30 307 раз.

Была ли эта статья полезной?

Реклама