Персональная страничка
Диканева Тараса
Викторовича

Главная \ Преподавательское \ Программирование для начинающих

1. Линейные программы: арифметические операторы, стандартные функции и ввод/вывод в текстовом режиме

Предыдущий раздел:

Следующий раздел:

1.6. Ввод/вывод в текстовом режиме

Приведенная в предыдущем разделе программа запишет в некоторую область памяти число 2, однако внешне это никак не проявится. Нормальная программа должна уметь получать информацию от пользователя и сообщать ему результаты своей работы.

В простейшем случае вывод информации осуществляется процедурами write и writeln. В обоих случаях выводится текст или значения переменных. Отличие этих двух процедур в том, что последовательные вызовы write будут печатать информацию в одной строке, а writeln после каждого вызова переводит курсор на следующую строку. Примеры вызова процедур вывода:

writeln('Hello'); 

Печатается слово “Hello”.

writeln(x); 

Напечатается значение переменной x.

x:=2;
writeln('x = ', x);

В одну строчку напечатается строка «x = » и значение переменной x, то есть в результате будет напечатано «x = 2».

x:=2;
y:=3;
writeln(x, y);

В одну строчку напечатаются значения переменных x и y, то есть «23».

writeln(x, ' ', y);

Между значениями x и y будет располагаться пробел.

writeln(x);
writeln(y);

Значения x и y будут напечатаны на разных строках.

writeln(2*x+y);

Будет напечатано значение выражения 2*x+y.

writeln;

Вызов writeln без параметров приводит к переходу на новую строку. Несколько таких вызовов подряд вставят в выводимый текст несколько пустых строк.

Общее правило таково: write и writeln могут печатать значения переменных и произвольные текстовые строки. При этом текстовые строки должны быть взяты в кавычки. Одной процедурой можно вывести несколько значений переменных и строк текста, перечислив выводимые элементы через запятую.

Ввод информации осуществляется с помощью процедуры

readln(<список переменных>);

которая позволяет ввести с клавиатуры значения нескольких переменных. Например:

readln(x);

Выполнение программы приостановится, пока пользователь не введет значения переменной x и не нажмет Enter.

readln(x, y, z);

Программа ожидает ввода значений трех переменных. После каждого ввода следует жать Enter.

write('x = '); readln(x);

Курсор будет мигать не на пустой строке, а на строке содержащей приглашение вида «x = ».

readln;

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

Используем наши новые знания, написав программу, запрашивающую у пользователя два числа и печатающую их сумму.

program Summa;
var
  x, y: integer;
begin
  write('x = ');  {Вывод текста 'x = '}
  readln(x);	  {Ввод значения переменной x пользователем программы}
  write('y = ');  {Вывод текста 'y = '}
  readln(y);	  {Ввод значения переменной y пользователем программы}
  writeln('Summa = ', x+y);  {Печать результата}
end.

Следующий раздел:

Предыдущий раздел:

1 комментарий

  1. Антон

    1 writeln(‘Hello’);

    Печатается слово “Hello”.

    где оно печатается?

  2. Taras

    Зависит от того, в какой среде программирования пишешь. Если PascalABC, то снизу будет «Окно вывода». Там все и будет печататься.

  3. Светлана

    Почему в списке ошибок (PascalABC) печатает — Неизвестное имя ‘readIn’. Что я сделала не так.

  4. Светлана

    Я скопировала из приведенного в уроке примера readIn и все заработало, что это может быть?

  5. Taras

    ReadLn от Read Line (читать строку). А у тебя через I написано.

  6. Артур

    Спасибо, Тарас Викторович. Всё достаточно понятно написано)
    я еще только начинающий с маленькой буквы, начинал учить много разных книг, но когда начинались «дебри» бросал их, т.к. становилось много чего не понятно. Но в голове что-то все же откладывалось и теперь читать и учить ваши уроки совсем не трудно.))Надеюсь так будет до самого последнего урока.
    Только я на FreePascal тренируюсь, как-то он выглядит более серьезно чтоли, да и АВС все по-русски и я думаю лучше не расслабляться, т.к. ДАЛЬШЕ русского будет гораздо меньше и можно будет застопориться в нек. моментах..

  7. Taras

    Спасибо за приятный отзыв )
    Если будет непонятно, спрашивай.

  8. Илья

    Тарас Викторович, помогите я все сделал как и вы написали но у меня появилась эта ошибка-Program1.pas(1) : Встречено ‘1’, а ожидался раздел описаний или begin

  9. Taras

    Покажи текст программы.

  10. Ренат

    где ошибка?
    program lesson_programmer;
    var
    x:=integer;
    y:=real;
    a:=real;
    begin
    writeln(‘x=’,x);
    x:=1789;
    writeln(‘y=’,y);
    y:=72365.645;
    a:=x+y*(y+x)/x-y;
    writeln(‘a=’,a);
    end.

  11. Taras

      x: integer;

    вместо

      x:=integer;

  12. Ренат

    Тарас, спасибо

  13. Егор

    место write надо писать writeln, а то выбивает ошибку

  14. иван

    написал так
    program Summa;
    var
    x,y: integer;
    begin
    writeln(‘x= ‘);
    x:=3;
    writeln(‘y= ‘);
    y:=5;
    writeln(‘Summa= ‘,x+y);
    end.

    выдало так

    x=
    y=
    Summa= 8

    я правильно сделал?

    не пойму зачем прописывать строку readln ??????

  15. Аноним

    1.
    Сначала необходимо присвоить значение переменной (x:=3;), а после выводить значение в консоль (writeln(‘x= ‘);).
    В Вашем случае, печатает(выводится в консоль значение переменной до присвоения, то есть ничего)

    2.
    readln(x); — позволяет не вводить данные вручную, как-то x:=3;, а запрашивать значение у пользователя. Т.е. делает программу универсальной.

    Несколько изменненный пример автора
    ——————————————————-
    program Summa;
    var
    x, y: integer;
    begin
    write(‘Введите первое слагаемое, x = ‘);
    readln(x); {Считывание программмой введеной пользователем информации в память для дальнейшей обработки}
    write(‘Введите второе слагаемое, y = ‘);
    readln(y); {Считывание программмой введеной пользователем информации в память для дальнейшей обработки}
    writeln(‘Summa = ‘, x+y); {Печать результата}
    end.

  16. Сергей

    program Summa
    var
    x, y: integer;
    begin
    write(‘x=9’);
    readln(x);
    write(‘y=7’);
    readln(y);
    writeln(‘Summa=’, x+y);
    end. Почему выдает внизу Program1.pas(2) : Встречено ‘var’, а ожидалось ‘;’

  17. Gfdtk

    Сергей. После Summa нет ;.

  18. Rusty

    program delenie;
    var
    x,y: integer; {присваивание типа переменной целая}
    z: real; {присваивание типа переменной вещественная}
    begin
    write (‘x=’); {вывод на экран текста ‘x=’}
    read (x); {ввод значения переменной x пользователем}
    write (‘y=’); {вывод на экран текста ‘y=’}
    read(y); {ввод значения переменной y пользователем}
    z:=x/y; {операция с переменными}
    writeln(‘z=’,z); {вывод на экран значение переменной z}
    end.
    получилось с первого раза, что я делаю не так :(

  19. Никифорова Ирина Александровна

    Program Lab2
    Const a=12.56; (описание постоянных параметров)
    Var z,a,y: real; (описание постоянных параметров)
    begin
    write(‘Введите z=’); (ввод параметра z с клавиатуры)
    readLn(z);
    d:=cos*(a+3)/39;
    if z>1.6 then y:=z^0.3+0.5*d (расчет параметра y)
    else if z<=1.6 then y:=d/z+(z+a)^3;
    writeLn(‘y=’, y);
    end.
    Подскажите пожалуйста что не так???????

  20. Ирина Александровна

    Program Lab2
    Const a=12.56; (описание постоянных параметров)
    Var z,a,y: real; (описание постоянных параметров)
    begin
    write(‘Введите z=’); (ввод параметра z с клавиатуры)
    readLn(z);
    d:=cos*(a+3)/39;
    if z>1.6 then y:=z^0.3+0.5*d (расчет параметра y)
    else if z<=1.6 then y:=d/z+(z+a)^3;
    writeLn(‘y=’, y);
    end.
    Подскажите пожалуйста что не так???????

  21. Martin

    //почему когда я нажимаю снизу в окне для ввода s , то у меня выбывает ошибка?
    program a1;
    var
    s:integer;
    begin
    write(‘введите целое число’ );
    readln(s);
    writeln(‘последняя цифра это’,s mod 10) ;
    end.

Добавить комментарий