2 сентября 2021
Понятие “компьютерная программа” можно определять по-разному. Определим компьютерную программу как последовательность инструкций на языке программирования, которые применяются ко входным данным для получения выходных данных.
Программа на языке Си состоит из переменных и функций. Переменные хранят данные различных типов, функции - это набор выражений. Каждая функция имеет:
- Имя
- Тип возвращаемого значения
- Набор аргументов
[тип возвращаемого значения] [название функции]([список аргументов]) {
[тело функции]
}
Внутри функции можно создавать переменные и вызывать другие функции.
Любая программа на языке Си начинается с функции main
:
int main() {
// some code
return 0;
}
Функция main
возвращает ноль в случае успешного выполнения.
Базовые типы переменных в Си:
int
- целочисленный типfloat
- числа с плавающей точкойdouble
- числа с плавающей точкой с двойной точкойchar
- тим символа
Целочисленные типы могут быть знаковыми или беззнаковыми. Размер типа зависит от системы. Размер 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;
}
Примеры специальных символов:
\n
- перенос строки\t
- табуляция
Функция printf
позволяет вывести значения переменных. Для этого необходимо использовать специальные обозначения, например:
%d
- типint
%f
- типfloat
%lf
- типdouble
(long float)
Например:
#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;
}