Hello (Привет)

Коротко

Создайте программу, которая будет просто приветствовать пользователя, как показано ниже.

$ ./hello
Hello, world!

Описание

Напишем вашу (возможно) первую программу? Внутри вашей pset1 папки, создайте новый файл hello.c, а затем откройте этот файл в новой вкладке. (Помните как?) Не давайте файлу другое название. Оно обязательно должно состоять из строчных (маленьких) букв; названия файлов и папок в Linux’e “чувствительны к регистру.” Вернемся к созданию программы - перепишите следующие строки кода в ваш файл:

#include <stdio.h>

int main(void)
{
    printf("Hello, world!\n");
}

Заметьте, когда вы пишите, CS50 IDE добавляет “подсвечивание синтаксиса” (т.е. цвет). Хотя цвета CS50 IDE могут отличаться от тех, что показаны в наборах проблем. Эти цвета не сохраняются внутри самих файлов; они добавляются CS50 IDE, чтобы отличить определенный синтаксис. Если бы вы с самого начала не сохранили файл как hello.c, CS50 IDE не знала бы (из-за отсутствия расширения файла), что вы пишите код Cи. В этом случае цветов бы просто не было.

Если вы неправильно напишите эту программу, вы познакомитесь со своим первым багом (ошибкой)! Написание слов с заглавных букв может повлиять на ваш код, так что избегайте случайных больших букв в записи кода (если вы, конечно, не находитесь между двумя кавычками). И не забывайте точку с запятой. У Cи придирчивый характер!

Далее выберите File > Save (можно сочетанием кнопок command + s или control + s). Только после этого исчезнет красная точка, на верхней вкладке. Нажмите на окно терминала, который находится под вашим кодом и проверьте находитесь ли вы внутри ~/workspace/pset1/. (Помните как это сделать? Если нет, тогда напишите cd и нажмите Enter, потом введите cd workspace/pset1/ затем Enter.) В вашем окне должно быть:

~/workspace/pset1/ $

Давайте убедимся, что hello.c действительно находится в нужной нам папке. Напишите

ls

нажмите Enter - вы должны увидеть hello.c? Если нет, ничего страшного; какой-то шаг вы скорее всего пропустили. Лучше всего повторить последнюю пару шагов или попросить о помощи!

Предположим, вы действительно видите hello.c, давайте попробуем его скомпилировать! Напишите

make hello

в окне терминала, затем Enter. Обратите внимание, мы пишем только hello, не hello.c. Если появился знак "$" и на экране не появилось много строчек непонятного текста, значит все прошло успешно! Ваш исходный код был преобразован в объектный код (0 и 1), который теперь можно запустить (ака выполнить). Напишите

./hello

в окне терминала, потом Enter и вы должны увидеть следующее:

Hello, world!

И если вы напишите

ls

затем нажмите Enter, вы увидите новый файл hello рядом с hello.c. Первый из этих файлов hello должен быть со звездочкой (asterisk) после его имени, это значит, что данный файл “исполняемый”, т.е. эту программу вы можете включить (т.е. запустить).

Если, конечно, запустив make, вы увидите ошибки, пришло время заняться отладкой(т.е. debugging/устранение ошибок/поиск багов)! (Если терминальное окно слишком маленькое, нажмите и потяните его верхнюю границу вверх, чтобы увеличить высоту окна.) Если вы увидите ошибку “expected declaration” или что-то такое же мистическое, скорее всего у вас ошибка в синтаксисе (т.е. опечатка). Проверьте, не пропустили ли вы какие-нибудь символы или написали что-то лишнее. Сравните ваш код с тем, что представлен выше. Такого рода ошибки очень легко допустить, если вы только начинаете изучать программирование, так что сравнивайте ваш код с нашим, каждую букву. Высока вероятность появления ошибок при обновлении вами своего кода. Главное не забывайте повторно сохранять файл, используя File > Save (command + s или control + s), потом нажмите на окошко терминала и опять введите

make hello

в данном окне, не стесняясь нажать Enter. (Главное в терминальном окне находится внутри ~/workspace/pset1/, т.к. от этого будет зависеть, примут вашу команду или нет.)

После того, как вы избавитесь от всех ошибок, попробуйте “выполнить” (т.е. запустить) вашу программу, написав

./hello

в окне терминала, затем Enter! Будем надеяться, вы увидите то, что вписали в printf.

Если нет, тогда попросите помощи!

Использование

Ваша программа должна проделывать тоже самое, что показано в примере ниже. Предположим, подчеркнутый текст - это то, что написал пользователь.

$ ./hello
Hello, world!

Проверка

check50 cs50/2018/x/hello

Стиль

style50 hello.c

Закачать

submit50 cs50/2018/x/hello

Вас потребуют ввести логин (GitHub username) и пароль (GitHub password) от вашей учетной записи на Github’е, которую вы можете завести, пройдя по данной ссылке https://github.com/join.

Зайдите на сайт cs50.me, используя всё ту же учетную запись GitHub’а и нажмите на зеленую кнопку authorize submit50 (Это действие производится только один раз).

Если ваша программа написана правильно, вы увидите

:) hello.c exists
:) hello.c compiles
:) prints "Hello, world!\n"

где каждый зеленый смайлик означает прохождение подзадания (т.е. теста). Также, вы можете увидеть внизу кое-какую ссылку, облом…она не для вас =).

Если же вы видите желтые или красные смайлики, это означает, что ваш код написан неправильно! Предположим, вы увидите

:( hello.c exists
  \ expected hello.c to exist (файл hello.c не существует)
:| hello.c compiles
  \ can't check until a frown turns upside down (не могу выполнить данную проверку, т.к. до этого  не было зеленого смайлика )
:| prints "Hello, world!\n"
  \ can't check until a frown turns upside down (не могу выполнить данную проверку, т.к. до этого  не было зеленого смайлика )

Из-за того что check50 не признает существование hello.c, как указывает красный смайлик (которому грустно). Высока вероятность того, что вы загрузили не тот файл или неправильно назвали его. Другие смайлики желтые, потому что их работа зависит от существования файла hello.c и именно поэтому они даже не начинали проверку.

Предположим, вы увидите следующее.

:) hello.c exists
:) hello.c compiles
:( prints "Hello, world!\n"
  \ expected output, but not "Hello, world!" (ожидали, а не "Hello, world!")

Высока вероятность, что в этом случае вы написали не то, что мы вас просили в описании к заданию, т.е. не Hello, world!\n, а Hello, world!, пропустив (\n).

check50 проверяет ваше приложение вместо меня, чтобы вы мне отправили готовый код.

Подсказки

Перепишите код, который мы выше предоставили (вместо того, чтобы копировать и вставлять - не копипастить короче!). Неплохо было бы начать тренировать мышечную память прямо сейчас!