Основы Си - с нуля изучаем язык программирования — лекция 1.1 из курса CS50

Основы Си - с нуля изучаем язык программирования — лекция 1.1 из курса CS50
На чтение
23 мин.
Просмотров
32
Дата обновления
09.03.2025
Старт:28.10.2024
Срок обучения:
Курс After Effects
30 600 ₽51 000 ₽
Подробнее

Для начала работы с Си, необходимо установить на компьютер компилятор. Рекомендуем использовать GCC (GNU Compiler Collection). Скачайте дистрибутив с официального сайта GNU. Установите его по инструкции, указанной в документации.

int main() { printf("Hello, world! "); return 0;

Установка компилятора и первая программа

Для работы с языком Си вам нужен компилятор. Рекомендуем использовать GCC (GNU Compiler Collection). Скачайте его с сайта gcc.gnu.org/install/ . Установите его согласно инструкции для вашего операционной системы.

После установки, откройте текстовый редактор (например, Notepad++, Sublime Text, VS Code). Создайте новый файл и сохраните его как hello.c.

Впишите в файл следующий код:


#include <stdio.h>
int main() {
printf("Hello, world!
");
return 0;
}

Разбор кода:

  • int main() { ... }: Это главная функция программы. Все программы на Си начинаются с этой функции.

  • printf("Hello, world!

  • return 0;: Возвращает значение 0 операционной системе, показывая, что программа завершилась успешно.

Сохраните файл. Откройте терминал или командную строку, перейдите в директорию, где вы сохранили файл hello.c. Затем выполните следующую команду:

gcc hello.c -o hello

Это скомпилирует ваш код в исполняемый файл hello. Теперь запустите его, выполнив следующую команду:

./hello

В консоли должно отобразиться "Hello, world!". Это ваша первая программа на Си, работающая на вашей машине.

Типы данных в Си: от целых к числам с плавающей точкой

В Си, как и в других языках программирования, данные хранятся в различных форматах. Начнём с целых чисел.

Целые числа: int – наиболее распространённый тип для целых. Занимает обычно 4 байта. short занимает меньше (обычно 2), long – больше (обычно 8). Выбор зависит от требуемой точности и экономии памяти.

Числа с плавающей точкой: float – для чисел с плавающей точкой, занимающих меньше памяти – обычно 4 байта. double – для более высокой точности, обычно 8 байт. Используются для приближённого представления дробей.

Пример: Объявление переменных:

int age = 30;
float price = 99.99;
double pi = 3.14159265358979323846;

Важно: Выбор типа данных влияет на точность и размер занимаемой памяти. Выбирайте тип данных, соответствующий вашим задачам.

#include int main() { int age = 30; printf("Мне %d лет. ", age); return 0; }

В данном примере %d – это спецификатор формата, указывающий, что на этом месте должно быть целое число (integer). Значение переменной age подставляется в это место.

Для ввода данных с клавиатуры используется функция scanf. Она ожидает ввод данных, соответствующих спецификаторам формата.

#include int main() { int age; printf("Введите ваш возраст: "); scanf("%d", &age); printf("Ваш возраст: %d ", age); return 0; }

Здесь &age – важный момент! Она указывает на память (адрес) переменной age. scanf записывает значение в эту память. Без & программа может сломаться или дать некорректные результаты. Помните: scanf и printf работают с адресами переменных. Важно разбираться в типах данных (int, float, char, etc).

Обращайте внимание на корректность ввода! scanf может не сработать, если ввод не соответствует спецификатору формата. Неверный ввод может привести к неожиданным результатам.

Переменные и их использование в выражениях

Для хранения данных в программе используются переменные.

Объявление переменной: сначала тип данных, потом имя, затем при необходимости значение.

Тип данных Описание Пример
int Целые числа int age = 30;
float Вещественные числа float price = 99.99;
char Один символ char initial = 'J';
boolean Логический тип (true/false) bool isAdult = true;
string Строка символов string name = "John Doe";

Имена переменных должны начинаться с буквы или подчеркивания, а состоять только из букв, цифр и подчеркиваний. Например:

int studentCount; //Верно

int student_count2; //Верно

int 2students; //Неверно

Использование в выражениях. Операторы и переменные могут использоваться вместе:

Операция Пример Результат
Сложение int sum = a + b; Сумма значений a и b
Вычитание int diff = a - b; Разность значений a и b
Умножение int product = a * b; Произведение значений a и b
Деление float quotient = a / b; Частное значений a и b (Важно: результат может быть вещественным типа !).

Важно! Перед использованием переменная должна быть объявлена.

Например, прежде чем записать int age = 30;, необходимо написать int age;

Компиляция, выполнение и отладка кода.

Для запуска программы на C, необходимо пройти три стадии: компиляцию, выполнение и отладку.

Компиляция – это процесс преобразования исходного кода (в нашем случае на C) в машинный код, понятный компьютеру. Используйте компилятор, например, GCC (GNU Compiler Collection). Команда для компиляции hello.c: gcc hello.c -o hello. Это создаст файл hello, содержащий машинный код.

Выполнение – это запуск скомпилированного кода. Простой способ – введите ./hello в терминале.

Отладка – это поиск и исправление ошибок. Если программа выдаёт ошибку, используйте отладчик (например, gdb). Он позволит вам пошагово проходить код, просматривать переменные и выявлять ошибки. Например, команда gdb hello запускает отладчик для файла hello. Далее используйте команды отладчика, такие как run, next, print для поиска проблем.

Ключевые рекомендации: Начните с маленьких, простых программ. Если код не работает, проверьте синтаксис, имена переменных и правильность функций. Должны быть четкие сообщения об ошибках. Используйте отладчик, чтобы легко находить и исправлять ошибки. Хорошо структурируйте код, добавление комментариев – важная составляющая.

Основные правила написания кода в Си: форматирование и стиль

Отступы и табуляция: Используйте 4 пробела для отступа вложенного кода. Избегайте табуляции, так как разные редакторы могут по-разному интерпретировать ее.

  • Для объявления переменных используйте отдельные строки.
  • Правила отступов должны соблюдаться строго.

Комментарии: Комментируйте код, поясняя назначение сложных операций или блоков.

  • Комментарии должны быть понятными и краткими.
  • Используйте стандартный синтаксис комментариев Си (/* ... */ и // ...).

Имена переменных и функций: Выбирайте осмысленные имена, отражающие назначение переменной или функции. Используйте нижнее подчеркивание, например:

  • razmer_massiva вместо n.
  • funkciya_rascheta вместо calc.

Длина строк: Ограничьте длину строк кода 80 символами. Это улучшит читаемость.

Разделяйте блоки кода: Используйте пустые строки для разделения логических блоков.

  1. Например, после объявления переменных и перед функцией.
  2. Перед циклами и условиями.

Консистентность: Соблюдайте единый стиль в своём проекте. Это облегчит последующее чтение и сопровождение кода.

Примеры:

  • int razmer_massiva = 10; //Объявление размера массива
  • int funkciya_rascheta(int a, int b) { // Функция расчета ... }

Не используйте магические числа: Не используйте «магические числа» (например, 3.14159) в коде. Замените их константами.

Вопрос-ответ:

Как лучше всего начать изучение языка Си, если у меня нет опыта программирования?

Начните с освоения основных концепций, таких как переменные, типы данных и операторы. Практикуйте их на простых задачах, например, напечатайте "Привет, мир!". Постепенно переходите к более сложным темам, не усложняя задачу слишком резко. Важно выполнять упражнения и примеры, чтобы закрепить понимание. Материалы курса CS50 предлагают поэтапный подход, что хорошо для новичков.

Что такое компиляция кода на Си и зачем она нужна?

Компиляция – это процесс преобразования исходного кода Си (в виде текста) в машинный код, который компьютер может непосредственно исполнить. Без компиляции, компьютер не поймёт написанные вами инструкции. В этом процессе компилятор Си анализирует ваш код, проверяет его на ошибки и преобразует в понятный компьютеру набор инструкций. Компиляция необходима для того, чтобы код работал на конкретном типе процессора.

Какие типы данных используются в языке программирования Си и как они различаются?

В языке Си используются различные типы данных для хранения разного рода информации. Примеры: int (целые числа), float (вещественные числа), char (символы). Эти типы отличаются объёмом памяти, который они занимают, и, следовательно, диапазоном возможных значений. Например, int может хранить целые числа, но не может хранить дробные числа, а float может хранить их. Важно понимать, что выбрать тот или иной тип данных в зависимости от требуемой задачи. Правильное использование типов данных гарантирует правильность работы программы.

Какие основные структурные элементы характерны для языка Си?

Язык Си использует основные структурные элементы, такие как переменные, константы, операторы, выражения, циклы, условные операторы и функции. Они позволяют организовать логику программы и манипулировать данными. Функции позволяют разбить программу на более мелкие, управляемые блоки, что облегчает понимание и модификацию кода. Циклы (например, for, while) позволяют повторять отражения определённых блоков кода, пока выполняется некоторое условие. Условные операторы (например, if-else) позволяют выполнять разные части кода в зависимости от условий.

Как язык Си соотносится с другими языками программирования?

Язык Си – это язык низкого уровня. Он предоставляет разработчику прямой доступ к системе (компьютеру), позволяя очень тонко её управлять. Он имеет множество применений благодаря своей эффективности (скорости выполнения) и гибкости. Некоторые языки, такие как C++, Java, Python, используют Си в своей основе или имеют с ним точки соприкосновения. Знание Си может упростить освоение и других языков.

В лекции упоминается о компиляторе. Что это такое и зачем он нужен?

Компилятор — это программа, которая переводит написанный вами код на языке программирования (в данном случае Си) в машинный код, понятный компьютеру. Машинный код – это последовательность инструкций, которые процессор может напрямую выполнить. Без компилятора компьютер не сможет понять ваши команды Си. Компилятор анализирует ваш код, проверяет его на ошибки, а затем преобразует в последовательность команд, которые напрямую обрабатываются процессором. Это делает код исполняемым, то есть, заставляет компьютер что-то делать.

0 Комментариев
Комментариев на модерации: 0
Оставьте комментарий

Курсы