Обучение программированию — это совокупный опыт. Наряду с изучением синтаксиса выбранного вами языка, вы также должны изучить общие принципы, используемые всеми языками программирования.
Понимание и изучение программирования на С может быть пугающим, но есть несколько основных идей, с которыми стоит ознакомиться при запуске. Простой проект — отличный способ узнать основы C.
Так с чего начать? Говоря привет!
1. Привет, мир!
Первая часть почти каждого курса по кодированию Привет, мир программа. Детальное рассмотрение этого вопроса подчеркивает некоторые отличия языка Си от других языков. Для начала откройте текстовый редактор или IDE
по вашему выбору, и введите этот код:
#include
/* this is a Hello World script in C */
int main(void)
{
printf("Hello, World! \n");
return 0;
}
Этот короткий фрагмент кода выводится на консоль перед завершением программы. Сохраните его где-нибудь легко запомнить как Привет. Теперь вам нужно скомпилировать и собрать ваш файл.
Заставить его работать
Обычно вам не нужно устанавливать какое-либо дополнительное программное обеспечение на ваш компьютер для запуска сценариев Си. Откройте окно терминала (или командную строку, если вы используете Windows) и перейдите в каталог, в котором вы сохранили ваш скрипт.
Способ компиляции и запуска файла зависит от системы:
- Пользователи Windows: Сделайте ваш файл исполняемым, набрав cl hello.c и нажав ввод. Это создаст hello.exe в той же папке, которую вы можете запустить, набрав Привет.
- Пользователи Linux и macOS: Тип gcc -o привет привет и нажмите Enter, чтобы сделать его исполняемым, и запустите его, набрав ./Привет.
Какой бы метод вы ни использовали, ваш скрипт должен показать вам следующее:
Если он не работает в Windows, убедитесь, что вы запускаете командную строку в режиме администратора. Для macOS вам может потребоваться установить Xcode из магазина приложений и выполнить следующие шаги из StackOverflow.
Теперь давайте посмотрим на программу построчно, чтобы увидеть, как она работает, и улучшить ее!
Под капюшоном: понимание языка Си
Препроцессоры
Сценарий, который вы только что создали, начинается с включения библиотеки.
#include
Первая строка в скрипте называется препроцессор. Это выполняется до того, как остальная часть сценария будет скомпилирована. В этом случае он говорит сценарию использовать stdio.h библиотека. Существует огромное количество препроцессоров, доступных для различных задач.
Stdio.h заботится о том, чтобы получать информацию от пользователя программы и выводить информацию обратно ему.
/* this is a Hello World script in C */
Эта следующая строка является комментарием. Косая черта и звезда говорят компилятору игнорировать все, что находится между ним и закрывающей звездочкой и косой чертой. Хотя это может показаться бессмысленным, возможность оставлять себе и другим четкие заметки о том, что делает ваш код, является важной привычкой.
Основная функция
int main(void)
Каждая программа на С должна иметь главный функция. Main — это функция, которая возвращает целое число, обозначаемое ИНТ. Скобки после main приводятся в качестве аргументов, хотя в этом случае они не нужны, поэтому вы используете недействительным ключевое слово.
Вы пишете код, который будет выполняться между двумя фигурными скобками.
{
printf("Hello, World! \n");
return 0;
}
Внутри функции вы вызываете Е () функция. Как главный(), printf это функция. Разница в том, что printf — это функция в STDIO Библиотека, которую вы включили в начале.
Printf печатает все что в скобках, между кавычками, на консоль. \ п это escape-последовательность, называемая newline, которая указывает компилятору перейти к следующей строке в консоли, прежде чем продолжить.
Обратите внимание, что эти строки заканчиваются на точка с запятой, который компилятор использует для отделения одной задачи от другой. Обратите пристальное внимание на эти точки с запятой — пропустить их — причина номер один вещей, которые идут не так, как надо!
Наконец, функция возвращается с номером 0, заканчивая программу. главный() функция всегда должна возвращать целое число, и возврат = 0; сигнализирует компьютеру, что процесс прошел успешно.
Понимание каждого шага этого скрипта является отличным началом в изучении как синтаксиса C, так и того, как работает язык.
2. Создание ваших собственных функций C
Вы можете создавать свои собственные пользовательские функции в C. Вместо того, чтобы печатать Hello World в основной функции, создайте новую функцию, чтобы сделать это для вас.
void print_for_me()
{
printf("Hello, World! \n");
}
Давайте разберемся с этим.
недействительным является ключевым словом, означающим, что следующая функция не будет ничего возвращать.
print_for_me () это имя функции, и пустые скобки показывают, что для работы не требуется аргументов. Аргумент — это любая информация, передаваемая функции, чтобы она работала — позже вы будете добавлять собственный аргумент для изменения вывода! Замечания: Это не то же самое, что функция main (), над которой используется void. Эта функция не может принимать аргументы, в то время как эта может (но в этом случае не обязательно).
Блок кода должно быть знакомо вам — это просто оператор print из оригинальной основной функции.
Теперь вы можете вызвать эту функцию из своей основной функции.
int main(void)
{
print_for_me();
print_for_me();
return 0;
}
Здесь вы можете увидеть преимущества использования собственной функции. Вместо того, чтобы печатать printf («Привет, мир! \ n») каждый раз вы можете вызвать функцию дважды.
В данный момент это может показаться не таким важным, но если ваша функция print_for_me содержит много строк кода, то возможность ее простого вызова очень удобна!
Это фундаментальная идея программирования, с которой вы столкнетесь на протяжении всего обучения. Напишите свою собственную функцию один раз, а не пишите одни и те же большие куски кода снова и снова.
3. Использование прототипов функций в C
Прототипы являются одним из основных способов, которыми новичок С отличается от других языков. Короче говоря, прототип — это как предварительный просмотр функции, определенной позже. Если вы напишите функцию print_for_me () после основной функции, вы можете получить предупреждение при компиляции:
В предупреждающем сообщении говорится, что компилятор запустил функцию print_for_me до того, как она была объявлена, поэтому он не может быть уверен, что она будет работать правильно при запуске программы.
Код все еще будет работать, но с помощью прототипа можно полностью избежать предупреждения.
#include
void print_for_me();
int main(void)
{
print_for_me();
print_for_me();
return 0;
}
void print_for_me()
{
printf("Hello, World! \n");
}
Посмотрев полную программу, вы увидите, что прототип print_for_me () существует в начале программы, но ничего не содержит. Функция-прототип показывает компилятору, как должна выглядеть функция и требует ли она аргументов или нет.
Это означает, что когда вы вызываете его в главной функции, компилятор знает, правильно ли он вызывается, и может выдать предупреждение или ошибку, если это необходимо. Сейчас это может показаться странным, но знание о них сейчас поможет в будущем.
Эта программа все еще работает без прототипа, но это хорошая практика для использования. Вывод пока выглядит так же, давайте изменим его, чтобы сделать его более личным!
4. Передача аргументов функциям C
Изменение сценария
Для этого последнего шага, вы спросите имя пользователя и запишите его ввод. Тогда вы будете использовать его в функции, которую вы создали ранее. В C слова не называются строками, как в других языках программирования.
Вместо этого они представляют собой массив отдельных символов. Символ для массива [] и ключевое слово голец. Начните с обновления вашей функции-прототипа в начале вашего скрипта:
#include
void print_for_me(char name[]);
Теперь компилятор будет знать, что функция в скрипте позже принимает массив символов, называемый название. Пока что этого персонажа не существует. Обновите основную функцию, чтобы создать ее, и используйте ее для хранения ввода пользователя:
int main(void)
{
char name[20];
printf("Enter name: ");
scanf("%s", name);
print_for_me(name);
print_for_me("Everyone!");
return 0;
}
Первая строка в main создает массив символов с 20 возможными пробелами, называемыми name. Далее пользователю предлагается ввести свое имя с помощью printf. Следующая строка использует новую функцию под названием зсапЕ который берет следующее слово, которое вводит пользователь.
«% S» сообщает функции, что она должна хранить данные в виде строки, и вызывать ее название.
Модификация функции
Теперь, когда вы вызываете print_for_me, вы можете включить название в скобках. На следующей строке вы увидите, что можете также передавать другие символы, если они находятся между кавычками. Оба раза то, что в скобках, передается функции print_for_me.
Измените это сейчас, чтобы использовать новую информацию, которую вы ему даете:
void print_for_me(char name[])
{
printf("Hello, ");
puts(name);
}
Здесь вы можете видеть, что скобки были обновлены так же, как и прототип в начале скрипта. Внутри вы все еще печатаете привет, используя printf. Новая функция здесь путы. Это более продвинутая версия printf.
Все, что помещено в квадратные скобки, будет напечатано на консоли, и новая строка ( \ п вы использовали ранее) добавляется автоматически.
Сохраните и скомпилируйте свой код так же, как вы делали это раньше — обратите внимание, что вы можете назвать программу как-то иначе, если не хотите перезаписывать вашу предыдущую программу. Я назвал мой hello2:
Как вы должны видеть, программа берет вход и использует его в функции, прежде чем отправить предустановленное приветствие «Все!» Снова, передав два отдельных выхода одной и той же функции.
Азбука программирования C
Эта программа проста, но некоторые из концепций в ней нет. Более продвинутый C-код должен быть написан очень хорошо, чтобы предотвратить сбои. Вот почему многие думают, что это отличный язык для изучения в первую очередь, поскольку он прививает хорошие привычки новым программистам.
Другие считают, что изучение C ++ — лучшая идея, так как оно основывается на C, сохраняя при этом более низкий контроль над системой. Одно можно сказать наверняка: такие языки, как Python, гораздо более удобны для начинающих. Для старого языка C все еще используется везде, но Python может стать языком будущего
!