Болталка PascalABC.NET

Для этого есть цикл while, в котором можно не только на 1 или -1 шагать.

2 лайка

Попёрло! image

Что и куда?

Верно, хотя у цикла For есть встроенная защита от случайного изменения параметра, что также бывает полезно.

Народ в паскаль.

БОльшая часть защит в программировании — это защита от дурака

Дуракам паскаль не писан.

А Питон?

Я вчера понял, откуда у Ван Россума взялась идея отступы делать. Он нагляделся на диаграммы Насси - Шнайдермана!

Хитрый Шнайдерман оказался Шнейдерманом. Ну тут ваще не похоже. Скорее, Ван Россум, судя по его гееграфическому положению, обкурился. Но мы не привыкли отступать - покажем питонистам едрёну нашу мать.

Возвращаясь к самому себе, настаиваю, что я имел в виду паскаль, а не Питон. А Питон - да, это клинический случай. Питонистам место рядом с Наполеоном, которому тоже пришлось спешно отступать.

original

Решил с дочкой позаниматься.

Написали небольшую программку.

PROGRAM prg(prg);
VAR C,D : STRING;
VAR A,B,P : INTEGER;

begin
  D:='N';
  WHILE D='N' DO
BEGIN
  READ(D); // В этом месте чтение с клавиатуры строки еще работает
  C:='Введите длину прямоугольника ';
  WRITE (C);
  READLN (A);
  C:='Введите высоту прямоугольника ';
  WRITE (C);
  READ (B);
  P:=(A+B)*2;
  C:='Периметр прямоугольника равен ';
  WRITE (C);
  WRITELN(P);
  C:='Завершить работу программы? N - Нет  Y - Да';
  WRITELN (C);
  READ(D); // Здесь уже не работает
  end;

END.

Screenshot_3

Напишите код так:

```
код
```

Знак ` находится в англ раскладке за Ё

А от скрина не лучше, код нужен чтоб тестировать.

А впрочем нет, всё понятно.

Допустим вот есть текст на вводе:

123\n
456

(\n это перенос строки) Когда вы прочитали число - вы забрали из ввода 3 цифры. Но там всё ещё остался перенос строки. Из за него, если дальше прочитать string - получите пустую строку, потому что её читает до конца строки.

Используйте Readln. Он, после прочтения значения, убирает из ввода все символы до переноса строки включительно.

 C:='Завершить работу программы? N - Нет  Y - Да';
  WRITELN (C);
  READLN(D); 

Поправил все равно не работает, пролетает мимо без опроса клавиатуры.

Вставляйте код в ```, глазам больно. И внимательно прочитайте моё объяснение, потому что вы вообще не то исправили.

Все заработало, Спасибо!!!

Заменил везде READ на READLN заработало.

Спасибо еще раз.

Старый код, неэффективное использование. Попробуйте все же воспользоваться выложенной на сайте литературой.

Было бы не плохо. Буду очень благодарен если скинете ссылку на литературу, что бы долго не искать.

Заходите на http://pascalabc.net и слева видите кнопку “Книги по PascalABC.NET”.

На главной странице вообще ещё полно интересного.

На официальном сайте есть целый раздел

Спасибо, за оказанную помощь!!!