Организация ввода и вывода данных
Программа, которая ничего не спрашивает и ничего не сообщает, бесполезна: результат вычислений останется у неё в памяти. Команды ввода получают данные от пользователя, команды вывода показывают результат на экране.
Вывод на экран
Команда вывода берёт значения — текст, числа, переменные, целые выражения — и показывает их на экране.
#include <stdio.h>
int main(void) {
int s = 15;
printf("Привет!\n");
printf("Результат = %d\n", s);
return 0;
}
program Hello;
var
s: integer;
begin
s := 15;
writeln('Привет!');
writeln('Результат = ', s);
end.
s = 15
print("Привет!")
print("Результат =", s)
На экране во всех трёх случаях появится:
Привет!
Результат = 15
Текст или значение переменной
Текст в кавычках выводится как есть, а имя переменной без кавычек заменяется её значением. Строка «Результат = » — просто надпись, а s превращается в 15.
- Си — текст в двойных кавычках
"…". Место для значения отмечают спецификатором:%d— целое число,%f— вещественное,%c— символ,%s— строка. Значения перечисляют после текста через запятую, в том же порядке. - Паскаль — текст в одинарных кавычках
'…', значения перечисляют через запятую. - Python — текст в двойных или одинарных кавычках, значения через запятую. Между ними
printсам ставит пробел.
Переход на новую строку
| Си | Паскаль | Python | |
|---|---|---|---|
| вывести и перейти на новую строку | printf("…\n") | writeln(…) | print(…) |
| вывести и остаться на той же строке | printf("…") | write(…) | print(…, end="") |
В Си \n — специальный символ «новая строка». Без него следующий вывод продолжится на той же строке.
Ввод с клавиатуры
Команда ввода останавливает программу и ждёт, пока пользователь наберёт данные и нажмёт Enter. Введённое значение записывается в переменную.
Программа спрашивает два числа и выводит их сумму:
#include <stdio.h>
int main(void) {
int a, b;
printf("Введите два числа: ");
scanf("%d %d", &a, &b);
printf("Сумма: %d\n", a + b);
return 0;
}
program Sum;
var
a, b: integer;
begin
write('Введите два числа: ');
readln(a, b);
writeln('Сумма: ', a + b);
end.
a = int(input("Введите первое число: "))
b = int(input("Введите второе число: "))
print("Сумма:", a + b)
Пользователь вводит 7 и 5, программа отвечает Сумма: 12. Обрати внимание, чем отличается ввод:
- Си —
scanfтоже использует спецификаторы:%dдля целого. Перед именем переменной ставится&— это адрес ячейки, куда записать число. Забыть&— самая частая ошибка новичков в Си. - Паскаль —
readln(a, b)читает оба числа, тип берётся из объявления переменных. - Python —
input()всегда возвращает строку. Чтобы получить число, строку переводят функциейint()(целое) илиfloat()(дробное). Внутри скобокinputможно написать подсказку для пользователя.
Что будет, если в Python забыть int()? Тогда a и b останутся строками, и a + b их склеит: из «7» и «5» получится «75». Чтобы прочитать два числа из одной строки, в Python пишут a, b = map(int, input().split()).
Вывод дробных чисел
Вещественные числа удобно выводить с нужным числом знаков после точки. Во всех трёх языках задают две величины: ширину поля (сколько позиций займёт число целиком, включая точку) и число знаков после точки.
double x = 15.12345;
printf("[%6.2f]\n", x); // ширина 6, два знака
x := 15.12345;
writeln('[', x:6:2, ']'); { ширина 6, два знака }
x = 15.12345
print(f"[{x:6.2f}]") # ширина 6, два знака
Результат везде одинаковый: [ 15.12]. Число 15.12 занимает 5 позиций, шестая заполняется пробелом слева. Если ширина не нужна, достаточно знаков после точки: %.2f, x:0:2, {x:.2f}.
В Python запись f"…" называется f-строкой: всё, что стоит в фигурных скобках, вычисляется и подставляется в текст.
Синтаксис коротко
| Си | Паскаль | Python | |
|---|---|---|---|
| вывод | printf("…", x) | write, writeln | print(…) |
| ввод целого | scanf("%d", &x) | readln(x) | x = int(input()) |
| ввод дробного | scanf("%lf", &x) для double | readln(x) | x = float(input()) |
| два знака после точки | %.2f | x:0:2 | {x:.2f} |
| кавычки для текста | двойные | одинарные | любые |
🎯 Самое главное
- Вывод:
printfв Си,write/writelnв Паскале,printв Python. - Ввод:
scanfс&перед переменной в Си,readlnв Паскале,inputв Python. - В Python
input()возвращает строку — число из неё получают черезint()илиfloat(). - Текст в кавычках выводится как есть, переменная — своим значением.
🤔 Проверь себя
1. Что выведет команда, если a равно 4: Си printf("a*a=%d", a*a), Паскаль write('a*a=', a*a), Python print("a*a=", a*a, sep="")?
a*a=16. Текст в кавычках выводится как есть, выражение вычисляется.
2. Чем отличаются write и writeln в Паскале?
writeln после вывода переводит курсор на новую строку, write оставляет его на той же.
3. Почему в Python программа выводит 75 вместо 12, если сложить два введённых числа 7 и 5?
Потому что input() вернул строки, а сложение строк склеивает их. Нужно int(input()).
4. Зачем в Си знак & в scanf("%d", &a)?
&a — адрес переменной a. scanf должен знать, в какую ячейку памяти записать введённое число.
Дальше соберём из ввода, вычислений и вывода первые полноценные программы — линейные алгоритмы.
Проверь себя
5 случайных вопросов по этому уроку — при следующем открытии будут другие. Ответы проверяются сразу, без регистрации.