Организация ввода и вывода данных

Информатика 8 класс · тест: 5 вопросов

Программа, которая ничего не спрашивает и ничего не сообщает, бесполезна: результат вычислений останется у неё в памяти. Команды ввода получают данные от пользователя, команды вывода показывают результат на экране.

Вывод на экран

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

#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, writelnprint(…)
ввод целогоscanf("%d", &x)readln(x)x = int(input())
ввод дробногоscanf("%lf", &x) для doublereadln(x)x = float(input())
два знака после точки%.2fx: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 случайных вопросов по этому уроку — при следующем открытии будут другие. Ответы проверяются сразу, без регистрации.