Турбо-Паскаль 7.0
Необходимые сведения о компьютере и программе. Командный и программный режимы программы "Турбо-Паскаль 7.0". Простые, линейные программы. Операторы ввода-вывода. Запись арифметических выражений. Стандартный модуль Graph, текстовый и графический режимы.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | учебное пособие |
Язык | русский |
Дата добавления | 13.10.2012 |
Размер файла | 1,5 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Работа с несколькими окнами.
Выполните, пожалуйста, FileNew. Еще раз FileNew и еще. У вас на экране появился каскад из нескольких окон. В каждом из них вы можете писать независимую программу, независимо выполнять ее и сохранять на диске. Листаем окна клавишей F6.
В обычной практике программиста несколько окон появляются на экране не в результате FileNew, а в результате FileOpen, когда программисту нужно или сравнить работу нескольких старых программ или скопировать часть текста из одной программы в другую.
То окно, в котором вы щелкнули мышкой, становится активным. Его легко отличить по двойной рамочке и по тому, что оно ближе к вам, чем остальные окна, и загораживает их. Остальные окна имеют одинарную рамочку. Когда вы запускаете программу на выполнение, то выполняться будет всегда программа из активного окна (Если только у вас не указан какой-нибудь файл в опции CompilePrimary file. Если указан, то выберите CompileClear primary file).
Чтобы «достать» окна, загороженные другими, используйте мышку или F6.
Действия с одним окном:
Каждое окно можно таскать по экрану, ухватившись мышкой за заголовок (это значит - поставить мышку на верхнюю грань окна, где записан заголовок, нажать левую кнопку мыши и не отпуская ее, таскать мышь по экрану).
Можно изменять размеры окна, таская его правый нижний угол.
Можно распахивать окно на весь экран и снова уменьшать клавишей F5 или щелчком мыши по стрелке в правом верхнем углу окна.
Можно уничтожить окно клавишами Alt-F3 или щелчком мыши по кнопке в левом верхнем углу окна.
Прокручивать текст в окне можно при помощи полос прокрутки на правой и нижней грани окна.
У начинающего программиста наличие нескольких окон на экране создает впечатление беспорядка. Не поддавайтесь соблазну уничтожать «лишние» окна. Они наверняка вам понадобятся чуть позже, а наводить порядок вы со временем научитесь.
Копирование и перемещение фрагментов текста
Часто в программах попадаются одинаковые или почти одинаковые фрагменты. Чем переписывать их заново, быстрее скопировать.
Поставьте мышку на первую букву копируемого фрагмента, нажмите левую клавишу мыши и, не отпуская ее, ведите мышь на конец копируемого фрагмента. Фрагмент будет выделен подсветкой. Если в процессе ваша рука дрогнет, то на экране будут происходить страшные вещи. Сохраняйте хладнокровие и ни за что не отпускайте клавишу мыши. Когда вы доведете ее до последней буквы фрагмента, все уляжется. Можете отпускать мышь. Выделенный же фрагмент Паскаль умеет перемещать и копировать в другое место. Следующим образом:
Перемещение: Дайте команду EditCut - фрагмент исчез. Паскаль запомнил его в специальном месте памяти, которое называется буфер обмена или временный буфер. Теперь поставьте мигающий курсор текстового редактора в нужное место (для этого достаточно щелкнуть там мышкой). Теперь EditPaste - то, что было в буфере обмена, переносится на место курсора.
Копирование: Дайте команду EditCopy - фрагмент не исчез. Остальное - аналогично перемещению.
Если у вас на экране несколько окон, то вы точно так же можете копировать фрагменты из одного окна в другое.
Обзор популярных команд меню
Часто бывает так, что свои программы вы храните в одном каталоге, а при нажатии FileOpen или FileSave Паскаль предлагает совсем другой каталог, за тридевять земель от нужного, что неудобно. FileChange dir… дает вам возможность самому задать предлагаемый каталог. Делайте двойные щелчки по именам каталогов на дереве каталогов, пока не доберетесь до нужного.
Если вы при вводе программы сделали какую-то глупость и в окне редактора ВСЕ ОЧЕНЬ ПЛОХО!!! - не паникуйте - ничего не пропало! EditUndo означает последовательную отмену ваших действий. А EditRedo означает последовательный возврат ваших отмененных действий.
Установите флажок (крестик) в OptionsCompiler…Compiler OptionsRuntime Errors Range Checking для того, чтобы Паскаль во время выполнения программы проверял, не вышли ли значения переменных и индексы, используемые в вашей программе, за указанные в разделе описаний пределы. Одно замечание: режим проверки включается не в тот момент, когда вы установили флажок, а тогда, когда после установки флажка вы компилируете программу. А если она была уже раньше откомпилирована и больше не хочет (так как не изменялась с тех пор)? Тогда измените ее как-нибудь - например, вставьте куда-нибудь ничего не значащий пробел и запустите на выполнение. Теперь ей придется перед выполнением подвергнуться компиляции.
Если при запуске программы, обращающейся к стандартным модулям, Паскаль жалуется, что не может найти модуль (File not found (GRAPH.TPU)), то проверьте, что записано в Options Directories… Unit directories. Там должна быть указана дорожка к файлам стандартных модулей и в том числе - к модулю GRAPH.TPU. Они обычно размещены в каталоге Units главного каталога Паскаля.
Если вы недовольны тем, что на экране умещается только 25 строк программного текста, воспользуйтесь OptionsEnvironmentPreferencesScreen Sizes
Если вам не нравятся цвета, предлагаемые средой Паскаля, то воспользуйтесь Options Environment Colors. Правда, для этого нужно знать английские термины для элементов оформления этой среды.
Если у вас на экране мешанина окон и вы хотите навести среди них порядок, воспользуйтесь Window Cascade или Window Tile. Список имен всех окон на экране вы найдете в Window List….
Если вы знаете английский язык, то можете воспользоваться системой помощи Help. Если вы хотите узнать поподробнее о каком-нибудь операторе или другом слове из своей программы, являющимся стандартным для Паскаля, поставьте на него мигающий курсор и нажмите Ctrl-F1. В открывшемся окне вы можете найти ссылку Sample Code, что означает пример программы с использованием интересующего вас слова. Вы можете этот пример скопировать оттуда обычным образом в окно редактора и выполнить его.
Создание исполнимых файлов (exe)
Ваши паскалевские программы могут работать только «из-под» Паскаля. Это значит, что если вы запишете свою любимую программу на компьютер, где Паскаля нет, то там вы ее запустить не сможете. Чтобы все-таки быть запущенной и без Паскаля, программа должна быть вами заранее откомпилирована и записана на диск с расширением exe (то есть стать «экзешным» файлом или, как еще говорят, - «экзешником»). Я приношу свои извинения за жаргон. Но что делать, если он широко распространен среди программистов. В конце концов, многие общепринятые слова раньше были жаргоном.
Сделать это просто: Compile - затем убедитесь, что в выпавшем меню опция Destination (куда записать откомпилированную программу) находится в положении Disk, а не Memory (оперативная память). Если это не так, то щелкните по этой опции. Теперь все в порядке. Снова Compile Compile и все - ваш файл с расширением exe находится на диске, в том же каталоге и с тем же именем, что и исходный файл с расширением pas.
Если ваша программа использует модуль Graph, то одного «экзешного» файла недостаточно. Для того, чтобы он запустился на чужом компьютере, там, в одном каталоге с ним, должны находиться файл графического драйвера egavga.bgi (или сga.bgi, если у вас видеоадаптер CGA) и все используемые вами векторные шрифты (файлы с расширением chr). Скопируйте их из каталога BGI главного каталога Паскаля.
Приложения. Справочный материал
П1. Как вводить программу в компьютер или работа с текстом в текстовом редакторе
Ввод вашей программы в компьютер производится при помощи специальной программы, которая называется текстовым редактором и входит в состав Паскаля. Паскалевская программа - это обычный текст, поэтому нам достаточно освоить работу с текстом в текстовом редакторе.
Работа с одной строкой текста
Когда мы начинаем работать в текстовом редакторе, перед нами обычно - пустой экран, по краям которого могут располагаться различные меню и "письменные принадлежности". На них мы внимания пока не обращаем. Пустое пространство экрана - наш лист, и на нем мы будем писать.
Я бы не хотел, чтобы мы учились вводить сразу же текст программы. Эффективнее учиться на специально подобранных маленьких текстах. А чтобы знать, как реагировать на неожиданности, нужно перед тем, как начать нажимать клавиши, проглядеть не очень внимательно дальнейший материал вплоть до «Работы с несколькими строками».
Ввод строки. Пусть мы хотим ввести строчку "юный пионер Коля любит Bubble Gum". Первая клавиша, по которой мы должны щелкнуть, - русская буква "ю". Но где она появится на экране? - В том месте, где сейчас мигает курсор (см.4.4). А в начале работы редактора он должен мигать в левом верхнем углу.
Щелкаем по клавише "ю" - и на экране на месте курсора возникает буква "ю", а сам курсор перемещается чуть вправо, там потом возникнет следующая буква. (Если получилась не буква "ю", а точка, значит прочитайте чуть ниже про английские и русские буквы. Если буква получилась заглавной, почитайте про заглавные буквы.) Вот какая получается картина - "ю_". По клавише именно щелкаем, «клюем» ее, а не нажимаем, потому что компьютер настроен так, что если мы задерживаем палец на клавише дольше некоторой доли секунды, он считает, что нажатий было не одно, а два, еще подольше - три, и так далее, а это значит, что на экране мы увидим "ююююююююю_". Поэтому в дальнейшем изложении, когда я говорю «Нажмите клавишу», я буду иметь в виду «Щелкните по клавише» за исключением специально оговоренных случаев.
Получив на экране "ю", щелкнем по "н". На экране видим "юн_". И так далее, пока на экране мы не получим "юный_".
Если мы в процессе работы случайно нажали на клавишу не с той буквой, то щелкнем по клавише BackSpace. Она стирает последнюю введенную букву. Эта клавиша имеет еще маркировку BS или.
После ввода слова "юный" нужно ввести пробел перед следующим словом. Для этого щелкните по самой длинной горизонтальной клавише. Затем аналогично вводите слово "пионер", пробел и так далее до слова "Коля".
Заглавные буквы. Чтобы буква "к" в слове "Коля" получилась заглавной, нужно нажать на клавишу Shift и держать ее нажатой. Смело держите ее нажатой сколько угодно - ничего плохого от этого не произойдет. Затем, удерживая ее нажатой, щелкните по букве "к" - она получится заглавной. Теперь отпустите Shift. Можно работать дальше со строчными буквами. Иногда клавиша Shift имеет маркировку ?.
Ненароком в процессе работы вы можете нажать клавишу CapsLock и не заметить этого. После этого при нажатии на любую буквенную клавишу вы получите заглавную букву вместо строчной. При этом в правом верхнем углу клавиатуры горит индикатор CapsLock. Еще раз нажмите на CapsLock и все вернется на свои места.
Английские и русские буквы. Вот вы дошли до английского слова "Bubble Gum". Как его набрать? Вы уже заметили, что обычно на большинстве клавиш букв две - сверху английская, снизу русская. Предположим, до сих пор у вас при нажатии на клавишу всегда выходила русская буква. Говорят, что вы работали в русском регистре. Если вы нажмете определенную специальную клавишу или пару специальных клавиш, то теперь при нажатии на любую буквенную клавишу у вас будут получаться английские буквы, пока вы снова не нажмете на эти самые или, возможно, на другие специальные клавиши, чтобы вернуться к русским буквам.
Управляет процессом ввода информации с клавиатуры специальная программа, называемая драйвером клавиатуры. Драйверы бывают разные и от них зависит, какие именно специальные клавиши нужно нажимать для переключения из русского регистра в английский и обратно. Если вы предварительно не узнали, какие это клавиши, то попробуйте такие сочетания:
Shift + Shift На клавиатуре имеется две клавиши Shift. Имеется в виду, что удерживая нажатой одну клавишу Shift вам нужно щелкнуть по другой.
Ctrl Клавиш Ctrl тоже две. Обычно имеется в виду правая. Иногда правая переключает в один язык, левая - в другой.
Ctrl + Shift Попробуйте разные сочетания. Иногда правая пара клавиш переводит клавиатуру в английский регистр, а левая - в русский.
Alt + Shift Попробуйте разные сочетания.
Если ничего из вышеназванного не подойдет, попробуйте любые сочетания клавиш Ctrl, Alt, Shift.
Если и это не поможет, то попробуйте узнать, а запущен ли у вас драйвер клавиатуры.
Знаки препинания. Вы набрали все предложение. Теперь вам самое время поставить точку, а мне поговорить о знаках препинания. В отличие от букв, их на клавиатуре не сразу и найдешь. Над буквами вы увидите горизонтальный ряд клавиш с цифрами от 0 до 9. На эти же клавиши нанесены и многие знаки препинания. Вы их сможете получить при нажатой клавише Shift. Однако многие драйверы клавиатуры получают их совсем не там, где они нанесены краской на клавиши. Например, точка обычно живет на клавише "?" рядом с правой клавишей Shift, а запятая - на ней же с нажатой Shift. Попозже поэкспериментируйте. Понажимайте все подозрительные клавиши просто так или при нажатой Shift. Но не сейчас. Сейчас нам нужно идти дальше.
Удаление букв из текста. Вот вы напечатали всю строку "юный пионер Коля любит Bubble Gum". Теперь попробуем удалить слово "пионер". Для этого нам нужно уметь перемещать курсор. Для перемещения курсора служат четыре клавиши внизу клавиатуры: . В нашем случае будут работать только первые две. Попробуйте, как они работают. Затем поставьте курсор на пробел между словом "пионер" и словом "Коля". Мы уже начинаем привыкать, что если нажать какую-нибудь клавишу, то что-то произойдет именно в том месте, где курсор. Чтобы стереть по очереди все буквы слова "пионер", несколько раз нажмите на клавишу BackSpace. Обратите внимание, что буквы слова "пионер" слева от курсора исчезают по одной, текст справа от курсора смыкается налево, так что пустого пространства на месте слова "пионер" не остается. У вас должно получиться "юный Коля любит Bubble Gum".
Для стирания символов существует еще одна клавиша - Delete. Иногда она имеет маркировку Del. Давайте сотрем слово "любит". Поставим курсор на пробел между словом "Коля" и словом "любит". Нажмем несколько раз на Delete. Слово любит "стерлось", а текст справа от курсора снова сомкнулся налево.
Таким образом, клавиша BackSpace стирает символ слева от курсора а клавиша Delete - тот, на котором стоит курсор. В обоих случаях текст справа от курсора смыкается налево на место курсора.
Вставка букв в текст. Теперь у нас на экране строка "юный Коля Bubble Gum". Давайте вставим перед словом "Коля" слово "бойскаут". Для этого поставим курсор на букву "К" в слове "Коля". После этого напечатаем слово "бойскаут" и пробел. Мы увидим, что буквы слова "бойскаут" появляются на месте курсора, "Коля" вместе с "Bubble Gum" ушли направо и мы достигли поставленной цели. Теперь у нас на экране строка "юный бойскаут Коля Bubble Gum".
Этот способ работы текстового редактора, когда вставляемый текст отодвигает вправо остальной текст, называется режимом вставки. Если вы нажмете на клавишу Insert, иногда маркируемую Ins, то перейдете в режим замещения, когда текст не будет отодвигаться, а "бойскаут" сотрет "Колю". Чтобы вернуться в режим вставки, еще раз нажмите на Insert.
Работа с несколькими строками
Ваша задача - ввести такой текст из нескольких строк:
В небе
Облака из серой ваты
Сыровато-сероваты,
Не беда - ведь я привык.
В луже
Эта вата намокает
И волнуясь пробегает
Под водою мой двойник.
Чтобы знать, как реагировать на неожиданности, нужно перед тем, как начать нажимать клавиши, проглядеть не очень внимательно дальнейший материал вплоть до конца приложения П1.
Ввод нескольких строк. Как сделать так, чтобы, введя слова «в небе», следующие слова начать с новой строки? Для этого нужно нажать клавишу Enter, по-другому Return, по-другому «Клавиша ввода». Курсор перепрыгнет в начало следующей строки. Введя вторую строку, снова нажмите на клавишу ввода и так далее. Нажатие клавиши ввода - единственный способ в текстовом редакторе Паскаля начать следующую строку. Клавиша перемещения курсора здесь не поможет.
А теперь введите все восемь строк задания.
Перемещение курсора по экрану. При помощи четырех клавиш перемещения курсора потренируйтесь перемещать курсор куда только можно. Вы скоро обнаружите, что курсор можно свободно перемещать только там, где имеется текст. Ни правее, ни ниже введенного текста курсор переместить не удается. Поначалу вам это может показаться непривычно и неприятно, и вы захотите расширить поле действия курсора. Удовлетворить вашу прихоть довольно легко.
Введенным текстом считаются не только буквы, но и пробелы. Доведите курсор до правого края строки и нажмите несколько раз на пробел. У вас в этой строке образовалось пустое поле, по которому свободно может ходить курсор. Так вы можете сделать во всех строках.
А если вы хотите переместить курсор ниже текста? Подведя курсор в правый край самой нижней строки, нажмите на клавишу ввода несколько раз. У вас ниже текста образовалось несколько пустых строк, по которым вверх-вниз может свободно ходить курсор. Все эти строки вы можете, если уж вам так хочется, заполнить пробелами. Вот у вас и получится ниже текста спортплощадка для курсора.
Я назвал это прихотью, так как при вводе текста это никогда не бывает нужно. Но то, что вы сейчас проделали, вам полезно для свободной ориентации на листе.
Собственно работа с несколькими строками.
А теперь вам полезно выполнить несколько заданий.
Чтобы вставить пустые строки между строчкой «Не беда - ведь я привык.» и строчкой «В луже», поставьте курсор в конец первой из этих строк или в начало второй и несколько раз нажмите клавишу ввода.
А как теперь убрать эти пустые строки? Поставьте курсор в начало самой верхней из пустых строк и несколько раз нажмите Delete.
Как разделить строку на две части? Например, вместо «Не беда - ведь я привык.» нужно получить
Не беда -
ведь я привык.
Поставьте курсор на букву "в" и нажмите клавишу ввода.
А как слить эти две строки? Поставьте курсор в правый конец верхней из этих строк и нажмите Delete один или несколько раз, пока строки не сольются.
Невидимые символы. Все эти правила могут показаться запутанными и не имеющими внутренней логики. А логика есть. И если вы ее поймете, то и правил запоминать не нужно. Вот она:
Нажатие на клавишу ввода вызывает появление на экране в том месте, где был перед нажатием курсор, специального невидимого символа, точно так же, как нажатие на клавишу пробела вызывает появление невидимого символа - пустого места. Обозначим для удобства символ клавиши ввода - .
Рассмотрим с новой точки зрения действие различных клавиш:
Нажатие на любую буквенную клавишу или пробел вызывает вставку в текст на место курсора соответствующей буквы или пробела, а вся правая часть текста сдвигается вправо.
Нажатие на клавишу ввода вызывает перемещение вниз на одну строку всего текста, начиная от курсора правее и ниже, причем правая часть текста в строке, где был курсор, перемещается не только вниз, но и в начало следующей строки. Отсюда видно, что в текстовом редакторе Паскаля строка кончается обязательно символом . Это не относится к тем текстовым редакторам, которые переводят строку автоматически. Кроме как в конце строки, символ нигде встречаться не может.
Клавиша Delete стирает любой символ, на котором стоит курсор, будь то буква, пробел или . Стирание символа уничтожает не только сам символ, но и его действие. Поэтому, стерев , мы выполняем действие, обратное действию клавиши ввода, то есть нижние строки поднимаются, а ближайшая нижняя сливается с текущей.
Аналогично действует клавиша BackSpace.
Экран - окно на лист с текстом. Когда вы вводите большой текст, то в конце концов доходите до нижнего края экрана. Продолжайте работать как ни в чем не бывало. Нажав в очередной раз на клавишу ввода, вы обнаруживаете, что весь текст на экране ушел немного вверх. Оказывается, экран - это не лист с текстом, а всего лишь окно на этот большой лист. Упираясь курсором в край экрана, вы можете двигаться в нужном направлении. В паскалевском текстовом редакторе то же самое происходит, когда слишком далеко продолжаешь строку вправо - текст уходит влево.
Впечатление такое, что имеется большой неподвижный лист с текстом, а экран монитора является небольшим подвижным окном, через которое вы можете видеть этот лист. Движением окна можно управлять с клавиатуры или мышкой щелкая по полосам прокрутки.
П2. Файловая система магнитного диска
Здесь мы разберем структуру хранения информации на жестких дисках и дискетах. Магнитный диск - вместительное хранилище, на котором вы храните самые разные объекты: и программы, и тексты, и картинки, и музыку, и даже небольшие видеофильмы. Каждый из этих объектов, хранящихся на диске, принято называть файлом.
У каждого файла должно быть имя, например, Sveta25. Файлы появляются на диске двумя способами: или вы их переписываете на диск из другого места и тогда у них уже есть имя, или вы сами создаете файл и тогда имя ему придумываете.
Обычно на жестком диске хранятся сотни и тысячи файлов. Просмотр содержимого диска - операция, которую вы выполняете очень часто, и поэтому многие программы, включая Паскаль, позволяют вам это делать. При этом вы всегда видите на мониторе список имен файлов.
Обычно вам нужно найти среди них какой-то один, чтобы начать с ним работать. Но когда в списке тысяча файлов, найти среди них что-то довольно затруднительно. Нужно навести среди файлов какой-то порядок, какую-то систему.
Вспомните, как вы храните свои вещи в шкафу. На одной полке у вас книги, на другой - тетради и т.д. Но этого мало. Полка с книгами у вас разделяется на отделения: в одном - учебники, в другом - фантастика. Если нужно, то некоторые отделения можно разбить помельче, например, фантастика про космос, фантастика про роботов и т.д.
Для чего вам все эти отделения? Для того, чтобы легче было искать нужный предмет. На диске принята та же система. Только все эти полки и отделения называются одним термином - каталог. В современных компьютерах, работающих под управлением операционных систем (ОС) Windows 95, Windows 98 и Windows NT, вместо термина «каталог» употребляется термин папка, а многие файлы называются документами.
Каталоги, как и файлы, вы или создаете на диске сами или переписываете откуда-нибудь. Каждый каталог тоже имеет имя.
Имена файлов и каталогов
Имена файлам и каталогам можно придумывать произвольные, но с некоторыми ограничениями. Ограничения зависят прежде всего от ОС, управляющей компьютером. ОС MS-DOS - самая строгая. Она требует, чтобы имя файла или каталога было не длиннее 8 символов и состояло из латинских букв, цифр, еще кое-каких символов и не содержало пробелов. Windows 95 и Windows NT добрее - имя может быть длиной до 255 символов и содержать пробелы. А если две эти ОС русифицированы, то есть приспособлены для России, то имена могут быть и русскими.
Сегодня в России используются все три упомянутые ОС. Если ваш компьютер работает под управлением русифицированой Windows 95 и вы назвали файл Это фото Рыжика, то с вашим файлом могут быть проблемы на компьютере, работающем под управлением нерусифицированой Windows 95 и тем более MS-DOS. А вот если бы вы назвали файл Red_Cat, то проблем бы не было.
Ограничения зависят также и от самой программы. Многие программы (в том числе Турбо-Паскаль 7.0) были созданы для работы под управлением MS-DOS и поэтому строги к именам, даже работая под Windows 95 или Windows NT.
Имя многих файлов имеет справа добавку, состоящую из точки и справа от нее одного, двух или трех символов. Эта «фамилия» называется расширением. Например, файл, в котором вы описываете, как Ира печет булки, вы могли бы назвать Bulki.Ira.
Расширение может автоматически и незаметно для вас приписываться к имени файла программой, в которой вы работаете. Так, если вы в Паскале написали программу и решили записать ее на диск под именем Train, то на самом деле файл этой программы на диске будет иметь имя Train.pas. По расширению программа узнает «свои» файлы, а опытные пользователи узнают, в какой программе файл был создан. И наконец, расширения у файла может и не быть.
Пример структуры каталогов на диске
Пусть вы решили на одной из своих дискет создать хранилище информации, а именно:
Игры
Ваши программы на Паскале
Переписка с друзьями
Для этого на пустой дискете вы создали три каталога:
Games
Pascal
Letters
В каталоге Games у вас будут храниться файлы, представляющие собой программы игр: tetris.exe, arcanoid.com, cat.exe.
Программы на Паскале вы решили разделить на три категории:
Программы для рисования
Музыкальные программы
Все остальные
Для этого внутри каталога Pascal вы создаете три каталога:
Graph
Music
Other
Внутри каталога Graph у вас могут находиться, например, такие файлы: train.pas, ball.pas.
У вас есть два друга, Игорь и Эдик. Вы пишете друг другу письма, созданные в текстовых редакторах ваших компьютеров. Свою переписку вы храните на дискетах. Поэтому внутри каталога Letters вы создаете два каталога:
Igor (для переписки с Игорем)
Ed (для переписки с Эдиком)
Чтобы отличить письма от Игоря от писем к Игорю, вы создаете внутри каталога Igor два каталога:
In (для писем от Игоря)
Out (для писем к Игорю)
Такие же два каталога вы создаете внутри каталога Ed. Внутри каталога In каталога Ed могут находиться, например, файлы 25may97.txt и 03june97.txt.
Вот структура каталогов на вашей дискете, представленная наглядно в виде дерева
Действительно, эта картинка похожа на лежащее дерево. Слева корень, справа самые тонкие веточки. Листья (файлы) на дереве обычно не изображают, так как их слишком много.
Самый левый каталог (в нем находятся каталоги Games, Pascal, Letters, а сам он ни в какие каталоги не входит) называется корневым каталогом диска или корнем. Если каталог (например, Music) входит внутрь другого каталога (Pascal), то он называется подкаталогом этого каталога. В этом случае Pascal называют также его родительским каталогом.
Логические диски. Путь (дорожка) к файлу
Многие программы позволяют вам создавать, удалять и переименовывать файлы и каталоги, копировать и переносить их из любого каталога в любой другой и обратно, с жесткого диска на дискету и обратно. Самые известные из таких программ - Windows и Norton Commander.
В процессе общения с этими программами вам приходится объяснять им, где, в каком каталоге находится такой-то файл или каталог, и самим понимать их объяснения. Например, вам нужно понимать, что значит запись B:\Letters\Ed\In\25may97.txt. Для этого сначала разберем, что такое логические диски.
Пусть на вашем компьютере есть дисковод для трехдюймовых дисков, дисковод для пятидюймовых дисков и дисковод для компакт-дисков. Компьютер именует все эти дисководы буквами латинского алфавита. Дисководы для дискет должны иметь имена А и В. Пусть у вас пятидюймовый дисковод имеет имя А, трехдюймовый - В. Жесткий диск почти всегда имеет имя С. Однако, у многих жестких дисков имеется странность, доставшаяся им, как аппендицит, от старых версий ОС. Эта странность состоит в том, что винчестер делится на несколько независимых участков. Каждый участок называется логическим диском. Эти логические диски получают имена С, D, Е и т. д. ОС предлагает нам пользоваться этими логическими дисками, как независимыми винчестерами. Что ж, в принципе, нам все равно, пользователь может даже и не знать, что у него на компьютере не несколько жестких дисков, а один. Компакт-диск тоже получает одну из букв. Итак, как же понимать запись B:\Letters\Ed\In\25may97.txt? Она означает, что файл с именем 25may97.txt находится в каталоге In, который находится в каталоге Ed, который находится в каталоге Letters, который находится в корневом каталоге дискеты, вставленной в трехдюймовый дисковод. Эта запись называется путем или дорожкой к файлу 25may97.txt.
Эта запись довольно длинная и скучная. Ведь не пишете же вы на письме такой адрес: Планета Земля, Россия, г.Пенза, ул.Паскаля, д.1, кв.3, Попову А.А. Довольно часто компьютер «чувствует», что вы работаете в некотором каталоге, и в этом случае вам достаточно указать ему только имя файла.
П3. Список некоторых операций, процедур и функций Паскаля
Приведу список большинства пройденных нами операций и стандартных процедур и функций с указанием типа их параметров (или по-другому - аргументов и результата)
Математика
Sqr (A) аргумент A - любого числового типа, результат - того же типа, что и A
Sqrt (A) аргумент A - любого числового типа, результат - того же типа, что и A
Pi значение - вещественное
Frac (A) аргумент A и результат - вещественные
Int (A) аргумент A и результат - вещественные
Round (A) аргумент A вещественный, результат - LongInt
Abs (A) аргумент A - любого числового типа, результат - того же типа, что и A
Random результат - вещественный
Random (A) аргумент A и результат - Word
Randomize процедура
A div B операнды A и B и результат операции div - только целочисленного типа
A mod B операнды A и B и результат операции mod - только целочисленного типа
Модуль CRT
Процедура или функция Смысл
Sound (A :Word) звук
NoSound нет звука
Delay (A :Word) отсрочка
ReadKey :Char читай клавишу
KeyPressed :Boolean клавиша нажата
TextColor (A :Byte) цвет текста
TextBackground (A :Byte) цвет фона
ClrScr очистка экрана
GotoXY (X,Y :Byte) иди к икс игрек
Модуль Graph
InitGraph (d,m :Integer; path :String) инициализация графики
CloseGraph закрытие графики
PutPixel (x,y :Integer; color :Word) поставь пиксел
GetPixel (x,y :Integer) :Word получи пиксел
Line(x1,y1, x2,y2 :Integer) отрезок прямой линии
Rectangle (x1,y1, x2,y2 :Integer) прямоугольник
Bar (x1,y1, x2,y2:Integer) залитый прямоугольник
Bar3D (x1,y1, x2,y2:Integer; tol:Word; top:Boolean) параллелепипед
Circle (x,y :Integer; r :Word) окружность
Arc (x,y :Integer; fi1,fi2,r :Word) дуга окружности
PieSlice (x,y :Integer; fi1,fi2,r :Word) кусок пирога (залитый сектор круга)
Ellipse (x,y :Integer; fi1,fi2, rx,ry :Word) эллипс
Sector (x,y :Integer; fi1,fi2, rx,ry :Word) залитый сектор эллипса
FillEllipse (x,y :Integer; rx,ry :Word) залитый эллипс
SetColor (color :Word) установить цвет линий
SetLineStile (ls,uzor,tolsh :Word) установить стиль линий
SetFillStyle(uzor,color :Word) установить стиль заливки
FloodFill(x,y :Integer; granitsa :Word) заливка
GetMaxX :Integer получи максимальный икс
GetMaxY :Integer получи максимальный игрек
GetImage (x1,y1, x2,y2 :Integer; var A Здесь и в следующей процедуре A - так называемый бестиповой параметр-переменная, который мы с вами не проходили.) получи изображение
PutImage (x1,y1 :Integer; var A; mode :Word) помести изображение
ImageSize (x1,y1, x2,y2 :Integer) размер изображения
OutTextXY (x,y :Integer; stroka :String) вывод текста
SetTextStyle (shrift,napravl,razmer :Word) установи стиль текста
SetUserCharSize (A,B, C,D :Word) установи пользовательский размер символов
Модуль DOS
GetTime (var chas,min,sec,sotki :Word) получи время
SetTime (chas,min,sec,sotki :Word) установи время
GetDate (var god,mes,den,dennedeli :Word) получи дату
SetDate (god,mes,den :Word) установи дату
Работа со строками
Pos (s1,s :String) :Byte позиция
Length (s :String) :Byte длина
Copy (s :String; a,b :Integer) :String копируй
Delete (var s :String; a,b :Integer) удаляй
Insert (var s :String; s1 :String; a :Integer) вставляй
Работа с файлами
Assign (var f: Text; filename :String) упрощенно присвоить
Rewrite (var f: Text) упрощенно переписать
Reset (var f: Text) упрощенно переустановить
Close (var f: Text) упрощенно закрыть
Append (var f: Text) добавить
Прочие
Chr (A :Byte) :Char символ
GetMem(P :Pointer; razmer :Word) выдели память
New (var p: Pointer) новый
П4. Произношение английских слов
Здесь приведена транскрипция всех английских слов, встречающихся в тексте, кроме самых простых, таких как in. Кроме транскрипции произношение английских слов мне пришлось привести еще и русскими буквами, во-первых потому, что не все разбираются в значках транскрипции, а во-вторых потому, что многие аббревиатуры в среде русскоязычных программистов принято произносить на латинском или на смеси английского с латинским. Значок ударения в русском произношении я по техническим причинам ставил не над гласной буквой, как принято в России, а перед ударным слогом.
Слово |
Транс-крипция |
Обычное произношение |
|
Add watch |
Эд'воч |
||
Alt |
Альт |
||
AND |
Энд |
||
Append |
Э'пенд |
||
array |
Э'рэй |
||
Assign |
Э'сайн |
||
BackSpace |
Бэк'спэйс |
||
Bar3D |
Бартри'дэ |
||
Begin |
Би'гин |
||
Boolean |
`Булиэн |
||
Byte |
Байт |
||
CapsLock |
Капс'лок |
||
case |
Кэйс |
||
Char |
Кэр |
||
Chr |
Сиэйч'а |
||
Circle |
Сёкл |
||
ClearDevice |
Клиэди'вайс |
||
Close |
`Клоуз |
||
CloseGraph |
Клоуз'граф |
||
ClrScr |
Клиэ'скрин |
||
Compile |
Ком'пайл |
||
Copy |
`Копи |
||
CRT |
Цээр'тэ |
||
Ctrl |
`Контрол |
||
Cut |
Кат |
||
Debug |
Ди'баг |
||
Delay |
Ди'лэй |
||
Delete |
Ди'лит |
||
DirectVideo |
Директ'видео |
||
do |
Ду |
||
Double |
Дабл |
||
downto |
`Даунту |
||
Edit |
`Эдит |
||
Ellipse |
Эллипс |
||
else |
Элз |
||
End |
Энд |
||
EOF |
Энд оф `файл |
||
exe |
`Экзе |
||
Exit |
`Эксит |
||
Extended |
Икс'тендед |
||
false |
Фолс |
||
File |
Файл |
||
FillEllipse |
Фил'эллипс |
||
FloodFill |
Флад'фил |
||
for |
Фо |
||
Forward |
`Форвард |
||
Frac |
Фрак |
||
GetDate |
Гэт'дэйт |
||
GetImage |
Гэт'имэдж |
||
GetMaxX |
Гэтмакс'икс |
||
GetMaxY |
Гэтмакс'игрек |
||
GetMem |
Гэт'мэм |
||
GetPixel |
Гэт'пиксел |
||
GetTime |
Гэт'тайм |
||
goto |
`Гоуту |
||
Goto cursor |
Гоуту'курсор |
||
GotoXY |
Гоутуикс'игрек |
||
Graph |
Граф |
||
Halt |
Хальт |
||
if |
Иф |
||
ImageSize |
`Имэджсайз |
||
IMPLEMENTATION |
Имплемен'тэйшн |
||
InitGraph |
`Инитграф |
||
Insert |
Ин'сёт |
||
Integer |
`Интеджер |
||
KeyPressed |
Ки'пресд |
||
LABEL |
Лэйбл |
||
Length |
Ленгс |
||
Line |
Лайн |
||
LongInt |
Лонг'инт |
||
New |
Нью |
||
NormWidth |
Норм'видс |
||
NoSound |
Ноу'саунд |
||
of |
Эв |
||
Open |
`Опен |
||
OR |
О |
||
Output |
Аутпут |
||
OutTextXY |
Ауттекстикс'игрек |
||
Paste |
Пэйст |
||
PC Speaker |
Писи'спикер |
||
PieSlice |
Пай'слайс |
||
Pos |
По'зишн |
||
PROCEDURE |
Про'сиджэ |
||
PROGRAM |
`Програм |
||
PutImage |
Пут'имэдж |
||
PutPixel |
Пут'пиксел |
||
Random |
`Рэндом |
||
Randomize |
Рэндо'майз |
||
Read |
Рид |
||
ReadKey |
Рид'ки |
||
ReadLn |
Рид'лайн |
||
Real |
`Риэл |
||
record |
Рекорд |
||
Rectangle |
Рек'тангл |
||
repeat |
Ри'пит |
||
Reset |
Ри'сет |
||
Rewrite |
Ри'райт |
||
Round |
`Раунд |
||
Run |
Ран |
||
Save |
Сэйв |
||
Save as |
Сэйв'эз |
||
SetColor |
Сет'колор |
||
SetDate |
Сет'дэйт |
||
SetFillStyle |
Сетфил'стайл |
||
SetLineStyle |
Сетлайн'стайл |
||
SetTextStyle |
Сеттекст'стайл |
||
SetTime |
Сет'тайм |
||
SetUserCharSize |
Сет юзеркэр'сайз |
||
Shift |
Шифт |
||
ShortInt |
Шорт'инт |
||
Single |
Сингл |
||
Sound |
`Саунд |
||
Sqr |
`Сквэар |
||
Sqrt |
Сквэа'рут |
||
String |
Стринг |
||
Succ |
Сэ'ксэссор |
||
Text |
Текст |
||
TextBackgrownd |
Текстбэк'граунд |
||
TextColor |
Текст'колор |
||
then |
Зэн |
||
ThickWidth |
Сик'видс |
||
to |
Ту |
||
TopOff |
Топ'оф |
||
TopOn |
Топ'он |
||
Trace into |
Трэйс'инту |
||
true |
Тру |
||
TYPE |
Тайп |
||
UNIT |
`Юнит |
||
until |
Ан'тил |
||
User Screen |
Юзер'скрин |
||
Uses |
`Юэеэ |
||
Watch |
Воч |
||
while |
Вайл |
||
Word |
Ворд |
||
Write |
Райт |
||
WriteLn |
Райт'лайн |
П5. Решения заданий
Задание 1
Программа для робота |
Пояснения для нас с вами |
|
1. ПОВТОРИ 5 РАЗ ШАГ ВПЕРЕД |
Робот идет по коридору до дверей |
|
2. НАЛЕВО |
Робот поворачивается лицом к дверям |
|
3. ПОВТОРИ 3 РАЗА ШАГ ВПЕРЕД |
Робот подходит к стулу |
|
4. ВОЗЬМИ ПРЕДМЕТ |
Робот берет стул |
|
5. ПОВТОРИ 2 РАЗА НАЛЕВО |
Робот поворачивается кругом |
|
6. ПОВТОРИ 3 РАЗА ШАГ ВПЕРЕД |
Робот выходит в коридор |
|
7. НАПРАВО |
Поворачивается направо |
|
8. ПОВТОРИ 5 РАЗ ШАГ ВПЕРЕД |
Идет по коридору до исходного положения |
|
9. ОПУСТИ ПРЕДМЕТ |
Робот ставит стул на новое место |
Задание 2
1 |
2 |
5 |
+ |
1 |
6 |
= |
1 |
4 |
1 |
Задание 3
1 |
9 |
9 |
2 |
М |
ы |
н |
а |
ч |
и |
н |
а |
е |
м |
! |
||||||||||||||||||||||
4 |
8 |
|||||||||||||||||||||||||||||||||||
Ш |
е |
с |
т |
ь |
ю |
ш |
е |
с |
т |
ь |
3 |
6 |
. |
А |
р |
и |
ф |
м |
е |
т |
и |
к |
а |
: |
3 |
0 |
Задание 4
0
Задание 5
VAR a,b : LongInt;
BEGIN
a:= 9000000;
b:= 1000;
WriteLn (a-b);
ReadLn
END.
Задание 6
Паскаль выдает сообщение об ошибке: Constant out of range (см. сообщения об ошибках в части IV).
Задание 7
Паскаль выдает результат 211 или другой неправильный.
Задание 8
1001
Задание 9
-100
Задание 10
15 -10
Задание 11
82
Задание 12
VAR dlina_dvora, dlina_doma,
shirina_dvora, shirina_doma,
pl_dvora, pl_doma,
svobodn_pl_dvora, dlina_zabora :Integer;
BEGIN
dlina_dvora:=50; dlina_doma:=20;
shirina_dvora:=30; shirina_doma:=10;
pl_dvora := dlina_dvora * shirina_dvora;
pl_doma := dlina_doma * shirina_doma;
svobodn_pl_dvora := pl_dvora - pl_doma;
dlina_zabora := 2*(dlina_dvora+shirina_dvora)-(dlina_doma+shirina_doma);
WriteLn (pl_doma,' ', svobodn_pl_dvora,' ', dlina_zabora);
ReadLn
END.
Задание 13
VAR r :Integer; {r-радиус окружности}
l, s :Real; {l-длина окружности, s-площадь круга}
BEGIN
r := 800;
l := 2 * pi * r;
s := pi * r * r;
WriteLn (l :15:5, ' ', s:15:5);
ReadLn
END.
Задание 14
VAR t1, t2, {t1-время на первом отрезке, t2-на втором}
v1, v2, {v1-скорость на первом отрезке, v2-на втором}
s1, s2 :Integer; {s1-первый отрезок пути, s2-второй}
sredn_skorost :Real;
BEGIN
t1:=3; t2:=2;
v1:=80; v2:=90;
s1:=v1*t1; {путь равен скорость умножить на время}
s2:=v2*t2;
sredn_skorost := (s1+s2)/(t1+t2);
WriteLn (sredn_skorost :10:3);
ReadLn
END.
Задание 15
VAR a,b,c, perimetr :Integer; {a,b,c - стороны треугольника}
BEGIN
a:=20;
WriteLn ('Введите длины двух сторон треугольника');
ReadLn(b,c);
perimetr := a+b+c; {периметр - это сумма сторон}
WriteLn ('Периметр треугольника равен ' , perimetr);
ReadLn
END.
Задание 16
VAR t, v, s :Real; {t-время, v-скорость, s-путь}
BEGIN
WriteLn ('Введите путь в метрах и скорость в м/с');
ReadLn(s,v);
t:=s/v;
WriteLn ('Время = ', t :6:3, ' сек');
ReadLn
END.
Задание 17
VAR r1, r2, {r1-радиус орбиты первой планеты, r2-второй}
v1, v2, {v1-скорость первой планеты, v2-второй}
t1, t2 :Real; {t1-продолжительность года первой планеты, t2-второй}
nazvanie1, nazvanie2 :String;
BEGIN
WriteLn('Введите название первой планеты');
ReadLn(nazvanie1);
WriteLn('Введите радиус орбиты и скорость первой планеты');
ReadLn(r1,v1);
WriteLn('Введите название второй планеты');
ReadLn(nazvanie2);
WriteLn('Введите радиус орбиты и скорость второй планеты');
ReadLn(r2,v2);
t1 := 2*pi*r1/v1; {время = длина орбиты/скорость, а длина}
t2 := 2*pi*r2/v2; {орбиты равна два пи * радиус}
WriteLn ('Продолжительность года на планете ', nazvanie1, ' - ', t1: 3:0,
' сут., а на планете ', nazvanie2, ' - ', t2 :3:0, ' сут.');
ReadLn
END.
Задание 18
8
Задание 19
29
Задание 20
66
Задание 21
VAR a1,a2 : Integer;
BEGIN
ReadLn (a1,a2);
if a1>a2 then WriteLn (a1+a2)
else WriteLn (a1*a2);
WriteLn('ЗАДАЧА РЕШЕНА');
ReadLn
END.
Задание 22
VAR a,b,c : Integer;
BEGIN
ReadLn (a,b,c);
if a<b+c then WriteLn ('Подходит.')
else WriteLn ('Не подходит, слишком длинен.');
ReadLn
END.
Задание 23
VAR golov, glaz, N : Integer;
BEGIN
WriteLn ('Сколько лет дракону?');
ReadLn (N);
if N<100 then golov := 3*N
else golov := 300 + 2*(N-100);
glaz := 2*golov;
WriteLn ('У дракона ', golov ,' голов и ', glaz ,' глаз');
ReadLn
END.
Задание 24
VAR imya :String;
Vozrast :Integer;
BEGIN
WriteLn ('Здравствуй, я компьютер, а тебя как зовут?');
ReadLn (imya);
WriteLn ('Очень приятно, ', imya, '. Сколько тебе лет?');
ReadLn (vozrast);
WriteLn ('Ого! Целых ' ,vozrast, ' лет! Ты уже совсем взрослый!');
if vozrast<=17 then begin
WriteLn ('В какой школе ты учишься?');
ReadLn; {Во время паузы вы можете вводить любой текст,
все равно он программе не понадобится}
WriteLn ('Неплохая школа!')
end
else begin
WriteLn ('В каком институте ты учишься?');
ReadLn;
WriteLn ('Хороший институт!')
end;
WriteLn ('До следующей встречи!');
ReadLn
END.
Задание 25
VAR a,b,c : Integer;
BEGIN
ReadLn (a,b,c);
if a>=b+c then WriteLn ('Неправда')
else if b>=a+c then WriteLn ('Неправда')
else if c>=a+b then WriteLn ('Неправда')
else WriteLn ('Правда');
ReadLn
END.
Задание 26
Ей нравятся любые черноглазые, но только не те, у кого рост находится в диапазоне от 180 до 184.
Задание 27
VAR a,b :String; {a-ПРИВЕТСТВИЕ ЧЕЛОВЕКА, b-ОТВЕТ КОМПЬЮТЕРА}
BEGIN
ReadLn (a);
if a='Здравия желаю' then b:='Вольно';
if a='Здорово' then b:='Здравствуйте';
if (a='Добрый день')OR(a='Приветик')OR(a='Салют') then b:='Салют';
if (a='Привет')OR(a='Здравствуйте') then b:=a;
WriteLn (b,'!');
ReadLn
END.
Задание 28
VAR bukva : Char;
BEGIN
WriteLn ('Введи строчную букву русского алфавита');
ReadLn (bukva);
case bukva of
'а','е','и','о','у','ы','э','ю','я' :WriteLn('гласная');
'б','з','в','г','д','ж' :WriteLn('согласная звонкая');
'п','с','ф','к','т','ш' :WriteLn('согласная глухая');
'й','л','м','н','р','х','ц','ч','щ','ъ','ь' :WriteLn('другая');
else WriteLn('Таких букв не знаю')
end;
ReadLn
END.
Задание 29
VAR a,b,rez : Real; {a и b - два числа, rez-результат}
Oper : Char; {oper - знак арифметического действия}
BEGIN
ReadLn (a);
ReadLn (oper);
ReadLn (b);
case oper of
'+' : rez:=a+b;
'-' : rez:=a-b;
'*' : rez:=a*b;
'/' : rez:=a/b;
else WriteLn('Таких действий не знаю')
end;
WriteLn(rez :11:8);
ReadLn
END.
Задание 30
Эта программа будет печатать:
Считаем зайцев
10 зайцев
10 зайцев
11 зайцев
13 зайцев
16 зайцев
20 зайцев
………
Операторы n:=n+1 и WriteLn('Посчитали зайцев') не будут выполнены никогда.
Задание 31
LABEL m1; BEGIN m1: Write ('A'); ReadLn; goto m1 END.
Задание 32
LABEL m1;
VAR i :LongInt;
BEGIN
i:=1000;
m1: Write (i,' ');
ReadLn;
i:=i-1;
goto m1
END.
Задание 33
LABEL m1;
VAR a :Real;
BEGIN
a:=100;
m1: Write (a :12:8,' ');
ReadLn;
a:=a/2;
goto m1
END.
Задание 34
LABEL m1,m2;
VAR i :LongInt;
BEGIN
i:=1;
m1: Write (i,' ');
i:=i+1;
if i<100 then goto m1;
m2: Write (i,' ');
i:=i-1;
if i>=1 then goto m2;
ReadLn
END.
Задание 35
LABEL m;
VAR a :Real;
BEGIN
a:=0;
m: WriteLn (a :5:3,' ', a*a :9:6);
a:=a+0.001;
if a<=1.00001 then goto m;
ReadLn
END.
Пояснение: Вместо if a<=1 then я написал if a<=1.00001 then и вот по какой причине. Вещественные числа компьютер складывает с незначительной погрешностью, но ее достаточно, чтобы при тысячекратном прибавлении 0.001 набралась не 1, а чуть-чуть больше. А это значит, что счет остановился бы на 0.999. Если не верите, попробуйте распечатывать а с 15 знаками после точки. Подробнее о причинах - см. 12.2
Задание 36
LABEL m1,m2;
VAR x,y,z :Real;
BEGIN
x:=2700;
m1: y:=x/4 + 20;
z:=2*y+0.23;
WriteLn ('x=',x:12:6,' y=',y:12:6,' z=',z:12:6);
if y*z<1/x then goto m2;
x:=x/3;
goto m1;
m2: ReadLn
END.
Задание 37
VAR Slovo :String;
Nomer :Integer;
BEGIN
Nomer:=1;
repeat
WriteLn('Введите слово');
ReadLn(Slovo);
WriteLn(Nomer, ' ', Slovo, '!');
Nomer:=Nomer+1;
until Slovo='Хватит';
WriteLn('Хватит так хватит');
ReadLn
END.
Задание 38
VAR a :Real;
BEGIN
a:=0;
repeat
WriteLn (a :5:3,' ', a*a :9:6);
a:=a+0.001;
until a>1.00001;
ReadLn
END.
Задание 39
VAR x,y,z :Real;
BEGIN
x:=8100;
repeat
x:=x/3;
y:=x/4 + 20;
z:=2*y+0.23;
WriteLn ('x=',x:12:6,' y=',y:12:6,' z=',z:12:6);
until y*z<1/x;
ReadLn
END.
Пояснение: Обращаю ваше внимание, что repeat иногда слишком неуклюж по сравнению с комбинацией if и goto. Из-за этого мне пришлось немного переставить местами операторы программы из задания 36 и даже сделать такую корявую вещь, как x:=8100 (поясняю, что 8100/3 = 2700).
Задание 40
VAR t,s,h,v : Real;
BEGIN
v:=20;
t:=0;
repeat
s:= v*t;
h:= 100-9.81*t*t/2;
WriteLn('t=',t:5:1,' s=',s:8:2,' h=',h:6:2);
t:=t+0.2;
until h<=0; {Отрицательная высота - значит упал на землю}
ReadLn
END.
Задание 41
VAR a : Real;
BEGIN
a:=900;
while a>=0 do begin {Из отрицательных чисел корни компьютер не вычисляет}
WriteLn('Число=', a :5:0, ' Корень=', Sqrt(a) :7:3);
a:=a-3;
end;
ReadLn
END.
Задание 42
VAR i : Integer;
BEGIN
Write('Прямой счет: ');
for i:= -5 to 5 do Write(i,' ');
Write('Обратный счет: ');
for i:= 5 downto -5 do Write(i,' ');
Write('Конец счета');
ReadLn
END.
Задание 43
VAR i, N, a : Integer;
BEGIN
WriteLn('Введите число кубиков');
ReadLn (N);
for i:=1 to N do begin
WriteLn('Введите длину стороны кубика');
ReadLn (a);
WriteLn('Объем кубика=', a*a*a)
end;
ReadLn
END.
Задание 44
Компьютер напечатает:
Площадь пола=300 Объем зала=1200
Площадь пола=300 Объем зала=1200
Площадь пола=300 Объем зала=1200
и не спросит размеры 2 и 3 залов.
Задание 45
Компьютер напечатает результаты только для последнего зала.
Задание 46
Компьютер напечатает результат:
на 10 больше правильного.
в два раза больше правильного.
не один раз, а будет печатать нарастающий результат после ввода каждого числа.
0 или 1, так как на каждом цикле счетчик будет обнуляться.
200 или 0 в зависимости от того, положительно первое число или нет.
Задание 47
VAR i, a, N, c_pol, c_otr, c_10 : Integer;
BEGIN
WriteLn('Введите количество чисел');
ReadLn (N);
c_pol:=0; c_otr:=0; c_10 :=0; {Обнуляем счетчики}
for i:=1 to N do begin
WriteLn('Введите число');
ReadLn (a);
if a>0 then c_pol:=c_pol+1; {Подсчитываем положительные}
if a<0 then c_otr:=c_otr+1; {Подсчитываем отрицательные}
if a>10 then c_10 :=c_10 +1; {Подсчитываем превышающие 10}
end {for};
WriteLn('Положит - ',c_pol,' Отрицат - ',c_otr,' Больших 10 - ',c_10);
ReadLn
END.
Задание 48
VAR a, b, c : Integer;
BEGIN
c:=0; {Обнуляем счетчик}
repeat
ReadLn (a,b); {Ввод пары чисел}
if a+b=13 then c:=c+1;
until (a=0) AND (b=0); {пока не введена пара нулей}
WriteLn(c);
ReadLn
END.
Задание 49
18
10
5 и 8
3
10
3
5
Задание 50
VAR i, dlina, shirina, S, sum: Integer;
BEGIN sum:=0;
for i:=1 to 40 do begin
ReadLn (dlina, shirina);
S:=dlina*shirina; {S-площадь зала}
sum:=sum+S {sum-площадь дворца}
end {for};
WriteLn(sum);
ReadLn
END.
Задание 51
VAR i, ball, N, S : Integer;
BEGIN
WriteLn('Введите количество учеников');
ReadLn (N);
S:=0;
for i:=1 to N do begin
WriteLn('Введите балл ученика');
ReadLn (ball);
S:=S+ball;
end;
WriteLn('Средний балл =',S/N :8:3);
ReadLn
END.
Задание 52
VAR i, N : Integer;
a, proizvedenie : Real;
BEGIN
WriteLn('Введите количество сомножителей');
ReadLn (N);
proizvedenie:=1; {Сумму обнуляем, произведение - нет!}
for i:=1 to N do begin
WriteLn('Введите сомножитель');
ReadLn (a);
proizvedenie := proizvedenie * a; {Наращиваем произведение}
end;
WriteLn('Произведение =',proizvedenie :12:3);
ReadLn
END.
Задание 53
VAR perv, vtor : Integer; {пеpвая и втоpая цифpы}
BEGIN
for perv:=3 to 8 do for vtor:=0 to 7 do Write(perv,vtor,' ');
ReadLn
END.
Задание 54
VAR i,j,k,l : Integer; {четыpе цифpы}
BEGIN
for i:=1 to 3 do
for j:=1 to 3 do
for k:=1 to 3 do
for l:=1 to 3 do
Write(i,j,k,l,' ');
ReadLn
END.
Задание 55
VAR i,j,k,l, c : Integer; {c-счетчик}
BEGIN
c:=0; {Обнуляем счетчик}
for i:=1 to 3 do for j:=1 to 3 do for k:=1 to 3 do for l:=1 to 3 do c:=c+1;
Write('Количество сочетаний = ', c);
ReadLn
END.
Задание 56
VAR i,j,k,l, c : Integer; {c-счетчик}
BEGIN
c:=0; {Обнуляем счетчик}
for i:=1 to 3 do
for j:=1 to 3 do
for k:=1 to 3 do
for l:=1 to 3 do
if (i<=j) AND (j<=k) AND (k<=l) then c:=c+1;
WriteLn('Количество неубывающих сочетаний = ', c);
ReadLn
END.
Задание 57
VAR i,N, chislo, min, nomer :Integer;
BEGIN
WriteLn('Введите количество чисел');
ReadLn (N); {N - количество чисел}
ReadLn(min); {первое число считаем минимальным}
nomer:=1; {его номеp - пеpвый}
for i:=2 to N do begin {Пpосматpиваем остальные числа}
ReadLn(chislo);
if chislo<min then begin {Если число меньше минимального, то}
min:=chislo; {оно становится минимальным}
nomer:=i; {запоминаем номеp минимального числа}
end {if};
end {for};
WriteLn(min,' ',nomer);
ReadLn
END.
Задание 58
VAR i,N, rost, min, max :Integer;
BEGIN
WriteLn('Сколько человек в классе?');
ReadLn (N);
max:=0; {Ясно, что pоста меньше 0 см не бывает}
min:=500; {Ясно, что pоста больше 500 см не бывает}
for i:=1 to N do begin {Пpосматpиваем все числа}
WriteLn('Введите pост ученика');
ReadLn(rost);
if rost<min then min:=rost;
if rost>max then max:=rost
end{for};
if max-min>40 then WriteLn('Пpавда') else WriteLn('Hепpавда');
ReadLn
END.
Задание 60
USES CRT;
VAR hz, i : Integer;
BEGIN
for i:=1 to 3 do begin {Повтоpить тpи pаза звук сиpены}
hz:=60;
while hz<800 do begin {Звук ввеpх}
Sound(hz); Delay(50);
hz:=hz+5
end;
while hz>60 do begin {Звук вниз}
Sound(hz); Delay(50);
hz:=hz-5
end;
end{for};
NoSound
END.
Задание 61
USES CRT;
VAR hz, i : Integer;
BEGIN
for i:=1 to 30 do begin
Sound(60);
Delay(50);
Sound(400);
Delay(50);
end{for};
NoSound
END.
Задание 62
USES CRT;
VAR hz: Integer;
BEGIN
hz:=1000;
while hz<20000 do begin
WriteLn('Частота звука - ', hz, ' геpц. Жмите кл.ввода до 20000 гц.');
Sound(hz);
ReadLn;
hz:=hz+500
end;
NoSound
END.
Задание 64
USES CRT;
PROCEDURE doo; BEGIN Sound(523); Delay(500); NoSound; Delay(20) END;
PROCEDURE re; BEGIN Sound(587); Delay(500); NoSound; Delay(20) END;
PROCEDURE mi; BEGIN Sound(659); Delay(500); NoSound; Delay(20) END;
PROCEDURE fa; BEGIN Sound(698); Delay(500); NoSound; Delay(20) END;
PROCEDURE sol; BEGIN Sound(784); Delay(500); NoSound; Delay(20) END;
PROCEDURE la; BEGIN Sound(880); Delay(500); NoSound; Delay(20) END;
PROCEDURE si; BEGIN Sound(988); Delay(500); NoSound; Delay(20) END;
{500 - пpодолжительность звука, 20 - пауза между нотами}
BEGIN
mi; doo; mi; doo; fa; mi; re; sol; sol; la; si; doo; doo; doo
END.
Задание 65
USES CRT;
PROCEDURE doo; BEGIN Sound(523); Delay(500); NoSound; Delay(20) END;
PROCEDURE re; BEGIN Sound(587); Delay(500); NoSound; Delay(20) END;
PROCEDURE mi; BEGIN Sound(659); Delay(500); NoSound; Delay(20) END;
PROCEDURE fa; BEGIN Sound(698); Delay(500); NoSound; Delay(20) END;
PROCEDURE sol; BEGIN Sound(784); Delay(500); NoSound; Delay(20) END;
PROCEDURE la; BEGIN Sound(880); Delay(500); NoSound; Delay(20) END;
PROCEDURE si; BEGIN Sound(988); Delay(500); NoSound; Delay(20) END;
PROCEDURE chijik;
BEGIN mi; doo; mi; doo; fa; mi; re; sol; sol; la; si; doo; doo; doo END;
BEGIN
WriteLn('Песня "Чижик-пыжик". 1 куплет');
chijik;
WriteLn('2 куплет');
chijik;
END.
Задание 66
Я, король Франции, спрашиваю вас - кто вы такие? Вот ты - кто такой?
Я - Атос
А ты, толстяк, кто такой?
А я Портос! Я правильно говорю, Арамис?
Это так же верно,как то,что я -Арамис!
Он не врет, ваше величество! Я Портос, а он Арамис.
А ты что отмалчиваешься, усатый?
А я все думаю, ваше величество - куда девались подвески королевы?
Анна! Иди-ка сюда!!!
Задание 67
USES Graph;
VAR Device, Mode: Integer;
BEGIN
Device:=0;
InitGraph(Device, Mode, 'c:\tp\bgi');
Rectangle(300,30,360,80); {шапка}
Circle(330,120,40); {голова}
Circle(345,110,5); {глаз}
Circle(315,110,5); {глаз}
Line(320,140,340,140); {pот}
Line(330,120,330,130); {нос}
Line(330,120,305,130); {нос}
Line(330,130,305,130); {нос}
Circle(330,220,60); {сеpедина}
Circle(330,360,80); {низ}
Rectangle(350,163,455,183); {pука}
Rectangle(203,163,308,183); {pука}
Line(210,130,210,440); {посох}
ReadLn;
CloseGraph
END.
Задание 68
USES Graph;
VAR Device, Mode: Integer;
BEGIN
Device:=0;
InitGraph(Device, Mode, 'c:\tp\bgi');
Rectangle(300,30,360,80); {шапка}
SetFillStyle(1, yellow); {заливка}
FloodFill(330,50, white); {шапки}
Circle(330,120,40); {голова}
Circle(345,110,5); {глаз}
Circle(315,110,5); {глаз}
SetColor(red);
Line(320,140,340,140); {pот}
SetColor(white);
Line(330,120,330,130); {нос}
Line(330,120,305,130); {нос}
Line(330,130,305,130); {нос}
SetFillStyle(1, red); {заливка}
FloodFill(328,125, white); {носа}
Circle(330,220,60); {сеpедина}
Circle(330,360,80); {низ}
Rectangle(350,163,455,183); {pука}
Rectangle(203,163,308,183); {pука}
SetLineStyle(0, 0, ThickWidth);
SetColor(blue);
Line(210,130,210,440); {посох}
WriteLn('Это снеговик');
ReadLn;
CloseGraph
END.
Задание 69
x:=x+4;
Задание 70
x:=40;
repeat
Circle(x,100,10);
x:=x+4;
until x>600;
Задание 71
Circle(x,100,40);
Задание 72
USES Graph;
VAR x,y, Device, Mode :Integer;
BEGIN
Device:=0;
InitGraph(Device, Mode, 'c:\tp\bgi');
x:=40;
y:=470;
repeat
PutPixel(x,y,white);
x:=x+20;
y:=y-15
until x>600;
ReadLn;
CloseGraph
END.
Задание 73
USES Graph;
VAR r, Device, Mode :Integer;
BEGIN
Device:=0;
InitGraph(Device, Mode, 'c:\tp\bgi');
r:=10;
repeat
Circle(320,240,r);
r:=r+15;
until r>230;
ReadLn;
CloseGraph
END.
Задание 74
SetColor(Yellow);
r:=50;
repeat
Circle(320,240,r);
r:=r+2;
until r>230;
Задание 75
y:=120;
r:=0;
repeat
Circle(320,y,r);
r:=r+3;
y:=y+2;
until r>200;
Задание 76
x:=40;
y:=40;
r:=0;
repeat
Circle(x,y,r);
x:=x+4;
y:=y+2;
r:=r+1;
until x>500;
Задание 77
Подобные документы
Развертывание системы на жестком диске, диалоговая система программирования Турбо Паскаль, запуск программы и выполнение задания. Функциональные клавиши и их назначение. Текстовый редактор, средства создания и редактирования текстов программ, курсор.
реферат [18,6 K], добавлен 01.04.2010Основные сведения о системе программирования Турбо Паскаль. Структура программы на Паскале и ее компоненты. Особенности и элементы языка Турбо Паскаль. Порядок выполнения операций в арифметическом выражении, стандартные функции и оператор присваивания.
лекция [55,7 K], добавлен 21.05.2009Особенности использования графического режима в среде Турбо Паскаль. Типы драйверов. Инициализация графики. Построение изображения на экране. Графические примитивы и работа с текстом. Разработка и реализация программ в среде Турбо Паскаль "Графика".
курсовая работа [1,2 M], добавлен 26.09.2014Особенности программирования на языке Паскаль в среде Турбо Паскаль. Линейные алгоритмы, процедуры и функции. Структура данных: массивы, строки, записи. Модульное программирование, прямая и косвенная рекурсия. Бинарный поиск, организация списков.
отчет по практике [913,8 K], добавлен 21.07.2012Язык программирования Турбо Паскаль. Запись алгоритма на языке программирования и отладка программы. Правила записи арифметических выражений. Стандартное расширение имени файла, созданного системным редактором. Составной оператор и вложенные условия.
курсовая работа [75,0 K], добавлен 21.03.2013Использование графических возможностей Турбо Паскаля, подключение графического модуля Graph. Графические функции и процедуры. Общая структура графической программы. Построение фигур, определение цветов и стилей, работа с текстом, сообщения об ошибках.
реферат [109,3 K], добавлен 28.04.2010Правила описания множественных типов данных, приемов использования множеств и операций над множествами в Паскаль-программах. Разработка в Турбо Паскале программы вывода всех согласных букв, которые входят хотя бы в одно слово заданного предложения.
контрольная работа [30,8 K], добавлен 25.12.2010Освоение технологии структурного программирования и применения стандартных методов работы с одномерными массивами при разработке и создании программы на языке Турбо Паскаль. Разработка программы методом пошаговой детализации с помощью псевдокода.
реферат [276,9 K], добавлен 27.02.2008Разработка программы, создающей и управляющей базой данных, ее реализация на языке Turbo Pascal. Организация алгоритма программы. Вывод информации и возможность добавления информации в базу данных. Поиск информации в базе данных по заданному значению.
курсовая работа [26,7 K], добавлен 19.06.2010Расчет на устойчивость в системе программирования Турбо Паскаль. Определение критического напряжения стержня по формуле Ясинского, предельной гибкости в зависимости от материала. Программирование алгоритма расчета. Порядок ввода исходных данных.
курсовая работа [1,0 M], добавлен 27.04.2013