C ускоренный курс

Понятное введение в C

Эффективный взгляд на структуру синтаксиса C и введение в программирование на C

Вступление

Вероятно, одним из самых важных языков программирования, когда-либо созданных для истории вычислений, является язык программирования C. Этот язык действительно изменил мир компьютеров к лучшему во многих отношениях и до сих пор играет жизненно важную роль в мире вычислений. Независимо от того, в какой системе вы сейчас читаете эту статью, если вы по какой-то причине не распечатали ее, вы используете код C, как мы говорим. При этом легко понять, почему изучение языка C может быть полезным для вашей области, если вы действительно работаете в какой-либо технологической области. Это, конечно, включает разработку программного обеспечения, а также Data Science, но это не единственные дисциплины, которые, как мне кажется, должны быть связаны с языком программирования C. Также есть видео, которое я создал, и для некоторых он может быть более удобоваримым.

Если вы хотите получить доступ к коду, используемому в этой статье, через Github, вы можете просмотреть его здесь:



Без лишних слов, давайте теперь обсудим больше о языке программирования C и погрузимся в наш первый взгляд на язык!

Зачем учить C?

Конечно, каждый раз, когда возникает вопрос об изучении нового языка программирования, его непременно следует задавать вопросом, какие преимущества может дать изучение данного языка программирования. Я начну с некоторых общих причин, по которым кто-то может захотеть изучить C, а затем перейду к преимуществам, которые программирование на C может иметь для научной области в частности.

Первая общая причина, по которой я бы порекомендовал изучить язык C, заключается в его универсальности. Как я уже говорил ранее, компьютер, телефон или планшет, который вы используете для чтения этой статьи, вероятно, имеет код C, написанный на всех этапах передачи этого текста от начала до конца. C используется повсюду и является универсальным, а это означает, что ваше программное обеспечение невероятно легко запускать практически где угодно при использовании с C. Эта универсальность также включает интеграцию C с другими языками программирования. Поскольку большинство операционных систем и их соответствующие заголовки написаны на C, большинство языков сценариев и других языков высокого уровня невероятно хорошо интегрируются с языком. Если бы это было не так, то, вероятно, у языка были бы проблемы с широким использованием и работой с другим программным обеспечением.

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

Если вы хотите узнать больше о том, как это применимо к Data Science, я написал об этом целую статью. Поскольку есть много материала, который я хотел бы проработать, не превращая эту статью в полную книгу, я практикую метод извлечения на этой, и те, кому интересно, могут прочитать об этом подробнее. Тем более, что я уже писал на эту тему, и нет смысла переиздавать те же слова:



Ключевые особенности C

Получение основы в языке программирования C начнется с понимания ключевых функций и методологии языка программирования. Первое, что нужно знать о C, как о любом языке, на мой взгляд, - это его парадигма. C - это классически императивный язык программирования. Это означает, что когда мы программируем на C, мы получаем возможность тесно взаимодействовать с нашим оборудованием. Вместо того, чтобы декларативно работать с компьютером, мы можем напрямую управлять его компонентами.

Второе, что нужно знать о C, - это то, что язык статически типизирован. Это типично для этого языка программирования, и следует отметить, что это, конечно, не имеет ничего общего с набором текста на клавиатуре. Система типов - это способ языка программирования для обработки настраиваемых структур данных. Типы также могут добавлять в программирование наследование и область видимости, поэтому они, безусловно, являются бесценной вещью внутри языка программирования. Слово «статика», по крайней мере, в этом смысле (мы не трём носки о ковер) означает, что оно не меняется. Как и когда мы пишем public static void на Java, это означает, что то, что мы описываем, не изменится. Имейте в виду, что тип переменных, объявленных внутри нашего программного обеспечения с помощью C, не изменится во время выполнения. Это означает, что после остановки компиляции и начала выполнения наши типы заблокированы, и мы ничего не можем сделать, чтобы их изменить.

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

Инструкция по установке

Теперь, когда мы рассмотрели, зачем вам нужен C, если вы решили попробовать этот язык, то вам, вероятно, придется его установить. Ниже я привел инструкции для каждой соответствующей платформы.

Linux

Если вы используете Linux, скорее всего, на вашем компьютере уже установлен GCC. Чтобы проверить правильность этого утверждения, вы можете ввести

gcc -v

в свой терминал. Если команда «gcc -v» неизвестна, вероятно, ваш менеджер пакетов сделает вывод, что вы хотите установить gcc. Конечно, в любом случае вы можете использовать диспетчер пакетов, чтобы установить его с помощью

sudo dnf install gcc
sudo apt install gcc
sudo pacman -S gcc
sudo man install gcc

У нас так много менеджеров пакетов, я уверен, что вы знаете, какой у вас.

MacOS

Чтобы установить GCC на MacOS, вам понадобится менеджер пакетов. Обычно это менеджер пакетов Brew. Поскольку я не являюсь пользователем Mac, именно здесь я рекомендую своим друзьям по MacOS (Unix-подобный брат / сестра / небинарный капюшон) к другой статье, которая предоставляет такую ​​информацию:

После установки Brew на свой компьютер вы можете просто запустить в свой терминал те же команды, что и в Linux. Если вы не обновляли архивы пакетов, то, вероятно, вам следует сделать это в первую очередь.

brew update
brew install gcc


Примечание. Слава богу, кто-то сделал диспетчер пакетов для MacOS. Не понимаю, как люди живут без менеджеров пакетов.

Окна

Мои друзья по Windows считают, что установка компилятора C вполне типична для обычных установок Windows. Я бы загрузил setupx86_64.exe по следующей ссылке, а затем запустил его:



Написание нашей первой программы

Нам действительно не нужно много готовиться, чтобы начать создавать наш новый проект C. Практически все, что я сделал, - это создал хороший рабочий каталог и создал в нем новый файл - изначально я назвал его isosceles.c, но позже переименовал его в christmas.c, поскольку я начал проект, желая создать треугольник. -

но получилось немного острее. (Как мятный пряный, а не острый чили.)

Итак, первое, что мы собираемся сделать в нашем новом файле christmas.c, - это написать основную функцию. До этого я хотел коснуться интеллектуального подхода к написанию функции. Первое, что я всегда делаю, когда пишу функцию, - это анализирую свои входные и выходные данные. Во-первых, что мне нужно для вызова этой функции? Во-вторых, какого результата я надеюсь добиться от этой функции? Когда мы пишем код, абсолютно необходимо иметь четкое направление при написании кода, а также четкий путь к нему. Хотя есть несколько способов, которыми мы можем «плыть по течению», когда дело доходит до вывода, мы определенно хотим иметь представление о том, что делает функция, и называть указанную функцию соответствующим образом для этой директивы.

Учитывая это, этот совет также немного поможет с C, потому что аргументы перечислены вместе с типом для возврата. Помните, что набор текста на C статичен и очень надежен. Сильная статическая типизация означает, что этот тип возвращаемого значения является неизменным и явным. При этом наш возврат должен быть явно определен как тип, который мы помещаем в это поле. Когда мы пишем основную функцию, возвращаемое значение всегда будет целым числом. Это потому, что наша программа всегда будет возвращать код выхода. Коды выхода - это универсальный метод программирования, который используется, чтобы сообщить компьютеру, что что-то пошло не так. В принципе, мы можем сказать error = (наш возврат). Конечно, если ошибки нет, мы хотим, чтобы она была ложной - или равной нулю. Давайте рассмотрим нашу первую функцию:

int main(){
}

«Int» в приведенном выше коде - это наш возвращаемый тип. Как описано, это будет 0, так как в настоящее время у нас нет ошибок или даже обработки ошибок. Функция main () - это просто определение нового метода. Обратите внимание, что всякий раз, когда запускается файл C, компилятор ищет для выполнения это определение. Имея это в виду, если бы мы написали другую функцию, которая не вызывается из нашей основной функции, этот код не будет запущен. Наконец, синтаксис метода в C для открытия и закрытия наших функций - это просто скобки {}. Он будет содержать содержимое этой новой функции. Учитывая, что эта функция запускается первой, нам не нужно ничего помещать в наши аргументы, которые обычно находятся внутри скобок, следующих после main (). Конечно, это можно изменить с помощью CLA, о которых мы поговорим в следующей части этого пошагового руководства.

Наконец, мы вернем нашей функции. Мы можем просто добавить в эту функцию return 0. Нам также нужно будет добавить точку с запятой в конце этого выражения. Каждый раз, когда мы завершаем какой-либо оператор, подобный этому, на C, нам нужно будет использовать точку с запятой. Это позволяет C узнать, что это конец конкретного вызова функции, и мы хотели бы перейти к следующему.

int main(){
    return 0;
}

Теперь давайте вернемся к нашему терминалу или странной командной строке Windows. Случайно подумал, что пользователи Windows могут захотеть изучить для программирования вариант WSL или подсистему Windows для Linux. Я слышал, что он довольно надежен и прост в использовании… И может позволить лучше следовать за вами (даже с настоящим компилятором GCC!) В любом случае, если мы ls (или dir для пользователей Windows), мы увидим, что у нас есть наш файл christmas.c:

ls
christmas.c

Теперь мы скомпилируем это в двоичный файл с помощью:

gcc christmas.c -o Christmas

Это предоставит нам исполняемый файл, без необходимости в linker-dude (мой ник для ld) или чего-то особенного, мы можем просто запустить этот файл с ./ для пользователей MacOS / Linux. Я думаю, пользователям Windows нужно будет дважды щелкнуть выходной файл.

./Christmas

Теперь вы отметите «C» (поняли?), Что ничего не произошло.

Стандартный выход

Учитывая, что это всего лишь базовое и медленное введение в язык программирования C, и я потратил двадцать минут на объяснение того, что такое C и как его установить в различных операционных системах, сегодня мы будем работать только со стандартным выводом. Однако для этого нам понадобится использовать некоторые зависимости. Я только сейчас понимаю - я понятия не имею, как можно было бы установить заголовки в Windows - я настоятельно рекомендую WSL, но стандартная библиотека и стандартный ввод / вывод включены в GCC, поэтому я не думаю, что у кого-то возникнет проблема с этим статья хотя бы.

Прежде чем мы перейдем к написанию остальной части этого маленького файла C, позвольте мне сначала объяснить, почему ничего не произошло. Всякий раз, когда мы запускали следующий код,

int main(){
    return 0;
}

наш компилятор сразу перешел к этой функции main (), которую мы здесь определили. Как только он выполнил инструкции внутри указанной функции, ему немедленно был возвращен код выхода 0. Следовательно, он завершился без ошибок. Первое, что нам нужно сделать, чтобы получить какой-то вывод от этого программного обеспечения, - это включить два заголовка, stdlib.h и stdio.h. Нам не обязательно нужен stdlib.h для этого сценария, но он обязательно пригодится в будущем, и это написано в начале большинства программ, написанных на C. В этом отношении .h означает, что это файл заголовка. , который содержит какие-то данные, от которых теперь будет зависеть наше программное обеспечение C. Синтаксис для включения файла в C использует символ #, за которым следует include. Затем мы окружаем заголовок, который хотим включить, стрелками ‹›.

#include <stdlib.h>
#include <stdio.h>
int main(){
    return 0;
}

Теперь мы можем приступить к добавлению вывода в нашу функцию. Я не собираюсь утомлять вас тем, сколько времени мне потребовалось, чтобы нарисовать елку (я думаю, что это заняло слишком много времени), поэтому позвольте мне просто вставить сюда код завершения, чтобы вы могли насладиться. Практически единственная информация здесь - это некоторые регулярные выражения, метод printf (), который является стандартным выводом, и как написать строку, используя кавычки «».

#include <stdlib.h>
#include <stdio.h>
int main() {
printf("    ★\n");
printf("   /_\\\n");
printf("  /_ _\\\n");
printf(" /_  _ \\\n");
printf("/       \\\n");
printf("---------\n");
printf("   | |\n");
return 0;
}

Заключение

Я думаю, что C по-прежнему является одним из самых ценных навыков обучения, которые может получить программист. Если вы не знакомы с языком программирования C, я настоятельно рекомендую взять его, так как это весело, универсально и может многому научить благодаря своей императивной природе. Лично мне интересно узнать об оборудовании, особенно об оборудовании, которое я использую лично, с точки зрения программного обеспечения.

Спасибо за чтение! Удачи в путешествии в прекрасный мир Си! Я скоро опубликую больше отрывков из этого быстрого и легкого ускоренного курса!