Как составить диалог с компьютером в паскале

Голосование за лучший ответ

Владислав Скрипкин

Ученик

(161)


5 лет назад

Программа-диалог будет выглядеть так:

Program dialog
var x:string;
begin
readln(x);
if x=’Привет’ then writeln(‘Привет!’)
if x=’Как дела?’ then writeln(‘У меня всё хорошо’)
readln;
end.

Строчек if x=’текст’ then writeln(‘текст’) можно вставлять сколько угодно с любым (но не слишком длинным) текстом.
Суть программы – пользователь вводит сообщение, программа ему отвечает, получается диалог с компьютером.

Владислав СкрипкинУченик (161)

5 лет назад

в значение переменной ‘x’ записывается сообщение пользователя и сохраняется в памяти компьютера. В writeln(‘текст’) записывается в программе то, какой ответ должен выдать компьютер на соответствующее сообщение пользователя

Kamron Римбердиев

Ученик

(155)


1 год назад

var a,b,c,d:string;
begin
writeln(‘Как тебя зовут ?’);
readln(a);
writeln(‘Привет ‘,a,’ !’);
writeln(‘Сколько тебе лет? ‘);
readln(b);
writeln(‘Какой у тебя любимый предмет в школе ?’);
readln(c);
writeln(‘Какая у тебя любимая книга ?’);
readln(d);
write (‘Значит тебя зовут ‘,a ,’. Тебе ‘,b,’. Твой любимый предмет – ‘,c,’. И твоя любимая книга – ‘,d);
readln();
end.

      1. Диалог с компьютером

Напишем программу,
которая осуществляла бы такой диалог
человека с компьютером:

КОМПЬЮТЕР ВЫВОДИТ
НА ЭКРАН:
Здравствуй, я компьютер, а
тебя как зовут?

ЧЕЛОВЕК ВВОДИТ
С КЛАВИАТУРЫ:
Коля

КОМПЬЮТЕР ВЫВОДИТ
НА ЭКРАН:
Очень приятно, Коля. .Сколько
тебе лет?

ЧЕЛОВЕК ВВОДИТ
С КЛАВИАТУРЫ:
16

КОМПЬЮТЕР ВЫВОДИТ
НА ЭКРАН:
Ого!Целых 16 лет!Ты уже совсем
взрослый!

Вот программа:

VAR imya
:String;
vozrast :Integer;
BEGIN
WriteLn
(‘Здравствуй, я компьютер, а тебя как
зовут?’);
ReadLn (imya);
WriteLn (‘Очень приятно,
‘, imya, ‘ . Сколько тебе лет?’);
ReadLn
(vozrast);
WriteLn (‘Ого! Целых ‘ ,vozrast, ‘ лет! Ты
уже совсем взрослый!’)
END.

Диалог будет
отличаться только той информацией,
которую вводит человек. Так, в другой
раз по этой же программе будет осуществлен
следующий диалог:

КОМПЬЮТЕР: Здравствуй,
я компьютер, а тебя как зовут?
ЧЕЛОВЕК
:
Фантомас!
КОМПЬЮТЕР: Очень
приятно, Фантомас! . Сколько тебе
лет?
ЧЕЛОВЕК: 100
КОМПЬЮТЕР: Ого!
Целых 100 лет! Ты уже совсем взрослый!

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

КОМПЬЮТЕР: Здравствуй,
я компьютер, а тебя как зовут?
ЧЕЛОВЕК: Сгинь
с моих глаз!
КОМПЬЮТЕР: Очень
приятно, Сгинь с моих глаз! . Сколько
тебе лет?
ЧЕЛОВЕК: -2
КОМПЬЮТЕР: Ого!
Целых -2 лет! Ты уже совсем взрослый!

Задание
17:
Напишите
программу для следующей задачи: Компьютер
спрашивает названия двух планет, радиусы
их орбит (в миллионах километров) и
скорости движения по орбите (в миллионах
километров в сутки). Компьютер вычисляет
продолжительность года на планетах и
выдает результат в таком виде:
Продолжительность
года на планете Земля – 365 суток, а на
планете Эоэлла – 12 суток.

      1. Константы

Кроме переменных
величин в тексте программы мы встречаем
константы. Это те значения, которые
или присванваются переменным, или
встречаются в выражениях, или сравниваются
с выражениями. Например:

x:=25 здесь числовая
константа – 25

slovo:=’Волга’ здесь
строковая константа – Волга

simvol:=’!’ здесь
символьная константа – !

y:=(x+1)
/ (200*x – 0.3) здесь числовые
константы – 1 и 200 и 0.3

    1. Разветвляющиеся программы

      1. Условный оператор if или как компьютер делает выбор

Идею разветвления
в программе я изложил в 1.8. Сейчас добавлю
только, что вся мыслительная
деятельность во всех программах (в
том числе и той, что выиграла в шахматы
у Каспарова) осуществляется только
при помощи ветвления (выбора).

Теперь посмотрим,
как писать разветвляющиеся программы
на Паскале.

Выучим сначала
три английских слова:

if

читается “иф”

переводится
“если”

then

читается “зэн”

переводится
“то”

else

читается “элз”

переводится
“иначе”

Теперь приведем
пример нового для вас оператора:

IF a=28 THEN WriteLn
(f) ELSE k:=44

Переводится он
так:

ЕСЛИ a=28 ТО печатай
f ИНАЧЕ присвой переменной k значение
44
.

Другими словами,
мы предлагаем компьютеру сначала
подумать, правда ли, что a=28 , и если
правда, то выполнить оператор WriteLn (f),
в противном случае выполнить оператор
k:=44
. Таким образом, мы с вами впервые написали
оператор, при выполнении которого
компьютер не просто выполняет, что
приказано, а сначала думает и делает
выбор (пока одного из двух).

Мы видим, что
оператор if
включает в себя другие операторы, которые
выполняются или не выполняются в
зависимости от какого-то условия. Чтобы
понять, зачем может пригодиться оператор
if,
рассмотрим следующую задачу.

Задача 1.
Компьютер должен перемножить два числа
– 167 и 121. Если их произведение превышает
2000, то компьютер должен напечатать текст
ПРОИЗВЕДЕНИЕ БОЛЬШОЕ, иначе текст
ПРОИЗВЕДЕНИЕ МАЛЕНЬКОЕ. После этого
компьютер в любом случае должен напечатать
само произведение.

Программа:

VAR a,b,y :Integer;

BEGIN
a:=167;

b:=121;

y:=a*b;

if
y>20000 then WriteLn (‘ПРОИЗВЕДЕНИЕ
БОЛЬШОЕ’)

else WriteLn
(‘ПРОИЗВЕДЕНИЕ МАЛЕНЬКОЕ’);

WriteLn (y)

END.

Пояснение: В
программе 5 операторов, последний –
WriteLn
(y)
. Поскольку эти 5 операторов
выполняются по порядку, то он выполнится
обязательно.

Задача 2. В
компьютер вводятся два произвольных
положительных числа – длины сторон двух
кубиков. Компьютер должен подсчитать
объем одного кубика – большего по размеру
.

Обозначим a1
– сторону одного кубика, a2
– сторону другого, bol
– сторону большего кубика, V
– объем кубика. Приведем три варианта
программы:

ВАРИАНТ 1

VAR a1,a2 : Real;

BEGIN

ReadLn (a1,a2);

if
a1>a2 then
WriteLn (a1*a1*a1 : 15:5)

else
WriteLn (a2*a2*a2 : 15:5)

END.

ВАРИАНТ 2

VAR a1,a2,V : Real;

BEGIN

ReadLn (a1,a2);

if
a1>a2 then V:=a1*a1*a1

else
V:=a2*a2*a2;

WriteLn
(V : 15:5)

END.

ВАРИАНТ 3

VAR a1,a2,bol,V :
Real;

BEGIN

ReadLn (a1,a2);

if
a1>a2 then
bol:=a1

else
bol:=a2;

V:=bol*bol*bol;

WriteLn (V : 15:5)

END.

Поясним последний
вариант. Программа состоит из четырех
операторов, которые выполняются в
порядке записи. Первым после запуска
выполняется оператор ReadLn (a1,a2),
который ждет от нас ввода двух чисел.
Пусть мы сегодня ввели числа 3 и 2.
Компьютер понимает, что a1
равно 3, a2
равно 2, и переходит к выполнению оператора
if.
Он видит, что 3>2, и поэтому выполняет
оператор bol:=a1,
а оператор bol:=a2
не выполняет. В результате в ячейке bol
оказывается число 3. Затем
компьютер переходит к следующему
оператору – V:=bol*bol*bol
и вычисляет V=3*3*3=27. Следующий оператор
WriteLn
(V : 15:5)
печатает число 27.00000 .

Если завтра мы
запустим эту же программу и введем числа
6 и 10, то компьютер увидит, что утверждение
6>10 ложно, и поэтому выполнит оператор
bol:=a2,
а оператор bol:=a1
выполнять не станет. В результате в
ячейке bol
окажется число 10 и будет напечатано
число 1000.00000 .

А теперь, дорогой
читатель, вам пришла пора освоить
пошаговый режим выполнения программы
на компьютере. В обычном режиме компьютер
выполняет программу настолько быстро,
что вы не успеваете заметить, в каком
порядке он выполняет отдельные операторы
программы, а без этого часто невозможно
понять ее логику. Пошаговый режим
заставляет компьютер при выполнении
программы задерживаться на каждой
строке программы столько, сколько нужно
человеку. Сейчас вам необходимо проделать
то, что сказано в части
IV
в пункте «Пошаговый режим» параграфа
«Исправление ошибок. Отладка программы».

Итак, если паровая
машина избавила человека от тяжелого
физического труда, то оператор if
избавил человека от тяжелого умственного
труда, в нашем случае – от необходимости
решать, какое из двух чисел больше
другого.

Оператор if
можно записывать и без части else.
Например, if s<t then w:=a+1.
Это означает, что если s<t,
то нужно выполнить оператор w:=a+1,
в противном случае ничего не делать, а
просто перейти к следующему оператору.

Для примера
рассмотрим простейшую задачу: В компьютер
вводится слово. Компьютер должен просто
распечатать его. Однако, если введенным
словом будет “колхозник”, то
компьютер должен напечатать вместо
него слово “фермер”.

Вот как будет
выглядеть наша программа-“цензор”:

VAR Slovo :
String;
BEGIN
ReadLn (Slovo); { переменная
Slovo будет иметь значением строку
символов, введенных с клавиатуры }
if
Slovo = ‘колхозник’ then Slovo :=
‘фермер’;
WriteLn (Slovo)
END.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

Petro29

197 / 9 / 3

Регистрация: 30.04.2016

Сообщений: 733

1

Диалог с компьютером

25.02.2018, 10:58. Показов 19452. Ответов 12

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Диалог с компьютером.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
uses Crt;
Var Imaj: String;
       Vozrast: Integer;
begin
ClrScr;
   WriteLn(' Здравствуй, я компьютер, а тебя как звать?');
    Write(' Меня зовут ');
        ReadLn(Imaj);
    WriteLn(' Очень приятно ' , Imaj, ' . Сколько тебе лет? ');
    Write(' Мне ');
         ReadLn(Vozrast);
     WriteLn(' лет ');
     WriteLn(' Ого! Целых ' , Vozrast,  ' лет. Да ты совсем взрослый!');
    ReadLn
end.

На выходе имеем:

Delphi
1
2
3
4
5
6
Здравствуй, я компьютер, а тебя как зовут?
Меня зовут Петя
Очень приятно Петя. Сколько тебе лет?
Мне 16
лет
Ого! Целых 16 лет. Да ты совсем взрослый!

А вопрос такой: как я не старался вставить слово “лет”
в строку “Мне 16” – не получилось.
Может у вас получится?
(Решение вопроса очень нужное. Впереди будет программа
примерно на эту тему, только с двумя именами)



0



Hitoku

1754 / 1346 / 1407

Регистрация: 28.10.2016

Сообщений: 4,267

25.02.2018, 11:20

2

Не стоит забывать о том, что программа выполняется последовательно и строка ‘ лет ‘ покажется только после того, как Вы введёте значение переменной Vozrast

Как вариант, можно писать всю фразу “Мне 16 лет”, а потом выделять из неё число

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
uses Crt;
function Value(s: string): integer;
var i, v: integer;
begin
  delete(s, 1, pos(' ', s));
  val(copy(s, 1, pos(' ', s) - 1), v, i);
  Value := v;
end;
 
var Imaj, Vozrast: String;
begin
  ClrScr;
  WriteLn(' Здравствуй, я компьютер, а тебя как звать?');
  Write(' Меня зовут ');
  ReadLn(Imaj);
  WriteLn(' Очень приятно ', Imaj, ' . Сколько тебе лет? ');
  readln(Vozrast);
  WriteLn(' Ого! Целых ', Value(Vozrast), ' лет. Да ты совсем взрослый!');
  ReadLn
end.
Пример работы Здравствуй, я компьютер, а тебя как звать?
Меня зовут Петя
Очень приятно Петя . Сколько тебе лет?
Мне 16 лет
Ого! Целых 16 лет. Да ты совсем взрослый!



0



TAVulator

Эксперт по компьютерным сетямЭксперт Pascal/Delphi

4188 / 1289 / 237

Регистрация: 27.07.2009

Сообщений: 3,961

25.02.2018, 11:26

3

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
uses Crt;
Var Imaj: String;
     c:char;
       Vozrast,i: Integer;
begin
ClrScr;
   WriteLn(' Здравствуй, я компьютер, а тебя как звать?');
    Write(' Меня зовут  ');
        ReadLn(Imaj);
    WriteLn(' Очень приятно ' , Imaj, ' . Сколько тебе лет? ');
    Write(' Мне ');
    vozrast:=0;
    while c<>#13 do begin
     c:=readkey;
     if c in ['0'..'9'] then begin
      write(c);
      val(c,i);
      vozrast:=(vozrast*10)+i;
     end;
     {Read(Vozrast);}
     end;
 
     Writeln(' лет ');
     WriteLn(' Ого! Целых ' , Vozrast,  ' лет. Да ты совсем взрослый!');
    ReadLn
end.



0



Petro29

197 / 9 / 3

Регистрация: 30.04.2016

Сообщений: 733

15.04.2018, 18:51

 [ТС]

4

Строка; Мне 16 лет. А надо “16” поставить впереди “лет”.
А как это сделать? Вот была такая программа:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
uses Crt;
Var Imja: String;
       Vozrast: Integer;
begin
ClrScr;
  WriteLn(' Здравствуй, я компьютер, а тебя как зовут?');
   Write(' Меня зовут ');
       ReadLn(Imja);
  WriteLn(' Очень приятно  ',Imja,' . Сколько тебе лет?');
  Write(' Мне ');  Write('       лет');
       ReadLn(Vozrast);
  WriteLn(' Ого! Целых ' ,vozrast, ' лет. Да ты совсем взрослый! ');
    ReadLn
end.

На выходе имеем:

Pascal
1
2
3
4
5
Здравствуй, я компьютер, а тебя как зовут?
Меня зовут Петя
Очень приятно Петя. Сколько тебе лет?
Мне           лет 16
Ого! Целых 16 лет. Да ты чрвсем взрослый!

Был ответ, но он для слишком умных. С циклом while, да ещё такой
непонятный (а эта программа должна делаться задолго до циклов).
Вот фрагмент вышей программы:

Pascal
1
2
3
4
5
6
 while c < > #13 do begin
   c:= ReadKey;
if  c  < >  [' 0 ' .. ' 9 ']  then begin
    Write(c);
     Vozrast := (Vozrast * 10) + I;
end;

А выход не такой какой должен быть. Вот какой был выход:

Pascal
1
2
3
4
5
   Здравствуй, я компьютер, а тебя как зовут?
Меня зовут Петя
Очень приятно, Петя. Сколько тебе лет?
Мне 16 лет
Ого! Целых  0  лет. Да ты совсем взрослый!

Это что за – Целых 0 лет?



0



Constantin Cat

3405 / 1824 / 489

Регистрация: 28.02.2015

Сообщений: 3,699

17.04.2018, 10:32

5

Цитата
Сообщение от Petro29
Посмотреть сообщение

Был ответ, но он для слишком умных.

Ага.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
uses Crt;
Var Imaj: String;
    c:char;
    Vozrast: Integer;
begin
  ClrScr;
  WriteLn(' Здравствуй, я компьютер, а тебя как звать?');
  Write(' Меня зовут  ');
  ReadLn(Imaj);
  WriteLn(' Очень приятно ' , Imaj, ' . Сколько тебе лет? ');
  Write(' Мне ');
  Vozrast:=0;
  while c<>#13 do
    begin
      c:=readkey;
      if c in ['0'..'9'] then
        begin
          write(c);
          Vozrast:=(Vozrast*10)+ord(c)-ord('0');
        end;
    end;
  Writeln(' лет ');
  WriteLn(' Ого! Целых ' , Vozrast,  ' лет. Да ты совсем взрослый!');
  ReadLn
end.

Вы задали вопрос Диалог с компьютером – Turbo Pascal, все нормально компилируется и работает.

Миниатюры

Диалог с компьютером
 



0



Petro29

197 / 9 / 3

Регистрация: 30.04.2016

Сообщений: 733

29.04.2018, 16:03

 [ТС]

6

Ваш ответ на программу “Диалог с компьютером” выдал чётко работающую программу. Но уж очень она сложная.
Что за переменная с (типа Char), да ещё не равная #13 (что за 13 да ещё с решёткой). Да и с – в диапазоне от 0 до 9 – это что. И с возрастом совсем не понятно. Неужели попроще нельзя сделать?
Вот авторская программа из Самоучителя:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
uses Crt;
Var Imja: String;
       Vozrast: Integer;
begin
ClrScr;
  WriteLn(' Здравствуй, я компьютер, а тебя как зовут?');
   Write(' Меня зовут ');
       ReadLn(Imja);
   WriteLn(' Очень приятно ' , Imja ,  ' .  Сколько тебе лет?');
   Write(' Мне ');
       ReadLn(Vozrast);
   WriteLn(' лет ');
   WriteLn(' Ого! Целых  ' , Vozrast, '  лет. Да ты совсем взрослый!');
   ReadLn
end.

В авторской программе выход такой:

Pascal
1
2
3
4
5
Здравствуй, я компьютер, а тебя как зовут?
Меня зовут Петя
Очень приятно Петя. Сколько тебе лет?
16
Ого! Целых  16 лет. Да ты совсем взрослый!

В этой программе строку “16” попытался заменить развёрнутой строкой
“Мне 16 лет.”. Получил вот такой выход:

Pascal
1
2
3
4
5
6
Здравствуй, я компьютер, а тебя как зовут?
Меня зовут Петя
Очень приятно Петя. Сколько тебе лет?
Мне 16
лет
Ого! Целых  16 лет. Да ты совсем взрослый!

И из-за того, что строку “лет” поставить в строку “Мне 16 …”
требуется такая мудрёная программа?



0



Constantin Cat

3405 / 1824 / 489

Регистрация: 28.02.2015

Сообщений: 3,699

29.04.2018, 17:12

7

Лучший ответ Сообщение было отмечено ZX Spectrum-128 как решение

Решение

Petro29,
Это упрощенный алгоритм работы процедуры ReadLn, нет обработки клавиши DEL и затирания ранее введенного символа, и контроль введенного типа значений, ведется во время ввода, а не после ввода с сообщением об ошибке.

Pascal
13
14
15
16
17
18
19
20
21
  while c<>#13 do - пока не нажата клавиша ENTER
    begin
      c:=readkey; - считать код нажатой клавиши
      if c in ['0'..'9'] then - если это цифра, выводим её и считаем возвраст, иначе игнорируем нажатую клавишу
        begin
          write(c); - выводим
          Vozrast:=(Vozrast*10)+ord(c)-ord('0'); - считаем число возраста
        end;
    end;



0



197 / 9 / 3

Регистрация: 30.04.2016

Сообщений: 733

11.11.2018, 10:35

 [ТС]

8

Получен ответ на тему: Сделать цвет Пети красным
или зелёным в зависимости от кратности вводимого
числа семи.
Ответ от модератора bormant’a:
Программа чёткая и компактная. Работает как надо.
Ответ от модератора ZX Spectrum-128:
Программа расширенная и работающая. Только
пришлось её подкорректировать: поменял местами
строки:
TextColor(Red);
writeln(‘ Число кратно семи: “); – это чтобы
этот текст не окрашивался.
А так всё в порядке.



0



Petro29

197 / 9 / 3

Регистрация: 30.04.2016

Сообщений: 733

27.01.2019, 10:40

 [ТС]

9

Вот исходная программа:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
uses Crt;
Var Imja: String;
       Vozrast: Integer;
begin
ClrScr;
  WriteLn(' Здравствуй, я компьютер, а тебя как зовут?');
   Write(' Меня зовут ');
       ReadLn(Imja);
  WriteLn(' Очень приятно  ',Imja,' . Сколько тебе лет?');
  Write(' Мне ');  Write('       лет');
       ReadLn(Vozrast);
  WriteLn(' Ого! Целых ' ,vozrast, ' лет. Да ты совсем взрослый! ');
    ReadLn
end.

На выходе имеем:

Pascal
1
2
3
4
5
Здравствуй, я компьютер, а тебя как зовут?
Меня зовут Петя
Очень приятно Петя. Сколько тебе лет?
Мне           лет 16
Ого! Целых 16 лет. Да ты совсем взрослый!

Был ответ, но он слишком заумный. С циклом while, да ещё такой
непонятный. Вот фрагмент вашей программы:

Pascal
1
2
3
4
5
6
  while c < > #13 do begin
   c:= ReadKey;
if  c  < >  [' 0 ' .. ' 9 ']  then begin
    Write(c);
     Vozrast := (Vozrast * 10) + Ord© - Ord(0);
end;  end;

Уж очень заумная программа. Неужели нельзя проще в исходной
программе в строке на выходе «Мне 16 лет» поменять
местами «16 и лет»?



0



3405 / 1824 / 489

Регистрация: 28.02.2015

Сообщений: 3,699

28.01.2019, 15:54

10

Цитата
Сообщение от Petro29
Посмотреть сообщение

Уж очень заумная программа

Цитата
Сообщение от Petro29
Посмотреть сообщение

Неужели нельзя проще

Можно

Нажмите любую клавишу(press any key)

Что может быть проще, увидел клавишу нажал.

Для продолжения нажмите “Y”

Задача, сложнее, нужно найти клавишу “Y”

Для продолжения нажмите “Y”, иначе “N”

Совсем сложная задача, нужно найти, аж, две клавиши(т.к. остальные клавиши игнорируются), но кроме этого принять решение.

Вообще, заумная задача нажимать клавиши “0”..”9″, которые нужно ещё на клаве найти, и ещё думать нужно



0



Petro29

197 / 9 / 3

Регистрация: 30.04.2016

Сообщений: 733

10.05.2019, 20:19

 [ТС]

11

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
uses Crt;
Var Imja: String;
       Vozrast: Integer;
begin
ClrScr;
  WriteLn(' Здравствуй, я компьютер, а тебя как зовут?');
   Write(' Меня зовут ');
       ReadLn(Imja);
  WriteLn(' Очень приятно  ',Imja,' . Сколько тебе лет?');
  Write(' Мне ');  ReadLn(Vozrast); WriteLn(‘ лет ‘);
  WriteLn(' Ого! Целых ' ,vozrast, ' лет. Да ты совсем взрослый! ');
    ReadLn
end.

На выходе имеем:

Pascal
1
2
3
4
5
6
Здравствуй, я компьютер, а тебя как зовут?
Меня зовут Петя
Очень приятно Петя. Сколько тебе лет?
Мне  16
лет
Ого! Целых 16 лет. Да ты совсем взрослый!

Вы когда-то дали ответ с работающей программой. Но уж
больно она заумная. А ведь это упражнение из Самоучителя
и дано в начале курса, то есть для начинающих.
Неужели нельзя сделать проще эту программу так, чтобы
было «Мне 16 лет».
Был ещё один из ответов от TAVulator:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
uses Crt;
Var Imja: String;
       c: Char;
       Vozrast, iL Integer;
begin  ClrScr;
WriteLn(‘ Здравствуй мальчик, я Комп , а тебя как зовут?’);
   Write(‘ Меня зовут ‘);
          ReadLn(Imja);
WriteLn(‘ Очень приятно,,Imja,. Сколько тебе лет?’);
     Write(‘ Мне  ‘);
        Vozrast:= 0;
  while c <> #13 do begin
        c:= ReadKey;
        if c in [0..9] then begin
       Write©;
        Vozrast:= (Vozrast * 10) + i;
       end;
           {Read{Vozrast};}
         end;
WriteLn(‘  лет ‘);
WriteLn(‘ Ого! Целых ‘,Vozrast, ‘ лет. Да ты совсем взросдый’);
   ReadLn
end.

На выходе имеем:

Pascal
1
2
3
4
5
Здравствуй мальчик, я Комп., а тебя как зовут?
Меня зовут Петя
Очень приятно, Петя. Сколько тебе лет?
Мне 16 лет
Ого! Целых 0 лет. Да ты совсем взрослый!

И тоже не получилось.
Что это за «Ого! Целых 0 лет. Да ты совсем взрослый!
И опять же – сложная (опять решётки, массивы …).



0



ValentinNemo

2373 / 775 / 561

Регистрация: 15.01.2019

Сообщений: 2,394

11.05.2019, 05:04

12

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
program Privet;
uses crt;
Var
  Imja: String;
  Vozrast: Integer;
begin
  WriteLn(' Здравствуй, я компьютер, а тебя как зовут?');
   Write(' Меня зовут ');
       ReadLn(Imja);
  WriteLn(' Очень приятно  ',Imja,' . Сколько тебе лет?');
  Readln(Vozrast);
  gotoXY(1,whereY-1);
  delline;
  Writeln(' Мне ', vozrast,' лет ');
  WriteLn(' Ого! Целых ' ,vozrast, ' лет. Да ты совсем взрослый! ');
  Readln;
end.



0



Petro29

197 / 9 / 3

Регистрация: 30.04.2016

Сообщений: 733

02.06.2019, 10:49

 [ТС]

13

Получил ответ на программу от кота Бегемота.
Сделано по его ответу.

QBasic/QuickBASIC
1
2
3
4
5
CLS
   FOR I = 1 TO 2
INPUT “ Мальчик, как тебя зовут? “, A$
   NEXT i
IF A$=”” THEN PRINT “ Ввести имя” ELSE PRINT “ Привет “; A$: “ . Я  комр-ер”

На выходе имеем:

QBasic/QuickBASIC
1
2
3
Мальчик, как тебя зовут?
Мальчик, как тебя зовут?  Петя
Привет Петя. Я комп-ер

Ввёл цикл, получил две строки: “Мальчик, как тебя зовут?”
а можно и и три и четыре.
Что то не очень нравится такое решение. Да и строки
“Ввести имя” не стало. Ладно, другого видимо решения нет.
Но почему же книжная программа не предусмотрела
решения на случай, если сразу щёлкнули на ENTER,
забыв ввести имя.
А длинную строку пришлось переделать на пять коротких строк.



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

02.06.2019, 10:49

Помогаю со студенческими работами здесь

Диалог с компьютером
Создать программу-диалог человека с компьтером!
Пример:
Человек пишет:Привет
Компьютер отвечает:…

Диалог с компьютером
Всем привет!!! Только начинаю вникать в С++ и очень рад этому. Наконец то я начал(до этого каждый…

Диалог с компьютером
Срочно нужна помощь. В общем дело так, нужно создать диалог с компьютером, и все бы ничего, но…

Диалог с компьютером
Создать программу-диалог человека с компьтером!
Пример:
Человек пишет:Привет
Компьютер отвечает:…

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

13

Светило науки – 50 ответов – 1182 помощи

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

var a:string;
begin
writeln(‘Как тебя зовут ?’);
readln(a);
writeln(‘Привет ‘,a,’ !’);
writeln(‘Сколько тебе лет? ‘);
readln();
writeln(‘Какой у тебя любимый предмет в школе?’);
readln();
writeln(‘Какая у тебя любимая книга’);
readln();
end.

Если же,необходимо запомнить всю полученную информацию,тогда используем этот вариант:

var a,b,c,d:string;
begin
writeln(‘Как тебя зовут ?’);
readln(a);
writeln(‘Привет ‘,a,’ !’);
writeln(‘Сколько тебе лет? ‘);
readln(b);
writeln(‘Какой у тебя любимый предмет в школе ?’);
readln(c);
writeln(‘Какая у тебя любимая книга ?’);
readln(d);
write (‘Значит тебя зовут ‘,a ,’. Тебе ‘,b,’. Твой любимый предмет – ‘,c,’. И твоя любимая книга – ‘,d);
readln();
end.

Программа-диалог с компьютером для закрепления конструкции IF (условия).

Скачать:

Предварительный просмотр:

Чтобы пользоваться предварительным просмотром презентаций создайте себе аккаунт (учетную запись) Google и войдите в него: https://accounts.google.com

Подписи к слайдам:

Слайд 1

Реализация ди a лога с компьютером на языке высокого уровня P ascal ABC .Net с поддержкой сценариев. Вывод данных на консоль. Презентация Шитовой Софьи. 5Б. Руководитель проекта: учитель информатики Барбашев И.А.

Слайд 2

Эта презентация была создана с целью поведать о том, как я создавала программу на языке Pascal ABC. Я создала программу с помощью команд « if – then-else » Это означает условие. То есть «Если – тогда». Делать такие программы не очень сложно. В отличии от промышленных языков, Паскаль очень даже прост в использовании.

Слайд 3

Цель работы: создать компьютерную программу, обеспечивающую диалог с пользователем по различным сценариям.

Слайд 4

Задачи: 1. Изучить соответствующие темы (линейное программирование, программирование разветвляющихся алгоритмов, ввод данных с клавиатуры, вывод данных на консоль, использование переменных. 2. Написать программный код . Применить изученные технологии. 3. Продумать сценарий диалога. 4. Провести компиляцию (сборку и проверку работы программы). 5. Провести тестирование разработанной программы.

Слайд 5

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

Слайд 6

Гипотеза : возможно ли создать программу, которая будет вести диалог в зависимости от ответов пользователя?

Слайд 7

Скриншот кода:

Слайд 9

Гипотеза доказана. А на этом всё. Надеюсь, Вам было интересно это читать. Удачи 

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