Skip to the content.

2 сентября 2021

Понятие “компьютерная программа” можно определять по-разному. Определим компьютерную программу как последовательность инструкций на языке программирования, которые применяются ко входным данным для получения выходных данных.

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

[тип возвращаемого значения] [название функции]([список аргументов]) {
    [тело функции]
}

Внутри функции можно создавать переменные и вызывать другие функции.

Любая программа на языке Си начинается с функции main:

int main() {
    // some code
    return 0;
}

Функция main возвращает ноль в случае успешного выполнения.

Базовые типы переменных в Си:

Целочисленные типы могут быть знаковыми или беззнаковыми. Размер типа зависит от системы. Размер char - 1 байт. В некоторых системах char знаковый (от -128 до 127) в других - беззнаковый (от 0 до 255).

Переменные можно объявлять, определять и инициализировать. При определении для переменной выделяется область памяти:

int i;
double x;
char ch;

Инициализация - это запись значения в переменную:

i = 10;

Определение и иниализацию можно совмещать (и я рекомендую делать именно так, поскольку определенные и неиниализированные переменные могут содержать произвольные значения)

int i = 10;

Форматированный вывод

Библиотека stdio.h содержит инструменты для операций ввода и вывода. Функция printf позволяет выводить текст в стандартный поток вывода, чаще всего связанный с консолью:

#include <stdio.h>

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

Примеры специальных символов:

Функция printf позволяет вывести значения переменных. Для этого необходимо использовать специальные обозначения, например:

Например:

#include <stdio.h>

int main() {
    int i = 10;
    printf("i = %d\n", i);
    return 0;
}

В одной строке можно использовать несколько переменных. Сами переменные при этом передаются в нужном порядке в виде остальных аргументов функции printf:

#include <stdio.h>

int main() {
    int i = 10;
    double x = 3.1415;
    printf("i = %d, x = %lf\n", i, x);
    return 0;
}

Форматированный ввод

Функция scanf из библиотеки stdio.h позволят считывать данные из стандартного потока ввода. Например:

#include <stdio.h>

int main() {
    int i;
    scanf("%d", &i);
    printf("i = %d\n", i);
    return 0;
}

Аргументы, следующие за форматированной строкой, должны указывать на адрес в памяти, который для переменных базовых типов можно получить с помощью оператора &.

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

#include <stdio.h>

int square(int a) {
    return a * a;
}

int main() {
    int i;
    scanf("%d", &i);
    int isq = square(i);
    printf("Value squared = %d\n", isq);
    return 0;
}