Бруно Мартузан - Как Петя Бейсиков Тоню Соображалкину программировать учил стр 14.

Шрифт
Фон

5 PRINT "ПРОГРАММА ПРЕОБРАЗУЕТ ГРАДУСЫ"

6 PRINT "ФАРЕНГЕЙТА В ГРАДУСЫ ЦЕЛЬСИЯ"

7 PRINT "ВВЕДИТЕ ТЕМПЕРАТУРУ"

8 PRINT "В ГРАДУСАХ ФАРЕНГЕЙТА"

10 INPUT F

2 °C=(5/9)*(F-32)

25 PRINT "ЭТО БУДЕТ"

30 PRINT C

35 PRINT "ГРАДУСА ЦЕЛЬСИЯ"

40 END

Ну, посмотри, мучитель, на этот шедевр программирования!

Колоссально! Но надо посмотреть, как она работает. Запусти ее и задай перевести те же самые 50 градусов Фаренгейта.

RUNNH

ПРОГРАММА ПРЕОБРАЗУЕТ ГРАДУСЫ

ФАРЕНТЕЙТА В ГРАДУСЫ ЦЕЛЬСИЯ

ВВЕДИТЕ ТЕМПЕРАТУРУ

В ГРАДУСАХ ЦЕЛЬСИЯ

? -50

ЭТО БУДЕТ

-45.5556

ГРАДУСА ЦЕЛЬСИЯ

READY

Результат тот же самый, следовательно, ты, по крайней мере, ничего не испортила. Ну и как, красивей сейчас выводятся результаты?

ТОНЯ ЕЩЁ УЛУЧШАЕТ ВЫВОД

Почему же. Ты можешь вставить просто PRINT без ничего, и выведется пустая строка.

Ясненько Но подожди! Я там ничего не могу втиснуть между строками с номерами 6 и 7. Так что же делать? Все заново вводить с другими номерами?

ПЕРЕНУМЕРАЦИЯ

Разумеется, нет. В таких случаях нужно применять директиву RESEQ. Я это слово произношу «рисек», и, по-моему, оно является сокращением от английского слова resequence, что должно означать «заново упорядочить последовательность». В словаре я этого слова не нашел, хотя искал. Так вот, эта директива вызывает перенумерацию всех строк программы, начиная с первой, с шагом десять 10, 20, 30 и до конца.

Интересно было бы попробовать.

RESEQ

LISTNH

10 PRINT "ПРОГРАММА ПРЕОБРАЗУЕТ ГРАДУСЫ"

20 PRINT "ФАРЕНГЕЙТА В ГРАДУСЫ ЦЕЛЬСИЯ"

30 PRINT "ВВЕДИТЕ ТЕМПЕРАТУРУ"

40 PRINT "В ГРАДУСАХ ФАРЕНГЕЙТА"

50 INPUT F

6 °C=(5/9)*(F-32)

70 PRINT "ЭТО БУДЕТ"

80 PRINT C

90 PRINT "ГРАДУСА ЦЕЛЬСИЯ"

100 END

Да, кое-что из твоих обещаний выполняется. А скажи мне вот что. Я хотела, чтобы у меня получилось красиво в одну строку: ЭТО БУДЕТ 45.5556 ГРАДУСА ЦЕЛЬСИЯ, а все напечаталось в три строки. Можно что-нибудь сделать?

Без сомнений. Во-первых, одним и тем же оператором ты можешь выводить строки символов и числа, так что смело могла писать PRINT «ЭТО БУДЕТ»,С.

Понятно. И через запятую «ГРАДУСА ЦЕЛЬСИЯ».

Опять спешишь. Дело вот в чем. Если оператор PRINT имеет список единиц вывода, в котором они, как и в этом примере, написаны через запятую, то происходит вот что: строка экрана разделяется на зоны длиной 14 знаков. И в каждой зоне появляется значение одной единицы вывода. Или в нескольких если одной не хватает. Надеюсь, ты понимаешь, что значения числовых переменных всегда разместятся в одной зоне и только сообщения программы

ЗОНА ВЫВОДА

Надейся, надейся.

Вывод размещается в левой части зоны, и если он короче 14 знаков, то правая часть зоны остается пустой. Помнишь, в первой твоей программе при выводе значений переменных А,В,С между ними получилось довольно большое расстояние?

Да! Я еще удивилась, но спрашивать не стала.

Если отделять запятыми, то у тебя получится много пустого места между числом 45.5556 и текстом ГРАДУСА ЦЕЛЬСИЯ. Этого легко избежать: единицы вывода нужно отделять не запятыми, а точкой с запятой, тогда их значения будут выводиться сплошной стеной, одно за другим.

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

Только учти, что никаких пробелов между единицами вывода машина сама вставлять не будет, ты сама должна нужные пробелы спланировать и запрограммировать. На сей раз ты должна предусмотреть пробел после ЭТО БУДЕТ, так же как и перед ГРАДУСА ЦЕЛЬСИЯ.

Очень уж хлопотно, но я попробую.

70 PRINT "ЭТО БУДЕТ";C;" ГРАДУСА ЦЕЛЬСИЯ"

Можно пускать?

Нет, нельзя. Хотя пускай, посмотрим, что получится.

RUNNH

ПРОГРАММА ПРЕОБРАЗУЕТ ГРАДУСЫ

ФАРЕНТЕЙТА В ГРАДУСЫ ЦЕЛЬСИЯ

ВВЕДИТЕ ТЕМПЕРАТУРУ

В ГРАДУСАХ ЦЕЛЬСИЯ

? -50

ЭТО БУДЕТ -45/5556 ГРАДУСА ЦЕЛЬСИЯ

-45.5556

ГРАДУСА ЦЕЛЬСИЯ

Ерунда какая-то Лишнее что-то вывела

ОПЯТЬ ОШИБКА!

Пожалуйста!

LISTNH 7090

70 PRINT "ЭТО БУДЕТ";C;" ГРАДУСА ЦЕЛЬСИЯ"

80 PRINT C

90 PRINT "ГРАДУСА ЦЕЛЬСИЯ"

Посмотри внимательно. Оператор вывода в строке 70 выведет тебе все, что нужно. А операторы в строках 80 и 90? Добавят еще вывод. Совершенно лишний и ненужный. Эти строки надо убрать. Ах да! Я же еще не сказал, как это делают. Просто набираешь номер строки и нажимаешь клавишу ввода. Строка стирается. Нельзя только ошибиться, а то не ровен час сотрешь самую свою любимую и нужную строку.

Хорошо, я это буду делать чрез-вы-чай-но осторожно.

80

90

Все в порядке. Я запускаю.

ПРОГРАММИСТЫ И ИХ ОШИБКИ

Насчет отношения программистов к ошибкам не берусь судить, но хочу возразить по существу рассматриваемого вопроса. Почему программу не запустить? Будет работать правильно хорошо, а если неправильно, тогда и начну думать, что и как. Неправильная программа же машину не испортит.

Размышление наилучшее средство против ошибок в программах

Разумеется, нет. Но речь не о том. Важно, сколько времени ты потратишь и своего, и машинного. Могу открыть секрет машинное

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

Ваша оценка очень важна

0
Шрифт
Фон

Помогите Вашим друзьям узнать о библиотеке