Тема. Введение в программирование
Одновременно с эволюцией ЭВМ шла эволюция базовых программных средств для них. В первую очередь это относится к языкам программирования, с помощью которых люди кодируют задачи для решения их на ЭВМ. Языки программирования принято делить на пять поколений.
Первое поколение – вплоть до конца 50-х годов программирование сводилось к детальному кодированию длинных последовательностей команд двоичными, восьмеричными или шестнадцатеричными числами. Эта деятельность называлась кодированием в отличие от программирования, к которому относилась более трудная задача – конструирование алгоритмов.
Второе поколение – это языки Ассемблера, с ним было работать несколько легче, чем с машинными языками. В языках ассемблера каждой команде машинного языка соответствует мнемоническое обозначение.
С появлением более быстрых вычислительных машин с большим объемом памяти трудности кодирования настолько возросли, что стала очевидна неэффективность выполнения этой работы человеком.
Возникла необходимость учета аппаратной организации каждой конкретной машины, то есть необходимость перекодировки программ при переносе с одной машины на другую – зачастую наблюдалась непереносимость алгоритмов, разработанных для одних машин при переносе на другие. Практически не представлялась возможным понять принципы построения другой программы.
Написанные на машинных кодах программы, содержали минимум избыточной информации, которая бы позволяла обнаружить формальные ошибки кодирования. В результате технические ошибки при набивке программы могли приводить к обескураживающим последствиям, а обнаружить такие ошибки было очень сложно.
Эти трудности привели к созданию так называемых языков программирования «высокого уровня».
Третье поколение – самое «обширное» поколение языков. Это универсальные языки высокого уровня, с помощью которых удается решать задачи из любых областей. Начало оно ведет с 1955 года с появлением языка ФОРТРАН (FORmulaTRANslator – переводчик формул), первого компилируемого языка, созданного Джимом Бэкусом в 50-е годы. ФОРТРАН продолжает активно использоваться во многих организациях и в сегодняшние дни.
В 1960 году появился АЛГОЛ (ALGOritmicLanguage- алгоритмический язык). Он был призван заменить Фортран, но из-за более сложной структуры не получил широкого распространения.Однако он долгое время пользовался определенной популярностью в программистских кругах.
1965 году был создан один из наиболее популярных и поныне языков программирования – БЭЙСИК (BASIC – Beginner’sAllpurposeSymbolicInstructionCode – дословно: «многоцелевой код символической инструкции для начинающих»). Широкое распространение БЭЙСИК получил на персональных компьютерах. Он создавался в качестве учебного языка и очень прост в изучении. На нынешний день существует несколько достаточно мощных версий этого языка.
В 1970 году Никлаус Вирт создал язык Pascal (Паскаль), во многом напоминающий Алгол, но в нем ужесточен ряд требований к структуре программы и имеются возможности, позволяющие успешно применять его при создании крупных проектов. Этот язык обладает весьма развитыми средствами, особенно те его версии, которые используются в настоящее время.
В 1980 году появился язык ADA (Ада) – один из самых мощных языков программирования. Он принят в качестве основного языка на вычислительных центрах министерства обороны США. Структура самого языка похожа на Паскаль. В нем имеются средства разграничения доступа к различным уровням спецификаций, доведена до предела мощность управляющих конструкций. Назван по имени леди Огасты Ады Байрон, дочери английского поэта Байрона.
В настоящее время используется еще один мощный язык программирования – С (Си). Данный язык был создан в лаборатории Bellи первоначально не рассматривался как массовый. Он планировался для замены ассемблера, чтобы иметь возможность создавать столь же эффективные и компактные программы и в то же время не зависеть от конкретного типа процессора.
Четвертое поколение языков – это языки управления программным обеспечением, или, как их еще называют, «генераторы программ». Для примера можно привести такие языки, как Clipper, dBase, SuperCalc.
Все названные языки являются процедурными, в противоположность языкам «Пятого поколения», которые являются декларативными. Основные языки этого поколения – LISP – язык обработки списков /ЛИСП/ и PROLOG – программирование в терминах логики /ПРОЛОГ/.
ЛИСП появился в 1961 году. Он ориентирован на структуру данных в форме списка и позволяет организовывать эффективную обработку больших объемов текстовой информации. LISP является очень мощным и многообразным языком, но он может оказаться достаточно большим и громоздким. ПРОЛОГ создан в 1973 году Аланом Колмероэ. Программа на этом языке строится из последовательности фактов и правил, а затем формулируется утверждение, которое Пролог будет пытаться доказать с помощью введенных правил. При решении задач на этих языках от программиста требуется описать, ЧТО надо сделать, а не КАК это следует делать. Об этом позаботится сама система (ЛИСП или ПРОЛОГ).
Таким образом, все языки программирования можно разделить на три категории: языки НИЗКОГО уровня – машинные языки и языки Ассемблера, то есть языки первого и второго поколения; ВЫСОКОГО уровня – все процедурные языки, то есть языки третьего и четвертого поколений и СВЕРХВЫСОКОГО уровня – языки пятого поколения.
Говорят, что программирование – это искусство получения ответов от машины, и, если мы решили применить компьютер, нам предстоит пройти три основных этапа:
Ясно и точно установить, что же должно быть сделано.
Установить точно определенную последовательность действий, ведущую к желаемому результату, то есть, предложить алгоритм.
Выразить алгоритм в виде понятном для машины.
Первый этап носит название СИСТЕМНЫЙ АНАЛИЗ. Второй этап – КОНСТРУИРОВАНИЕ ПРОГРАММЫ. Третий этап – ПРОГРАММИРОВАНИЕ.
Происхождение самого термина «алгоритм» связано с математикой. Это слово происходит от Algorithmi – латинской транскрипции имени Мухаммеда аль-Хорезми, выдающегося математика средневекового Востока. В своей книге "Об индийском счете" он сформулировал правила записи натуральных чисел с помощью арабских цифр и правила действий над ними столбиком. В дальнейшем алгоритмом стали называть точное предписание, определяющее последовательность действий, обеспечивающую получение требуемого результата из исходных данных. Алгоритм может быть предназначен для выполнения его человеком или автоматическим устройством.
Чтобы не было недоразумений, введем термины, которые будем применять в дальнейшем.
Задача характеризуется известными величинами (исходными данными), отношениями между ними и величинами или отношениями, значения которых неизвестны и должны быть определены в результате решения проблемы.
Действие – одно из важнейших понятий. Это нечто, что имеет конечную продолжительность и приводит к желаемому результату.
Объект – это то, над чем это действие совершается и по изменению состояния которого можно судить о результате этого действия.
Инструкция – описание действия с помощью некоторого языка или системы формул.
Процесс (вычисление) – действие, которое можно разложить на составные части. Если эти части во времени следуют строго друг за другом и никакие две части не выполняются одновременно, то процесс называется последовательным.
Программа – инструкция, описывающая процесс и состоящая из составных частей. Это запись алгоритма в виде последовательности инструкций для получения определенного результата, которая будет понята машиной.
Исполнитель (процессор) – то, что выполняет действия согласно заданным инструкциям. Это более или менее нейтральный термин, не определяющий конкретно, что является исполнителем – человек или автомат. В самом деле, программы, если они записаны на языке, который точно определен, имеет смысл безотносительно к специфике процессора.
Алгоритм – это и есть совокупность строгих предписаний-приказов для исполнителя, выполняя которые он (исполнитель) может достичь цели, в частности решить задачу, составив программу на языке программирования.
Каждое такое предписание называется командой. Порядок команд в алгоритме очень важен.
При составлении алгоритма требуется знать систему команд исполнителя, а не его устройство, то есть множество предписаний, которые понимает и умеет выполнять исполнитель нашего алгоритма. Исполнители можно разделить на неформальные (человек) и формальные (робот, компьютер или язык программирования). В дальнейшем мы будем иметь дело только с формальными исполнителями.
Важным качеством алгоритма является то, что от исполнителя не требуется понимание метода решения задачи, все, что от него требуется – понимание инструкций и умение их выполнять.
Свойства алгоритма
К алгоритму решения задач предъявляются высокие требования. Он должен обладать дискретностью, массовостью, компактностью, детерминированностью и результативностью.
Дискретность алгоритма определяет то, что всякий алгоритм имеет прерывистый, дискретный характер, т.е. представляет собой последовательность выполненных один за другим отдельно законченных шагов.
Массовостью алгоритма называется его способность быть пригодным для решения широкого класса задач данного типа. Алгоритм должен составляться не для решения отдельно взятой проблемы (задачи), а для создания возможности решения всех типов подобных проблем.
Детерминированность (определенность) алгоритма – это строгая определенность (однозначность предписываемых действий в каждой инструкции алгоритма), конкретность, чтобы в его записи не оставалось место двусмысленности и произвольному толкованию.
Результативностью алгоритма называется свойство обеспечения нужного результата за конечное число шагов, если данные принадлежат области исходных данных, которыми определена массовость алгоритма.
Конечность определяет, что каждое действие в отдельности и алгоритм в целом должны иметь возможность завершения.
Понятность алгоритма – это обязательность составления алгоритма учетом системы команд исполнителя, т.е. алгоритм должен быть зафиксирован в той форме, которая будет понятна исполнителю. Значения всех приведенных действий в алгоритме должны быть ясными, точными и определенными.
Компактностью алгоритма называется его краткость, свойство минимальности инструкций. Наиболее удачно составленным алгоритмом считается алгоритм, обладающий компактностью и минимальностью количества вычислений при обязательной массовости алгоритма.
Каждый исполнитель должен однозначно понимать правило выполнения каждого действия алгоритма. Это называется свойством однозначности алгоритма.
Способы записи алгоритмов
Существует несколько способов записи алгоритмов, отличающихся друг от друга наглядностью, компактностью, степенью формализации и другими показателями:
Графический– в виде блок-схем. Графическая запись алгоритмов в виде блок схем характеризуется использованием графических символов, математических записей и записей на естественном языке, наглядностью, пониманием записи алгоритма любым человеком, знакомым с алгоритмами, использованием простых правил описания последовательности действий.
Словесный – на естественном языке. Достоинством записи алгоритма на естественном языке является доступность для понимания его любым человеком, а недостатки его состоят в громоздкости записи, ненаглядности, неточности и многозначности.
На алгоритмическом языке (псевдокод) – то есть на специальном языке.
Алгоритмический язык – это система обозначений и правил для единообразной и точной записи алгоритмов и их исполнения. Этот язык, с одной стороны, близок к естественному языку, он записывается в виде простого текста. В состав алгоритмического языка входят числа, наименования величин и функций, знаки арифметических операций, скобки операций, а также термины с определенной функцией и некоторые символы.
Вычисление значения любой величины задается через выражение. Во время выполнения алгоритма вычисление значения выражения и приравнивание его к переменной называется присваиванием. Процесс присваивания осуществляется через команду присваивания. Образец записи команды присваивания следующий:
:=;
Оператор присваивания выполняет изменение значения переменной. При операторе присваивания вычисляется в правой части, результат записывается в .Тип выражения должен быть совместим по присваиванию с переменной.
Команда присваивания в блок-схеме изображается в виде четырехугольника блока процесса.
В виде программ для ЭВМ – значит на любом алгоритмическом языке, понятном для машины, когда исполнителем является компьютер. Широко известны такие языки программирования как Паскаль, Дельфи, Пролог, Си и т.д.
При графическом описании алгоритма принято использовать стандартные графические символы. Блок-схема - самый распространенный и понятный способ записи алгоритмов. Это последовательность блоков, соединенных линиями передачи.
Элементы блок-схем
Название процесса | Вид блок-схемы | Описание действия |
Терминатор | | Начало, конец алгоритмов |
Данные | | Ввод /вывод данных |
Документ | | Вывод результата на принтер |
Процесс | | Вычисление математических выражений |
Модификация | | Начало цикла (повторение) |
Решение | | Блок выбора направления выполнения алгоритма в зависимости от некоторых условий |
Классификация алгоритмов
Все существующие алгоритмы делятся на три типа (типы вычислительных процессов): линейные, разветвляющиеся, циклические.
Линейный алгоритм – это алгоритм, в котором последовательность операций при исполнении совпадает с порядком их следования в записи алгоритма и не зависит от конкретных значений входных данных (выполняются сверху вниз).
| Линейным алгоритмом называется алгоритм, в котором все действия (операции) выполняются один раз и последовательно друг за другом. Он состоит из последовательных простых команд, блок-схемы – из блоков, расположенных на одной линии, которые выполняются в указанной последовательности. Такое выполнение операций друг за другом называется естественным порядком. |
Разветвляющийся алгоритм – это алгоритм, в котором последовательность операций определяется проверкой условия.
| Если условие ABверно, то выполняется группа операторов ОПЕРАТОР 1, в противном случае – группа операторов ОПЕРАТОР 2 (условный оператор) |
Циклический алгоритм – это алгоритм, в котором неоднократно повторяются одни и те же предписания.
В отличие от линейных алгоритмов, в которых команды выполняются последовательно одна за другой, в циклические алгоритмы входит последовательность команд, выполняемая многократно. Такая последовательность команд называется телом цикла.
| Пока будет выполненоIN, выполняется группа операторовОП.1. Оператор цикла с предусловием выполняется до тех пор, пока остается истинным условие цикла. Как только значение условия становится ложным, цикл прекращает выполняться. |
| Выполняется группа операторов ОП.1до тех пор, пока не будет выполнено условие IN. В отличие от цикла с предусловием, выход из цикла с постусловием осуществляется при истинности условия. Этот цикл должен выполниться хотя бы один раз. Данный оператор цикла выполняется до тех пор, пока не станет истинным условие. |
| Для каждого I от 1 до N выполняется группа операторов ОП.1 Если число повторений цикла известно, используется цикл, для которого нет необходимости принудительно увеличивать значение параметра цикла. Такое увеличение при цикле с параметром производится автоматически |
Примеры:
Линейный алгоритм
Вычислить функциюzпо формуле z=ax2+b+cos(ax2+b)-tg(ax2+b)
1) Cоставить математическое уравнение данной задачи:
z=t+cos-tgt, где t=ax2+b
2) Составление алгоритма:
На алгоритмическом языке | Графический вид алгоритма |
алг вычисление функции z аргa, b, x резz нач ввод a, b, x t:=ax2+b z:=t+cost-tgt выводx, z кон | |
Разветвляющийся алгоритм Вычислитьфункцию У по формуле:
1) Составить математическое уравнение задачи:
если , тогда
если , тогда
2) Составление алгоритма:
На алгоритмическом языке | Графический вид алгоритма |
алг вычисление функции у аргx рез у нач если то иначе все кон | |
Циклический алгоритм
Вычислить (n=1,…,10).
Составление алгоритмов:
На алгоритмическом языке | Графический вид алгоритма |
алг сумма цикл аргn резS дляn:=1 до 10 шаг 1 нц S:=S+sqr(n) кц кон | |
В графическом виде алгоритма представлена блок-схема цикла с параметром. Блок-схему цикла с предусловием и постусловием попытайтесь построить сами на уроках СРСП.
Основы алгоритмизации задач
Программы, написанные на языке программирования, в компьютере должны обязательно проходить процесс преобразования или трансляции. Осуществляется это с помщью специальных программ (трансляторов).
Транслятор (англ. translator - переводчик) – это программа-переводчик. Она преобразует программу, написанную на одном из языков высокого уровня, в программу, состоящую из машинных команд.
Трансляторы реализуются в виде компиляторов или интерпретаторов. С точки зрения выполнения работы компилятор и интерпретатор существенно различаются.
Компилятор (англ. compiler – составитель, собиратель) читает всю программу целиком, делает ее перевод и создает законченный вариант программы на машинном языке, который затем и выполняется (файл с расширением .ЕХЕ).
Интерпретатор (англ. interpreter – истолкователь, устный переводчик) переводит и выполняет программу строка за строкой.
После того как программа откомпилирована, ни сама исходная программа, ни компилятор более не нужны. В то же время программа, обрабатываемая интерпретатором, должна заново переводиться на машинный язык при каждом очередном запуске программы. Откомпилированные программы работают быстрее, но интерпретируемые проще исправлять и изменять.
Turbo Pascal ориентирован либо на компиляцию, либо на интерпретацию. Для разработки тестирования программы можно воспользоваться интерпретатором, а затем откомпилировать, а затем откомпилировать отлаженную программу, чтобы повысить скорость ее выполнения.
Язык программирования Паскаль получил свое название в честь великого французского математика и физика Блеза Паскаля, который в 1642 году изобрел машину для арифметических операций, так называемое «паскалево колесо». В конце 1968 г. профессор Никлаус Вирт и его сотрудники из швейцарского федерального института технологии в Цюрихе разработали первую версию языка Паскаль. Спустя два года – первый вариант компилятора. В 1971 г. Н.Вирт выпустил описание языка.
Одним из достоинств языка Паскаль является то, что он полностью воплотил в себя идею структурного программирования, суть которой заключается в том, что с помощью нескольких конструкций можно выразить в принципе любые алгоритмы.
Запуск языка «Паскаль»
Запуск интегрированной среды версии компилятора BorlandPascal 7.0, которая работает в защищенной режиме DOS, осуществляется следующим образом:
а) если среда программирования инсталлирована в системе Windows:
Пуск→Программы→ Borland Pascal→ BP(Borland Pascal)
б) если среда программирования не инсталлирована в системе Windows или вы работаете в системе DOS:
Активировать каталог, где находится программа BP.exe. Выделить ее и нажать клавишу Enter.
После загрузки редактора можно в рабочем поле набирать программу или корректировать ее с помощью клавиатуры или пунктов меню. Строка главного меню расположена в верхней части экрана:
Турбо-среда предоставляет удобные средства работы с программой: ее хранение, запуск на счет, отладку и т. д. Доступ к этим средствам осуществляется через главное меню, которое состоит из следующих опций:
File | Позволяет выполнять все основные операции с файлами (создавать новые, загружать имеющиеся, сохранять созданные и отредактированные файлы и т.п.) |
Edit | Позволяет выполнять все основные операции редактирования текста (копировать, восстанавливать, удалять фрагменты текста, а так же восстанавливать первоначальный вариант редактируемого текста) |
Search | Позволяет осуществлять поиск фрагментов текста и при необходимости производить замену найденного фрагмента новым |
Run | Позволяет запускать программу, находящуюся в рабочей зоне, а также при необходимости пошагово выполнять данную программу или ее часть |
Compile | Позволяет осуществить компиляцию программы, которая находится в рабочей зоне |
Debug | Содержит команды, облегчающие процесс поиска ошибок в программе |
Tools | Позволяет выполнять некоторые программы, не выходя из Среды Турбо Паскаля |
Options | Позволяет установить необходимые для работы параметры компилятора и самой среды |
Windows | Позволяет выполнять все основные операции с окнами (открывать, закрывать, перемещать, изменять размер) |
Help | Позволяет получить имеющуюся в системе справочную информацию. Необходимое подчиненное меню активизируется (открывается) |
Для перехода в верхнее меню нужно нажать клавишу F10.
Выйти из подчиненного меню можно, нажав клавишу [ESC].
Выход из Турбо-среды осуществляется нажатием Alt+X.
Удобным способом создания новых программ является модификация ранее созданных. Основной формой хранения текста программы являются файлы. Для этого необходимо научиться записывать программы в файлы, читать из файлов и т. д. Для этого необходимо пользоваться опциями подменюFile:
New | Новыйфайл | Очищает память редактора и переводит его в режим создания нового файла. Вновь создаваемому файлу присваивается имя NONAME.PAS, которое можно изменить при записи файла на диск |
Open | F3 Читать файл | На экране появится окно со списком файлов. В нем можно выбрать необходимый файл, который загружается в память редактора Турбо-Паскаль и таким образом делает его доступным для возможных изменений, а также прогона или отладки программы |
Save | F2 Сохранить файл | Переписывает файл из памяти редактора на диск. Файл записывается под своим именем, однако, если к этому моменту имя файла было NONAME.PAS, среда запросит, хотите ли Вы его переименовать. Опцию можно вызвать из режима редактирования с помощью клавиши F2 |
Saveas | Сохранить с новым именем | Переименовывает редактируемый файл и записывает его на диск под новым именем |
Saveall | Сохранить все в окнах | Записывает содержимое всех окон редактора в соответствующие дисковые файлы |
Changedir | Смена каталога | Позволяет изменить установленный по умолчанию диск и/или каталог |
Print/Print setup... | Печатьфайла | Позволяет напечатать файл на принтере |
DOS shell | Выход в DOS | Позволяет временно выйти из Турбо-Паскаля без выгрузки его из памяти. После такого выхода вы получаете доступ ко всем командам операционной системы DOS. Для возврата в Турбо-Паскаль достаточно ввести команду EXIT, и экран тотчас же окажется в том состоянии, которое было перед вызовом этой опции |
Exit | Alt-X Выход | Осуществляет выход из Турбо-Паскаля и выгрузку его из памяти. Эту опцию можно вызвать непосредственно из режима редактирования с помощью комбинации ALT+X |
Текстовый редактор
Ввод программы в компьютер представляет собой ввод текста в компьютер. При наборе текста программы полезно пользоваться следующими «горячими» клавишами:
Ins (Ctrl+V) | изменение режима «Вставка/Замена» |
Del | удаление символа над курсором |
BackSpase | удаление символа перед курсором |
Home/ End | перенос курсора в начало/конец текущей строки |
PgUp/PgDn (Ctrl+R/C) | перенос курсора на предыдущую/следующую страницу файла (программы) |
Ctrl+PgUp/PgDn | перенос курсора в начало/конец файла |
Ctrl+ Home/ End | перенос курсора в начало/конецэкрана |
Left/ Right | перенос курсора на один символ влево/вправо |
Ctrl+ Left/ Right | перенос курсора на одно слово влево/вправо |
Ctrl+W/Z | экран сдвигается вверх/вниз по тексту (при этом курсор неподвижен) |
Shift+Left/ Right | выделение символов слева/справа от текущего символа |
Shift +Up/Dn | выделение строк вниз/вверх от текущей строки |
Ctrl+Y | удаление текущей строки |
Alt+ BackSpase | восстановление удаленной информации |
Ctrl+T | удаление слова справа от курсора |
Ctrl+Q+Y | удаление части строки от курсора до конца строки |
Ctrl+N | вставка строки |
Ctrl+Ins | копирование выделенного блока в буфер обмена |
Shift+Ins | вставка информации из буфера обмена |
Shift+ Del | перенос выделенного блока в буфер обмена (удаление с сохранением в памяти) |
Ctrl+ Del | полное удаление выделенного блока |
F5/F6 | перемещение по открытым окнам с программами |
Alt+ F3 | закрытие текущего окна |
F5 | развернуть окно на весь экран |
Ctrl-F2 | удаление голубой полосы |
Ctrl+F8 | удаление красной полосы |
Выполнение программы
Турбо-Паскаль позволяет выводить на экран несколько окон с программами одновременно. Выполнять можно программу, которая находится в активном (текущем) окне. Признак активного окна — двойная рамка вокруг него.
Для выполнения программы надо выйти в меню и в пункте Run выполнить команду Run (или одновременно нажать клавиши Ctrl + F9. Система сначала запускает транслятор (интерпретатор), который переводит программу с Паскаля на язык машинных кодов и ищет синтаксические ошибки в программе. Если ошибки найдены, то программа не будет выполняться, произойдет возврат в редактор. Поверх текста программы появляется красная строка с сообщением об ошибке. После нажатия Esc окно исчезает, курсор устанавливается в строку с ошибкой. Для получения информации об ошибке надо нажать Ctrl+F1.
Когда все ошибки исправлены, программа начинает выполняться. Просмотреть результаты работы можно, нажав Alt+F5 (выводится окно пользователя). Возврат обратно в окно редактора – нажатие любой клавиши.
Прерывание работы «зацикленной» программы - Ctrl +Break.
Основные понятия:
алфавит TurboPascal:
латинские буквы от A до Z
арабские цифры 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
знаки препинания. , : ; ..
знаки арифметических операций + – * /
знаки логических операций =
специальные символы( ) { } [ ] ' := (* *)
Основные элементы Паскаля:
Идентификатор – последовательность латинских букв, арабских цифр, знаков подчёркивания. Начинается с латинской буквы. Длина до 127 символов. Используется в качестве имён переменных, меток, программ и подпрограмм. Нельзя в качестве идентификаторов использовать зарезервированные слова.
Зарезервированные слова – слова, используемые в операторах, названиях операций, функций и т. п. Всего их около 80. Например, begin, sin, while.
Константы – это величины, которые не могут менять своего значения в процессе выполнения программы.
В качестве констант могут использоваться числа, логические константы, символы и строки символов.
Целые числа записываются со знаком или без него по обычным правилам и могут иметь значение от –2147483648 до +2147483647.
Вещественные числа записываются со знаком или без него с использованием десятичной точки и/или экспоненциальной части. Экспоненциальная часть начинается символом е или Е, за которым могут следовать знаки «+» или «-» и десятичный порядок. Символ е (Е) означает десятичный порядок и смысл «умножить на 10 в степени». Например, запись 3.14Е5 означает 3,14 × 105 ,а запись -17е-2 – это -17× 10-2.
Логическая константа – это либо слово FALSE (ложь) либо слово TRUE (истина).
Символьная константа – это любой символ, заключенный в апострофы:
'z' – символ z;
'ф' – символ ф.
Строковая константа – последовательность символов, заключенная в апострофы. Если в строке нужно указать сам символ апострофа, он удваивается, например:
' Это - строка символов ';
' That''s string'.
Описание констант начинается со служебного слова const. Далее пишется имя, которое мы дали данной величине и после знака равенства пишется конкретное значение данной величины.
Const
=;
Переменные – это величины, которые могут менять свое значение в процессе выполнения программы или их конкретное значение изначально не определено.
Выражение – последовательность переменных и числовых констант, объединённых знаками арифметических (арифметическое выражение, например, Pi*r+1/2.5, Х/5 + 2.5 0) или арифметических и логических операций (логические выражения, например, Х + 2.5 = 0, x+1=12). Выражения всегда записываются в строчку, указывая все арифметические операции, включая знак умножения (например, математическое выражение записывается – (X+Y)/2.5-3*Sqrt(X*X-Y*Y)).
Комментарии – это пояснения, вставляемые в текст программы. Комментарий - любой текст, заключённый в { } или (* *). Комментарии не выполняются программой.
Оператор – это инструкция, которую должен выполнить TurboPascal. Программа состоит из последовательности операторов. На языке Паскаль операторы делятся на простые и составные.
Простыми операторами называются те операторы, в состав которых не входят другие операторы (присваивания, безусловного перехода, вызова процедур).
Составные операторы состоят из нескольких операторов. К ними относятся условные операторы, операторы вывода и операторы повторения. Классификация операторов относительно выполняемых фукнций изображена на рисунке.
Рис.1. Классификация операторов
Исполняемые операторы должны заканчиваться знаком «;» Существует несколько типов операторов:
Оператор присваивания – это последовательность из переменной, знака присваивания (:=) и арифметического выражения. Например, x:=x+1;
Структурный оператор – это оператор, состоящий из нескольких зарезервированных слов и логических проверок. К ним относятся операторы циклов и условные операторы.
Нестандартные операторы – это подпрограммы, оформленные стандартным образом и записанные в библиотеки (модули). Вызываются при указании имени и параметров.
Составной оператор – это группа операторов, заключённая между begin … end;
Begin
Оператор 1; Оператор 2; … Оператор n;
End;
Пустой оператор – оператор BeginEnd;, не выполняющий никакого действия.
Встроенные стандартные математические функции, используемые вTurbo Pascal.
Используются в арифметических выражениях.
Функция | Назначение | Тип аргумента | Тип функции |
Abs(x) | Вычисление абсолютного значения x | вещественный целый | вещественный целый |
sqr(x) | Вычисление квадрата x | вещественный целый | вещественный целый |
sqrt(x) | Вычисление квадратного корня из x | вещественный целый | вещественный вещественный |
sin(x) | Вычисление синуса x | вещественный целый | вещественный вещественный |
cos(x) | Вычисление косинуса x | вещественный целый | вещественный вещественный |
arctan(x) | Вычисление арктангенса x | вещественный целый | вещественный вещественный |
exp(x) | Вычисление экспоненты (числа e=2,71828…) в степени x | вещественный целый | вещественный вещественный |
ln(x) | Вычисление натурального логарифма x | вещественный целый | вещественный вещественный |
log(x) | Вычисление десятичного логарифма x | вещественный целый | вещественный вещественный |
Pi | Число | нет | вещественный |
Структура программы:
Заголовок программы (необязателен) | Programимя; |
Раздел описаний | Список используемых модулей | Uses ...; |
Метки | Label ...; |
Константы | Const ...; |
Типы | Type ...; |
Переменные | Var ...; |
Процедуры | Procedure ...; |
Функции | Function ...; |
Раздел операторов | Begin ; End. |
Переменные. Описание переменных
Все переменные должны быть описаны с указанием типа:
Var a, b : integer ; f, d, c : real ; Тип переменных указывается после списка переменных через двоеточие ( : ).
Числовые переменные можно описать по-разному, в зависимости от вида (целые, вещественные) и значности чисел:
Целыйтип |
Byte | 0…255 | 1 байт без знака |
Word | 0 ... 65535 | 2 байт без знака |
ShortInt | -128…127 | 1 байт со знаком |
Integer | -32768 ...32767 | 2 байт со знаком |
Longint | -2147483648 ... 2147483647 | 4байт со знаком |
Вещественный тип |
Single | 7-8 значащих цифр -1.510-45 ...3.410-48 | 4 байт |
Real | 11-12 значащихцифр -2.910-39 ...2.910-38 | 6 байт |
Double | 15-16 значащихцифр -5.010-324 ... 1.710-308 | 8 байт |
Extended | 19-20 значащихцифр -1.910-4951 ... 1.910-4932 | 10 байт |
Операторы ВВОДА:
Read (список переменных);
Readln (список переменных);
Происходит считывание данных с клавиатуры и запись их в переменные из по порядку. Вводить данные нужно через пробел или по нажатию Enter. Программа продолжится, когда будут считаны все данные. Отличия операторов заключаются в том, что второй оператор после ввода информации (выполнения оператора) переводит курсор на следующую строку, а первый оператор - нет.
Пример записи оператора - Readln(k,t,e);
Оператор Readln; без списка переменных используется для задержки информации на экране до нажатия на клавишу Enter и ставится в конце программы.
Операторы ВЫВОДА:
Write (список переменных, констант и арифметических выражений);
Writeln (список переменных, констант и арифметических выражений);
Например, Write(2+У, Х); Writeln (‘A=’, а); Write(а, с); Оператор выполняет вычисление значений выражений и вывод значений. Отличия операторов заключаются в том, что второй оператор после вывода переводит курсор на следующую строку, а первый оператор - нет.
Переменные типа Real рекомендуется выводить в форматированном виде.
Форматированный вывод - вывод информации с указанием размерности, т.е. после переменной через двоеточие указывается количество символов под все число, а затем, для вещественных переменных, снова через двоеточие число десятичных знаков.
Например: Write(а:5:2,с:6:3); - пода отводится 5 символов, включая точку, знак числа и два десятичных знака величины числа. Знак «+» перед числом при выводе будет опущен. Если в а находится число 2,5678, то выведется на экран: _2.56
Целочисленные арифметические операции:
Операция | Назначение | Пример записи | Тип используемых переменных | Тип результата |
div | Вычисление частного при делении a на b | C:=a div b; | целый | целый |
mod | Вычисление остатка от деления a на b | D:=a mod b; | целый | целый |
Например, Y := 25 div 3; (переменной Y присваивается 8), Y := - 25 div 4; (переменной Y присваивается -6), Y := 13 mod 3; (переменной Y присваивается 1), Y := 13 mod 4; (переменной У присваивается 1).
Функции, преобразования числовых переменных:
Функция | Назначение | Тип аргумента | Тип функции |
trunc(x) | Нахождение целой части x (дробная часть числа отбрасывается) | вещественный целый | целый |
int(x) | Округление вещественного числа x по направлению к нулю | вещественный | вещественный |
round(x) | Округление x в сторону ближайшего целого по математическим правилам | вещественныйцелый | целый целый |
Frac(x) | Вычисление дробной части числа Х | вещественный | вещественный |
Примеры: Y:=trunc(13.999); (переменной Y присваивается 13), Y:=frac(13.111); (переменной Y присваивается 0.111), Y:=round(3.145); (переменной Y присваивается 3), Y:=round(-12.5); (переменной Y присваивается -13), Y:=int(2.7) (переменной Y присваивается 2), Y:=int(-32.3) (переменной Y присваивается -32).
Символьные переменные описываются как CHARи представляют собой тип данных, предназначенный для хранения одного символа (буква, знак, код). Переменная типа CHAR занимает один байт.
Логические переменные (тип Boolean) – это переменные, которые могут принимать только два значения истина - true(1) или ложь - false (0). Используются такие переменные для хранения результатов логических вычислений. Для булевых переменных разрешены только операции сравнения:
Логическая операция | Наименование |
= | Равно |
| Не равно |
And | Логическое И (логическое умножение, конъюнкция) |
Or | Логическое ИЛИ (логическое сложение, дизъюнкция) |
Xor | Логическое исключающее ИЛИ (результат тогда 1, когда на входе все нули) |
Not | Логическое НЕ |
Тип переменной | Символьные переменные | Логический тип |
Определение | Переменная, которая может содержать 1 символ, и занимает 1 байт | Переменная, которая может принимать только два значения – true , false |
Описание | CHAR Например: Var c: char; | BOOLEAN Например, Varc,а: boolean; |
Дополнительная информация | Все имеющиеся символы имеют коды (таблица кодов ASCII). Есть функции работы с символьными переменными и их кодами. | Получается в результате выполнения логических выражений с операциями: =,,,= (простые логические выражения) иNot, And, Or, Хor(логические функции) – используются для объединения простых логических выражений в составные, при чем простые логические выражения берутся в круглые скобки. |
Использование | В различных операторах, например: | Пример простого выражения - X2 Пример составного выражения - (X2) and (X=10) Используются в операторах присваивания, ветвления и цикла. |
Примеры | С:=’a’; Writeln(‘C=’,c); | X:=4; A:=(X2) and (x If A=True then y:=1 else y:=1/x; |
Функции, используемые для работы с порядковыми переменными:
Название функция | Назначение | Тип аргумента | Тип функции |
Pred(x) | Определение предшественника взятого символа х | Порядковый | Порядковый |
Succ(x) | Определение последующего символа за взятым символом х | Порядковый | Порядковый |
Ord(x) | определяет код символа. Например, Ord(‘A’) - 65 | Порядковый | Целочисленный |
Chr(x) | определяет символ по коду. Например, Chr(65) - ’A’ | Целочисленный | CHAR |
Примеры программ:
Объявите переменные, необходимых для вычисления значения функции y=x2. | Var x:real, y:real; |
Объявите переменные, необходимые для вычисления площади кольца. | Var r1,r2,s:real; |
Запишите на языке Паскаль Y=-2,7x3+0,23x2-1,4 | Y:=-2.7*x*x*x+0.23*x*x-1.4 |
Найти остаток от деления и округленный результат деления двух целых чисел, заданных с клавиатуры | Vara,b,c,d:integer; Begin Writeln(‘Введите два целых числа’); Readln(a,b); с:= a div b; d:= a mod b; Writeln(‘округленный результат - ’, c ); Writeln(‘остаток от деления - ’,d); Readln; end. |
Вычислите значение функции: | Var Y,x:integer; Begin Write(‘x=’); Readln(x); Y:=5*x*x+9*x+12; Writeln(‘Y=’,Y); End. |
Найдите длину круга l, если радиус окружности R (l=2πR) | Const π=3.14; Var R:integer; L:Real; Begin Write(‘R =’); Readln(R); L:= 2*π*R; Writeln(‘L =’, L); End. |
Операторы управления
К операторам управления языка Паскаль относятся операторы безусловного перехода, условного перехода и операторы цикла.
Условный оператор (выбор одного из двух направлений)
В разветвляющихся вычислительных процессах отдельные этапы вычислений выполняются не всегда в одном и том же порядке, а в зависимости от некоторых условий выбираются для исполнения различные их последовательности.
Структурные операторы. Структурные операторы составляются объединением других операторов с помощью определенных правил. Они разделяются на три группы – составные, условные и повторения (циклические).
Составной оператор. Составной оператор состоит из нескольких операторов, разделенных между собой знаком (;), заключенных включенных в ключевые слова begin и end. Составной оператор может располагаться в любом месте программы согласно правилу языка и выполняется как один оператор.
Begin
оператор 1;
оператор 2;
..................
оператор n-1;
оператор n;
end.
Ключевые слова Begin (начало), end (конец) называются операторными скобками. После слова Begin и после оператора перед словом end разделительный знак «;» не ставится. Составной оператор может быть вложенным, т.е. внутри составного оператора может быть другой составной оператор.
Условные операторы. Для организации алгоритмов с процессом разветления используются условные операторы. Разветление зависит от выполнения или невыполнения определенного условия. Иногда в одной ветви ни одна операция не выполняется. В качестве условия исползуется значение логического выражения. В Турбо Паскале имеются два условных оператора: if и case.
Условный оператор If. Оператор If (если) является широко распространенным способом изменения возможностей естественного выполнения действий в программе.
нет
да
Блок-схема оператора IF.
Формат записи оператора: if then [ else ];
если тогда иначе
Условие – логическое выражение, которое может быть истинным или ложным.
оператор 1, оператор 2 – какой либо оператор, в том числе и составной оператор, т.е. несколько операторов, объединенных операторными скобками begin end.
Часть конструкции, заключенная в квадратные скобки может отсутствовать.
Принцип работы оператора:
проверяется условие
если условие истинно (верно), то выполняется оператор 1
если условие ложно (неверно), то выполняется оператор 2
если else отсутствует, то, при ложности условия, выполняется следующий за if оператор.
Например, из двух чисел a и b вывести на экран значение большего числа. | if a b then writeln (‘большее число a - ’, a) else writeln (‘большее число b - ’, b); |
Внимание! Перед словом else нельзя ставить точку с запятой. Обратите внимание на запись служебных слов и операторов. Каждое слово else под своим, словом if. Для большей наглядности и «читаемости» текста программы операторы, следующие за словами then и else можно писать на следующей строке.
Возможная форма оператора: if then ;
Пример использования оператора: Вычислите значение функции f(x) в зависимости от значения аргумента x. | if x if x=0 then y=0; if x0 then y=sqr(x); |
Оператор выбора
Выше мы рассмотрели, что в команде (операторе) разветвления в зависимости от выполнения или невыполнение определенного условия выполняется первая или вторая серия (оператор 1 или оператор 2). Однако часто место двух возможностей существует несколько возможностей, т.е. процесс является многоразветвленным. Оператор выбора среди нескольких операторов организует множественное разветвление (путем выбора).
Оператор Case позволяет записать наглядно и просто алгоритмы с многими разветвлениями. Разветвление начинается с проверки условия некоторого выражения. Это выражение при выполнении оператора должно принимать определенное значение, которое выполняет роль метки для операторов в разветвлении. Если вычисленное значение выражения совпадает с некоторой указанной меткой, то выполняется оператор, помеченный этой меткой.
нет
Блок-схема оператора CASE
Формат записи:
Сase of
:;
:;
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
:;
Еlse n+1]
End;
Переменная может быть любого порядкового типа, кроме longint (word, boolean, integer, char… или перечисляемый тип).
Список значений выбора - это значения, которые могут принимать переменная или выражение, перечисленные через запятую или, если значения принадлежат какому-либо интервалу, с использованием лексемы " . . " (1..7 или 'а' ..'м')
Оператор - любой оператор, в том числе составной.
Принцип работы оператора:
Значение переменной или выражения сравнивается с предложенными списками значений;
Если найдено нужное значение, выполняется соответствующий оператор;
Если нужное значение не найдено в перечисленных списках, выполняется оператор после else;
Если else отсутствует, то, когда нужное значение не найдено, выполняется следующий за case оператор.
Ветви здесь представлены элементами выбора, разграниченными точкой с запятой, а слово else с последующим оператором могут отсутствовать. Элемент выбора – это оператор, например составной, снабжённый одной или несколькими константами выбора:
Пример использования оператора: Написать программу, которая запрашивает номер месяца и выводит название времени года | Program M1; var month : integer; begin writeln (‘введите номер месяца от 1 – 12’); readln (month); case month of 1,2,12 : writeln(‘зима’); 3,4,5 : writeln(‘весна’); 6,7,8 : writeln(‘лето’); 9,10,11 : writeln(‘осень’); else writeln (‘ошибка ввода!’); end; end. |
Практические задания:
Отработка навыков использования операторов ветвления
Написать программу, которая проверяет, является ли четным введенное с клавиатуры число | Program M2; Var n:integer; Begin Readln(n); Write(‘число’, n,’-‘); If n mod 2=0 then writeln(‘четное’) else writeln(‘нечетное’); End. |
Написать программу, которая запрашивает номер дня недели и выводит название дня недели. | Program M3; Var day: integer; Begin Writeln (‘Введите номер месяца от 1 – 12); Readln(day); Case day of 1: writeln(‘Понедельник’); 2: writeln(‘Вторник’); 3: writeln(‘Среда’); 4: writeln(‘Четверг’); 5: writeln(‘Пятница’); 6: writeln(‘Суббота’); 7: writeln(‘Воскресенье’); else writeln(‘число д.б. от 1 до 7’); end; end. |
Операторы повторения
Очень часто приходится повторять определенную часть алгоритма для различных значений аргумента. Для организации таких процессов используется алгоритмы с циклической структурой. На языке программирования – операторы повторения. Они составляются по правилам на основе различных закономерностей. Для выполнения процессов повторения на языке Паскаль предусмотрены три вида операторов цикла: арифметический цикл (параметрический цикл) - FOR, цикл с предусловием – WHILE и цикл с постусловием – REPEAT.
Оператор цикла с параметром
Используется, когда известно, сколько раз выполняется циклическая часть программы.
Блок-схема оператора FOR
Формат записи: for := to/downto do ;
для до делать
параметр цикла - числовая переменная типа integer
начало, конец - арифметическое выражение
to - используется когда начало меньше конца
downto - используется когда начало больше конца
оператор - тело цикла, любой оператор, в том числе и составной
Принцип работы:
Параметру присваивается значение начало;
Выполняется оператор - тело цикла;
Затем параметр сравнивается с концом;
Если параметр больше/меньше конца, то начинает работать следующий оператор за оператором цикла, в противном случае к параметру прибавляется/отнимается единица;
Снова выполняется оператор;
Так продолжается пока параметр не станет больше/меньше конца.
Оператор цикла с предусловием
Оператор While осуществляет повторение по предварительной проверке условий, а также с помощью ключевых слов While.
Блок-схема оператора WHILE
Формат записи: while do ;
пока делать
условие - логическое выражение
оператор (тело цикла) - любой оператор, в том числе и составной.
Здесь: while –«пока», do–«выполнить». А условие повторения – логическое выражение. Тело цикла – простой или составной оператор, которой выполняется с повторением. Перед каждом пвторением тела цикла вычисляется значение условия повторения.
Принцип работы:
Проверяется истинность условия;
Если условие истинно выполняется оператор;
Цикл работает, пока условие не станет ложным.
Оператор цикла с постусловием
Оператор Repeat аналогичен оператору While, с той разницей, что условие повторения цикла проверяется в конце цикла, поэтому тело цикла выполняется хотя бы один раз. Вторая особенность – тело цикла выполняется, если условие ложно, и прекращается, если условие истинно (в операторе While было наоборот).
Блок-схема оператора REPEAT.
Формат записи: repeat until
повторять до тех пор пока
условие - логическое выражение
операторы (тело цикла)- любое количество любых операторов, в том числе и составной.
Этот оператор использует ключевые слова repeat – повторять и until – до тех пор пока. Оператор состоит из тела цикла и условия повторения.
Принцип работы:
Выполняются все операторы между repeat и until;
Проверяется ложность условия;
Цикл работает, пока условие не станет истинным.
Особенности и отличия операторов цикла
Вход в цикл возможен только через его начало;
Переменные оператора должны быть определены до входа в цикл;
Необходимо предусмотреть выход из цикла, чтобы он не повторялся бесконечно;
Оператор while repeat может ни разу не выполнится;
оператор repeat обязательно выполниться хотя бы раз.
Примеры программ
Написать программу, которая выводит на экран табл. умножения, например на 7. | Program M4; Var m,n,p:integer; Begin For i:=1 to 10 do Writeln(7,’*’,I:2,’=’,7*I:2); end. |
Написать программу, которая выводит табличные значения функции у=x+2. Диапазон изменения аргумента от – 4 до 4, приращение аргумента - 0.5 | Program M5; var x,y:real; begin clrscr; writeln('y':20,' : ','x':5); writeln(' --------------'); x:=-4; repeat y:=abs(x)+2; writeln(y:20:1,' : ',x:5:1); x:=x+0.5; until x4; end. |
Написать программу, которая определяет максимальное число из введенной последовательности положительных чисел. Завершение ввода – 0. | Program M6; Var a{очередное число},m{макс.число}:integer; Begin M:=0; Repeat Writeln(‘введи число’);Readln(a); If am then m:=a; Until a=0; Writeln(‘max=’,m); end. |
Контроль
Вопросы:
Что такое транслятор, компилятор, интерпретатор?
Как загрузить TurboPascal?
Назовите элементы главного меню редактора TurboPascal.
Перечислите основные понятия языка TurboPascal.
Нарисуйте структуру программы TurboPascal.
Назовите операторы ввода-вывода.
Назовите дополнительные арифметические операции и функции, преобразования числовых переменных.
Какие существуют типы данных?
Что такое порядковые типы переменных?
Как работать в среде TurboPascal?
Как нужно набирать, корректировать и отлаживать программы?
Как сохранять, загружать и корректировать программы?
Как преобразовываются числовые переменные?