русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Определения

Операнд – 1) величина в выражении, над которой производится операция; аргумент операции; 2) часть машинной команды, определяющая объект, над которой выполняется операция.

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

Транслятор – программа или техническое средство, выполняющее трансляцию программы.

Компиляция(compilation) – трансляция программы на язык, близкий к машинному; трансляция программы, составленной на исходном языке, в объектный модуль осуществляется компилятором.

Интерпретация– трансляция и выполнение каждого отдельно взятого оператора исходной программы перед трансляцией и исполнением следующего оператора.

Достоинство по сравнению с компиляцией – возможность пошагового прослеживания и выполнения программы, недостаток – в снижении скорости выполнения.

Интерпретатор– вид транслятора, осуществляющего пооператорную (покомандную) обработку и выполнение исходной программы или запроса.

Данные – числа и кодированные символы, которое используются как операнды команд. Часто термин «данные» используется для любой цифровой информации. Иногда сама программа может рассматриваться как данные, если она обрабатывается другой программой. Таким примером является задача компиляции (перевода) исходной программы с языка высокого уровня на язык машинных команд и данных. Исходная программа представляет входные данные для программы – компилятора. Компилятор переводит исходную программу в программу на машинном языке.

Информация, которая обрабатывается на ЭВМ, должна быть представлена в соответствующем формате. Так как в аппаратуре ЭВМ используются электронные схемы, в которые имеют только два устойчивых состояния – включено и выключено, то применяется двоичное кодирование информации. Таким образом, каждое число, символ текста или команда кодируется как цепочка двоичных цифр (битов), причём каждая цифра принимает одно из двух возможных значений. Числа обычно представлены в двоичной позиционной системе счисления. Иногда используется двоично-десятичное кодирование, когда каждая цифра кодируется четырьмя битами.

Буквенно-цифровые символы также представляются в виде двоичных кодов. Разработано несколько схем кодирования. Двумя наиболее распространёнными являются ASCII (Американский стандартный код обмена информации – American standard code for information interchange) и EBCDIC (расширенный двоично-десятичный код обмена – Extend Binary Coded Decimal Interchange Code). В первом каждый символ представляется семью битами, во втором - восьмью битами.

Системное и прикладное программное обеспечение

Программное обеспечение (ПО)- software;

Аппаратное обеспечение (АO) – hardware.

Термин ПО относится ко всем программам, составленным для выполнения на ЭВМ. Эти программы могут быть записаны на любом из языков программирования. Программы делятся на:

- прикладные программы, или программы пользователя;

- программы вычислительной системы, или системное программное обеспечение.

Программы пользователя предназначены для решения на ЭВМ различных научных и управленческих задач. Системное программное обеспечение включает программы, которые транслируют программы пользователей в программах на машинном языке. Другие системные программы используются для загрузки этих оттранслированных программ в оперативную память перед их выполнением. Программы трансляторы иногда называют процессорами языка программирования. Набор подпрограмм, применяемых для управления работ аппаратурных ресурсов (ЦП, ОП, массовой памяти большой емкости, УВВ и т.д.) составляют важную часть системного программного обеспечения в вычислительных системах. К числу таких подпрограмм относятся и программы операционной системы (ОС). Основная функция программ ОС заключается в планировании, инициировании и управлении работой, как каналов, так и ЦП.

Языки и трансляторы.

Наиболее элементарным языком является машинный язык, в котором программы представляются с помощью двоичных кодов машинных команд и элементов данных (байтов или слов). Программы на машинном языке для конкретной ЭВМ могут быть выполнены на ней без использования какой- либо другой программы. Однако программирование на машинном языке является трудоемким, и поэтому программы обычно пишутся на языке, имеющем более символическую и стилизованную форму. Простейшими являются языки ассемблера.

Проблемно – ориентированные языки, такие как Фортран, ПЛ-1, Кобол, Алгол и другие, часто называются языками высокого уровня, т.к. они имеют широкий набор операционных средств и управляющих операторов, которые существенно превосходят основные типы команд в языках ассемблера. Программы, написанные на любом из языков, имеющих более высокий уровень, чем машинный, называется исходной программой.

Исходные программы транслируются в программы на машинном языке с помощью системных программ, называемых трансляторами. Для языков ассемблера эти трансляторы называются ассемблерами. Когда исходная программа представлена на языке высокого уровня, транслятор называется компилятором. Результат процесса трансляции называется объектной программой. В простейшем случае она получается на машинном языке; она может быть загружена в оперативную память и выполнена сразу.

Основные этапы подготовки задач к решению на ЭВМ.

В процессе подготовки задачи к решению на ЭВМ можно выделить ряд последовательных этапов:

1. математическая постановка задачи;

2. выбор или разработка метода решения;

3. разработка алгоритма;

4. написание программы и подготовка ее к вводу на ЭВМ;

5. отладка программы и ее выполнение.

История создания и особенности языка Паскаль.

Вклад Андерса Хейлсберга из Borland.

В 1971 году профессор Никлас Вирт из технического университета в Цюрихе (Швейцария) разработал новый важный язык, известный под названием «Паскаль» (названный в честь хорошо известного математика XVII века Блеза Паскаля).

Язык Паскаль основан на Алголе, но содержит ряд усовершенствований. В нем намного удобнее средства манипулирования нечисловыми данными. Он предоставляет более удобные средства ввода – вывода, позволяет легко обрабатывать структуры данных (списки и таблицы), а также пользователь может определить собственные типы данных. Как и Алгол, Паскаль является языком с блочной структурой. Это означает, что для определенных целей программы разбиваются на блоки, в которые можно вносить изменения, в один блок, не касаясь других. Язык Паскаль способствует написанию хорошо структурированных программ, что значительно повышает производительность труда программиста.

Существуют различные версии (диалекты) языка Паскаль. Мы будем рассматривать систему программирования Турбо Паскаль (7.0), разработанную американской корпорацией Borland International. Система включает компилятор с языка программирования Паскаль, и программную оболочку, способствующую повышению эффективности создания программы. Первый назовем языком Турбо Паскаль, а второй – средой Турбо Паскаль.

Алфавит языка

Определение Алфавит – совокупность допустимых в языке символов. В ТР все компоненты формируются из множества символов стандарта ASCII. Элементы алфавита условно разделены на четыре группы:

- символы, используемые в идентификаторах;

- разделители;

- специальные символы;

- неиспользуемые символы.

Идентификаторы

Определение Идентификатор – имя любого объекта программы, включает буквы, цифры и символ подчеркивания.

В качестве букв используются 26 латинских букв (прописных и строчных) от A(a) до Z(z). Буквы могут использоваться также для обозначения цифр от 10 до 15 в шестнадцатеричной системе, строковых константах, служебных словах комментариях. Прописные и строчные буквы в идентификаторах, числах и служебных словах не различаются. Однако в строках символов и комментариях строчные и прописные буквы различаются и не преобразуются друг в друга при компиляции.

В качестве цифр допустимо использовать 10 арабских цифр от 0 до 9. В идентификаторах они могут присутствовать в любой позиции, кроме первой. Цифры используются в изображении числовых констант. Символ подчеркивания может находиться в любой позиции.

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

Разделители

Разделители используются для отделения друг от друга идентификаторов, чисел, зарезервированных слов (служебных). В качестве разделителей используются:

- пробел;

- любой управляющий символ (коды от 0 до 31), включая символ возврата каретки (код 13);

- комментарий.

Комментарий

Комментарий либо заключается в скобки { } либо в скобки (* *) и может занимать любое количество строк. Если за открывающейся скобки нет знака $, то комментарий является директивой компилятора. Во время компиляции программы все комментарии игнорируются за исключением директив.

Пример {$ В+} - полное вычисление логических выражений. Ключ является локальным. По умолчанию используется ключ {$В-}.

Специальные символы

Делятся на три категории:

- знаки пунктуации;

- знаки операций;

- зарезервированные (служебные) слова.

Знаки пунктуации

{}, (**), [ ], ( ), ‘ , := , ; , : , =, , , .. , . , ^, @, #, $.

{ } - скобки комментария;

(* *)

[ ] - выделение индексов массивов, элементов множеств, размер строки.

( ) - выделение выражений, списков параметров;

‘ - апостроф для выделения символа или строковой константы;

:= - знак присваивания значения переменной, типизированной константе или функции;

; - разделение предложений программы (операторов и объявлений);

: - отделение переменной или типизированной константы от типа, метки от оператора;

= - отделение идентификатора типа от описания типа или константы от её значения;

, - запятая для разделения элементов списка;

. . - разделение границ диапазона;

. - обозначение конца программы, отделение целой части от дробной в вещественном числе, отделение полей в записи, отделение идентификатора от имени модуля или объекта, в котором он находится;

^ - обозначение типа указателя, значения величины по её указателю или управляющего символа (коды от 0 до 31);

@ - обозначение адреса переменной, типизированной константы, подпрограммы, метода;

# - обозначение символа по его коду;

$ - обозначение директивы компилятора или знак шестнадцатеричного числа.

Знаки операций

Знаки операций предназначены для обозначения тех или арифметических действий, логических или иных. Они бывают двух типов:

- состоящие из небуквенных символов (+, -, *, и т. д.);

- буквенные операции (not - логическая операция отрицания, div - деление целых чисел, mod - остаток от деления целых чисел), представляющие собой зарезервированные слова.

Зарезервированные слова

Зарезервированные слова включают служебные слова (begin, end, div) и имена директив (external, forward). Служебные слова можно использовать только по их прямому назначению и нельзя переопределять. Директивы имеют свое определенное назначение, но в отличие от служебных слов их можно переопределять, что крайне нежелательно.

Неиспользуемые символы

Некоторые символы кодировки ASCII, такие как %, & и т.д. включая буквы русского алфавита, не используются в Turbo Pascal, но их можно использовать в комментариях и символьных строках.

Структура программы

В программе, написанной на стандарте языка Паскаль, могут быть следующие разделы:

- заголовок программы;

- раздел объявления меток;

- раздел объявления константы;

- раздел объявления типов;

- раздел объявления переменных;

- раздел объявления процедур и функций;

- тело программы (обязательная часть).

Заголовок программы состоит из зарезервированного слова program и имени программы (со списком параметров, заключенных в круглые скобки), завершается заголовок точкой с запятой.

В Turbo Pascalимеются особенности в структуре программы. Так, заголовок не обязателен и игнорируется компилятором. Порядок размещения разделов произвольный, можно создавать несколько разделов.

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

Исключение - определение типа указателя через неопределенный до этого тип. Однако этот тип в дальнейшем должен быть определен обязательно. В Турбо Паскале существует еще один раздел - раздел объявления используемых модулей.

Тело программы начинается словом begin, заканчивается словом end с точкой, которая является признаком конца программы.

Пример Программа, вычисляющая сумму двух чисел.

program EXAMPLE1; {заголовок программы}

var x,y,summa: real {раздел объявления переменных}

begin

writeln ('введите числа x и y'); {вывод сообщения на экран}

readln (x,y); {чтение двух чисел}

summa:=x+y; {определение суммы}

writeln ('сумма чисел х и у равна', summa); {вывод результата}

end.

Типы данных

Определение Тип данных - множество величин, объединенных определенной совокупностью допустимых операций.

Классификация типов данных

- простые типы;

- структурированные типы;

- указатели;

- процедурные типы;

- объекты.

Типы делятся на стандартные (предопределенные) и определяемые программистом.

Это значит, что для первых не нужно первоначальное определение, а для вторых - необходимо. К стандартным типам, не требующим предварительного определения, относятся целые типы, вещественные типы, логические типы, символьный тип - char, тип строк - string, ASCIIZ-строки - pchar, текстовый файл - text, тип-указатель - pointer.

Все другие используемые типы данных должны быть определены либо в разделе объявления типов, либо в разделе объявления переменных или типизированных констант.

Раздел объявления типов начинается зарезервированным словом type, после которого определяются вводимые типы. Определение каждого нового типа начинается с идентификатора типа. За ним следует знак равенства, затем самоопределение, завершающееся точкой с запятой.

type

<имя типа 1> = <определение типа 1>;

<имя типа 2> = <определение типа 2>;

<имя типа N> = <определение типа N>;

Простые типы данных (скалярные)

Определение Тип данных называется простым, если его значение не содержит составных частей (компонентов). Простой тип определяет упорядоченное множество значений параметров.

Turbo Pascal имеет следующие простые типы:

- целые типы;

- логические типы;

- символьный тип;

- перечисляемый тип;

- тип-диапазон;

- вещественные типы.

Все простые типы, кроме вещественных, называют порядковыми.

Целые типы

В стандартном Паскале определен единственный тип Integer, в Турбо Паскале - Shortint, Integer, Longint, Byte, Word.

Тип Диапазон Формат Размер в байтах
Shortint -128..127 Знаковый
Integer -32768..32767 Знаковый
Longint -2147483648..2147483647 Знаковый
Byte 0..256 Беззнаковый
Word 0..65535 Беззнаковый

Стандартные процедуры и функции, применяемые к целым типам

Обращение Тип результата Действие
abs(x)   возвращает модуль x
chr(b) char возвращает символ по его коду
dec(vx,[,i]) - уменьшает значение vx на i, при отсутствии i - на 1
inc(vx,[,i]) - увеличивает значение vx на i, при отсутствии i - на 1
Ui (i) byte Возвращает старший байт

Логические типы

Стандартный логический тип Boolean (размер - 1 байт) представляет собой тип данных, любой элемент которого может принимать лишь два значения: True и False (false<true).

В Турбо Паскале есть три логических типа: bytebool(1 байт), wordbool (2 байта), longbool (4 байта). Они введены для унификации с другими языками программирования и со средой Windows.

Для всех логических типов значению false соответствует число 0, записанное в соответствующее количество байтов. Значению True для типа Boolean соответствует число 1, записанное в его байт, а для других типов значению True соответствует любое число, отличное от нуля.

Ord(false)=0; Ord(true)=1; Succ(false)=true; Pred(true)=false.

Символьный тип

Стандартный символьный тип Char определяет полный набор ASCII- символов. Функция Ord от величины типа Char даёт код соответствующего символа. Сравниваются величины символьного типа по своим кодам.

Перечисляемый тип

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

type

<имя типа>=(<идентификатор 1, идентификатор 2,…, идентификатор №>);

Важно, в каком порядке перечислены идентификаторы при определении типа, т.к. первому идентификатору присваивается порядковый номер 0, второму – 1 и т.д.

Один и тот же идентификатор можно использовать в определении только одного перечисляемого типа. Функция Ord от величины перечисляемого типа даёт порядковый номер её значения.

Пример Перечисляемый тип

type

Operat=(Plus, Minus, Mult, Divide);

Boolean=(False, True);

Логический тип является частным случаем перечисляемого типа.

Пример

Program Code_of_Char; {Программа читает символ с клавиатуры и выводит на экран этот символ и соответствующий ему внутренний код}

var

ch: Char; {В эту переменную читается символ}

begin

write(‘Введите любой символ:’);

readln(ch); {Читает символ}

writeln(ch,’=’, ord(ch)); {Преобразует его к целому и выводит на экран}

end.

Тип-диапазон

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

type

<имя типа>=<мин. значение>..<макс. значение>;

Минимальное значение при определении такого типа не должно быть больше максимального.

Пример Определение типов-диапазонов.

type

Dozen=1..12; {числа от 1 до 12}

AddSub=Plus..Minus; {Операции сложения и вычитания}

Вещественные типы

В стандартном Паскале – только один вещественный тип Real. В Турбо Паскале– пять стандартных вещественных типов: Real, Single, Double, Extended, Comp.

Тип Диапазон Число значащих чисел Размер в байтах
Real 2.9*10-39..1.7*1038 11-12
Single 1.5*10-45..3.4*1038 7-8
Double 5.0*10-324..1.7*10308 15-16
Extended 3.4*10-4932..1.1*104932 19-20
Comp -263+1..263-1 19-20

Тип Single, Double, Extended и Comp можно использовать только при наличии арифметического сопроцессора или при включенном эмуляторе сопроцессора.

Замечание

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

В Турбо Паскале не допускается (почти невозможно) автоматическое преобразование типов. Исключение только в отношении констант и переменных типа integer, которые дополнительно используются в выражениях типа Real.

В Турбо Паскале есть средства преобразования данных, но они используются явно (по определенным правилам). Например, встроенная функция преобразует Real в Integer. Round выполняет округление до целого. Trunc отбрасывает дробную часть. CHAR преобразует целое в символ.

ORD преобразует символ в целое.

Выражения

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

Переменные

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

- разделе объявления переменных программы;

- разделе объявления переменных подпрограммы;

- разделе объявления переменных модуля;

- заголовке подпрограммы.

Раздел объявления переменных начинается зарезервированным словом var, за которым следуют объявления конкретных переменных, состоящие из имени переменной (имени через запятую), двоеточия и типа переменной (переменных). Каждое объявление завершается точкой с запятой.

var

<список переменных 1>:<тип 1>;

………………………………………...

<список переменных N>:<тип N>;

В разделе объявления переменных наряду с предопределенными типами можно использовать типы, объявленные в разделе объявления типов, а также новые, вводимые только для конкретных переменных.

Описание переменной должно содержать два элемента: имя переменной и её тип. Имя задается идентификатором.

Пример

var

a: integer; {стандартный (предопределенный) целый тип }

index: 0…5; { тип переменной Index задан типом-диапазоном,

включающим целые числа от 0 до 5}

s: Char; {стандартный (предопределенный) символьный тип }

sinus: Real; {стандартный (предопределенный) действительный

тип }

Semaphore: (Opened, Closed);{тип переменной Semaphore задан путем

перечисления всех возможных

значений (двух), которые обозначены

идентификаторами Opened и Closed}

Пример

var

x, y, z: real;

Ind 1, Ind 2: 1…100;

Det 1, Det 2, Det 3: (Wood, Steel, Glass);

Синтаксис описания переменной не позволяет задать её начальное значение. Для задания затем в программе с помощью оператора присваивания устанавливается её начальное значение (недостаток Турбо Паскаля, который часто ведёт к появлению ошибок, связанных с использованием неинициированных переменных).

Каждая переменная, описанная в блоке, должна указываться в описании не более одного раза.

Пример

type

Index = 1…100;

Det = (Wood, Steel, Glass);

var

x, y, z: real;

Ind 1, Ind 2: Index;

Det 1, Det 2, Det 3: Det;

В заголовке подпрограммы при определении переменных можно использовать лишь стандартный или ранее определенный тип.

Пример

type

Operat = (Plus, Minus, Multiply, Divide);

var

x, y, z: real; {предопределенный тип}

i, y, k: integer;

Operator: Operat; {ранее определенный тип}

Digit: 0…9; {объявление нового типа}

Переменные, объявленные не в подпрограмме, называются глобальными, так как они доступны во всех частях программы, в том числе и в подпрограмме.

Переменные, объявленные в подпрограмме называются локальными, то есть они доступны только этой подпрограмме.

Глобальные переменные постоянно располагаются в памяти, локальные размещаются в стеке лишь на время выполнения подпрограммы, затем область стека освобождается.

Константы

Определение Константаминазываются параметры программы, значения которых не меняются в процессе её выполнения.

Возможно:

- непосредственное использование значения констант;

- использование идентификатора константы.

Задание констант идентификаторами осуществляется в разделе объявления констант, начинающемся зарезервированным словом const. В Турбо Паскале возможно задание констант идентификаторами двумя вариантами:

- обычные константы, тип которых определяется их значением;

- типизированные константы, для которых в явном виде указывается их тип.

Обычные константы могут быть целого, вещественного, символьного, логического типа и типа string, типизированные константы – любого типа, кроме типа файл ( или содержащего компоненту типа файл).

Для обычных констант задаются их имена и значения, разделенные знаком равенства:

const

<имя константы 1> = <значение 1> ;

…………………………………………..

<имя константы N> = <значение N> ;

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

Целые константы

В изображении целых констант присутствуют лишь знак и цифры (знак + можно не указывать). Предполагается десятичная система счисления, однако можно использовать и шестнадцатеричную. В этом случае перед константой следует поставить знак $. Диапазон целых десятичных чисел – от -2147483648 до 2147483647, а шестнадцатеричных – от $00000000 до $FFFFFFFF. В Турбо Паскале заданы два предопределенных целых числа:

MaxInt = 32767 и MaxLongInt = 214748364.

Вещественные константы

Вещественные константы в своём изображении содержат десятичную точку или (и) показатель степени (символ Е или е.

Пример

const

X = -0.5; {представление с десятичной запятой (точкой)}

Y = 1.0; {представление с десятичной запятой (точкой)}

Z = -1E – 5; {представление с плавающей запятой (точкой)}

W = 7.5e + 15; {представление с плавающей запятой (точкой)}

m E(e) p - p включает знак ± и целое число;

m может быть целым и числом с десятичной запятой (точкой).

Строковые и символьные константы

Определение Строка символов – это последовательность любого, в том числе и равного нулю, количества символов из набора ASCII, расположенных на одной строке и заключенных в апострофы.

Ограничением здесь может быть максимальный размер строки, воспринимаемый компилятором, не более 126 символов.

Строка, состоящая из одного символа, называется символьной константой.

Если между апострофами нет ни одного символа, то такая строка называется нулевой строкой.

При необходимости поместить в строку символ “апостроф”, его следует записать дважды.

Для включения в строку символов, не имеющих физического изображения, используется их ASCII – код с символом # перед ним. Для изображения управляющих символов (коды от 0 до 31) можно использовать символ ^ и соответствующую букву, код которой равен коду управляющего символа плюс 64.

Пример Строковые константы.

const

Symbols = ‘TURBO’ ;

Apostroph = ’ ’ ’ ’ ;

TwoLines = ‘Line1’ #13#10 ’Line2’ ;

Return = ^M^J; {Коды управляющих символов 13 и 10}

Пример

Const

One=1;

High limit = 1000;

Low limit = -High limit;

Max real = 1.7E38;

Separator = ‘*****’;

В определениях констант не указан типзначения. Её тип определяется как единственно возможный для данной константы по её значению, которое сопоставляется с идентификатором.

Предпочтительнее в программе использовать вместо константных значений идентификаторы. Программу легче читать и понимать. В случае необходимости достаточно изменить значение константы в разделе объявления констант.

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

Типизированные константы (в том числе процедур и функций) инициализируются только один раз в начале работы программы.

Пример

Const

Maximum: integer = 9999;

Rea: Real = 0.5;

Bell: Char = #7;

Константные выражения

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

В них используются следующие функции: Abs, Chr, Hi, High, Length, Lo, Low, Odd, Ord, Pi, Pred, Ptr, Round, SizeOf, Succ, Swap, Trunc.

function Abs(x : < вещ. или целый тип >):< вещ. или целый тип >;

возвращает абсолютное значение аргумента.

function Chr (x:Byte) : Char ;

возвращает символ с указанным кодом.

х – число, определяющее код символа.

function Hi (x: < целый тип >) : Byte;

возвращает старший байт аргумента;

х – выражение типа integer или word;

function High (x: <тип>) : Word;

возвращает максимальное значение величины.

х – параметр или идентификатор порядкового типа, типа – массива, типа – строки или открытого массива.

function Length (s:string) : Integer;

возвращает текущий размер строки;

s – строка, у которой определяется размер.

function Lo (x: <целый тип> ) : Byte;

возвращает младший байт аргумента;

х – выражение типа Integer или Word.

function Low (x: <тип> ) : Word;

возвращает минимальное значение величины;

х – параметр или идентификатор порядкового типа, типа – массива, типа – строки, открытого массива.

function Odd (x: <longint> ) : Boolean;

проверяет, является ли аргумент нечётным числом;

(True – если нечётное, False – если чётное)

function Ord (x: <порядковый тип> ) : Longint;

возвращает номер значения порядкового типа (нумерация начинается с нуля);

х – выражение любого порядкового типа.

function Pi :Real;

Возвращает значение числа (3.1415926535897932385).

Число значащих цифр после запятой зависит от того, при каком ключе (директиве) {$N+} производится компиляция.

{$N-}

function Pred (x: <порядковый тип> ) : <порядковый тип>;

для выражения с порядковым типом получает предшествующее значение;

х – выражение порядкового типа, для которого определяется предшествующее значение.

Аварийная ситуация возникает, если предшествующего значения нет.

function Ptr (Seg, Ofs : Word) : Pointer;

преобразует адрес (адрес сегмента и смещение) в указатель;

Seg – адрес сегмента;

Ofs – смещение адреса.

function Round (x: Real) : Longint;

округляет вещественное число до целого;

аварийная ситуация возникает в случае, если результат округления выходит за пределы (границы) значения типа Longint.

function SizeOf (x) : Word;

возвращает размер аргумента в байтах;

х – переменная любого типа или любой тип.

function Succ (x: <порядковый тип> ) : порядковый тип;

для выражения порядкового типа возвращает последующее значение;

х – выражение порядкового типа, для которого определяется последующее значение;

аварийная ситуация возникает, если последующее значение не существует.

function Swap (x: <целый тип> ) : <целый тип>;

меняет местами младший и старший байты аргумента;

х – выражение типа Integer или Word.

function Trunc (x: Real) : Longint;

выделяет целую часть вещественного числа;

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

Пример Константные выражения.

$D00 (выражение, состоящее из константы)

‘Z’ (выражение, состоящее из символьной константы)

Pi/4

‘Turbo’+’-‘+’Pascal’ (объединение строк)

Пример

Const

Min = 0;

Max = 100;

Center = (Max – Min) div 2;

Message := ‘Out of memory’;

Error Txt := ‘Error:’ + Message +’.’;

Error Pos = 80-Length (Error Txt) div 2;

Ln10 = 2.3025855092994095684;

Ln10R = 1/Ln10;

Типизированные константы

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

const

<имя константы> : <тип константы> = <значение константы>;

Основные моменты, характеризующие типизированные константы

- ТК описываются в разделе объявления констант.

- ТК получают при описании начальные значения.

- Аналогично переменным могут получать новые значения (название констант достаточно условно). Можно их использовать как переменные таких же типов.

Пример

Max: integer = 9999;

Min: real = 0;

MyArray: array[1..3] of Color = (Red, Green, Blue);

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

Стандартные функции

В языке Pascal существует ряд заранее разработанных подпрограмм-функций, которые можно использовать как готовые объекты. В Турбо Паскале их количество увеличено, и они все объединены в стандартные модули.

Арифметические функции

Арифметические функции можно использовать только с величинами целого и вещественного типа.

Функции Назначение Тип результата
ABS(x) абсолютное значение аргумента совпадает с типом х
Arctan(x) арктангенс аргумента вещественный
cos(x) Косинус --//--
exp(x) eх --//--
Frac(x) дробная часть --//--
Int(x) целая часть --//--
Ln(x) натуральный логарифм --//--
Pi значение p --//--
sin(x) синус --//--
Sqr(x) Квадрат совпадает с типом х
Sqrt(x) квадратный корень вещественный

{$N+} Extended {3.141592653635897932385E+0000}

{$N-} Real {3.1415926536E+00 }

begin

P:=Pi;

end;

Функции преобразования типов

1. Chr(x) 2. High(x) 3. Low(x) 4. Ord(x) 5. Round(x) 6. Trunс(x)   Эти функции используются для преобразования типов величины, например, символов в целое число, вещественного в целое и т.д. См. стр. 20, 21.

1. Преобразование ASCII-кода в символы Chr(x), где х-аргумент целого типа в диапазоне [0..255]. Результат - символ, соответствующий данному коду.

2. High(x)-получение максимального значения величины.

Результат функции для:

- величины порядкового типа - максимальное значение величины;

- типа- массива – максимальное значение индекса;

- типа- строки – объявленный размер строки;

- открытого массива – количество компонент массива минус 1 (нумерация начинается с 0).

3. Low(x) – получение минимального значения величины.

Аргумент функции параметр или идентификатор порядкового типа, типа- массива, типа- строки или открытый массив.

4. Ord(x) – преобразование любого порядкового типа в целый тип.

Аргумент функции может быть величиной любого порядкового типа (логический, символьный, перечисляемый).

Результат – величина типа LongInt.

5. Round(x) – округление вещественного числа до ближайшего целого.

Аргумент – величина вещественного типа.

Результат – округлённая до ближайшего целого величина типа LongInt.

Если результат выходит из диапазона значений LongInt, то при выполнении программы возникает ошибка.

6. Trunc(Х) – получение целой части вещественного числа.

Аргумент – величина вещественного типа.

Результат – тип LongInt, целая часть этого числа.

Если результат выходит из диапазона значений LongInt, то при выполнении программы возникает ошибка.

Функции для величин порядкового типа

1. Odd(x) 2. Pred(x) 3. Succ(x) Эти функции позволяют выполнить ряд действий над величинами порядкового типа (найти предыдущий или последующий элемент, проверить на чётность/нечётность).

1. Odd(x) – проверка величины Х на нечётность.

Аргумент – величина типа LongInt.

Результат – равен True, если элемент нечётный, False – чётный.

2. Pred(x) – определение предыдущего значения величины Х.

Аргумент – величина любого порядкового типа.

Результат – предшествующее значение того же типа.

При применении функции к первому элементу последовательности возникает ошибка.

3. Succ(x) – определение последующего значения величины Х.

Аргумент – величина любого порядкового типа.

Результат – предшествующее значение того же типа.

При применении функции к последнему элементу последовательности возникает ошибка.

Знаки операций

- Арифметические операции;

- Логические операции;

- Операции с битами информации;

- Операции со строками;

- Операции отношения;

- Операция адресации @.

Типы операндов должны быть либо идентичные, либо совместимые.

Арифметические операции

Арифметические операции применяются только к величинам целых или вещественных типов. Их делят на унарные и бинарные операции.

+ не оказывает никакого влияния на значение величины (целых или вещественных типов).

- меняет знак величины.

Бинарные операции сведены в таблице:

Знак Операции Типы операндов Тип результата
+ Сложение Целые, хотя бы один вещественный Целый или вещественный
- Вычитание Целые, хотя бы один вещественный Целый или вещественный
* Умножение Целые, хотя бы один вещественный Целый или вещественный
/ Деление Целый или вещественный Вещественный
Div Деление целых чисел Целый Целый
Mod Остаток деления чисел Целый Целый

{$N+} - Результат будет типа Extended, в противном случае Real.

Делитель ≠ 0. Если используется знак операции, являющийся служебным словом, то он должен быть отделен от операндов хотя бы одним разделителем.

Логические операции

Логические операции применяются к величинам логического типа. Результат операции – величина логического типа.

Одна унарная логическая операция – not (отрицание). Три бинарные операции: and (и), or (или), xor (исключающее или).

Таблица истинности операции not

X not x
False True
True False

Таблица истинности операций and, or, xor

x Y X and y x or y x xor y
False False False False False
False True False True True
True False False True True
True True True True False

Таблица истинности операций and, or

x y x and y x or y
0*0 0+0
0*1 0+1
1*0 1+0
1*1 1+1

В Турбо Паскале выполняется два вида вычислений логических выражений: полное и укороченное.

В первом случае вычисляется каждый операнд, даже если уже известен результат всего выражения. Во втором - вычисляется до тех пор, пока не станет известным результат всего выражения. Затем вычисление последующих операндов прекращается.

Выбор вида вычисления осуществляется с помощью ключа компилятора $B:

{$B+} – полное вычисление логических выражений;

{$B-} – укороченное вычисление логических выражений.

Ключ является локальным. По умолчанию используется {$B-}.

Операции отношения

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

= - равно
<> - не равно
< - меньше
<= - меньше или равно
>= - больше или равно
> - больше

Операции отношения используются также для указателей, строк, множеств.

Круглые скобки

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

Порядок вычисления выражений

Вычисление значений выражений происходит в определенном порядке. Сначала определяются переменные и константы, входящие в выражения. Затем действия выполняются в соответствии с их приоритетами.

Таблица приоритетов действий при вычисления выражений

Группа Тип действий Операции или элементы
Вычисление в круглых скобках ( )
Вычислений значений функций Функции
Унарные операции @ ,not, унарный +, унарный -
Операции типа умножения *, /, div, mod, and, shl, shr
Операции типа сложения +, -, or, xor
Операции отношения =, <>, <, >, <=, >=, in

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

Операции с битами информации

Операции not, and, or, xor можно использовать для побитовых операций с целыми числами: not – унарная операция инверсии всех битов целого типа; and – побитовая логическая операция И двух целых чисел; or -побитовая логическая операция ИЛИ двух целых чисел; xor - побитовая логическая операция ИСКЛЮЧАЮЩЕЕ ИЛИ двух целых чисел.

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

Таблица правил выполнения побитовых операций

Операнд 1 Операнд 2 not and or xor
- - - -
- - - -
-
-
-
-

К этой группе относятся две операции:

shl - операция I shl J сдвигает содержимое I на J битов влево. Освободившиеся биты заполняются нулями.

Shr- операция I shr J сдвигает содержимое I на J битов вправо. Освободившиеся биты заполняются нулями.

Замечание При вводе данных с клавиатуры выполняются действия, пока не конец файла. Конец файла вводится с помощью клавиш Ctrl-Z (символ SUB, код 26). Код формируется как 90-64=26.

Дополнение

Операция Действие Тип операндов Тип результата
not отрицание любой целый тип операнда
and логическое И Любой целый наименьший целый
or логическое ИЛИ любой целый наименьший целый
xor логическое исключающее ИЛИ любой целый наименьший целый
@ адрес Любой указатель

Унарная операция @ применяется к операнду любого типа и возвращает результат типа Pointer, в котором содержится адрес операции.

Если операция применяется к процедуре или функции или методу в объекте, то ее результатом будет адрес точки входа в эту процедуру (функцию, метод). Этот адрес можно использовать только в подпрограмме, написанной на ассемблере или фрагментах inline.

Операторы языка

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

- простые;

- структурированные.

Простые операторы

Простыми являются операторы, которые не содержат в себе других операторов:

- оператор присваивания;

- обращение к процедуре;

- оператор безусловного перехода GOTO;

- пустой оператор.

Оператор присваивания

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

Тип выражения и тип переменной (или функции) должны быть совместимы.

Пример

X:=Y;

Z:=A+B;

Res:=(I>0) and (I<100);

I:=Sqr(Z) + I*K;

Оператор безусловного перехода

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

Метки в Турбо Паскале могут быть 2 типов:

- целое число в пределах от 0 до 9999;

- обычный идентификатор.

Все используемые метки должны быть перечислены в разделе объявления меток. Раздел начинается словом label (зарезервированное слово):

label 1,2,3,4, ABCA;

Одной меткой можно пометить только один оператор. Метка от помеченного оператора отделяется двоеточием.

Оператор можно помечать несколькими метками. Они отделяются друг от друга двоеточием.

С помощью этого оператора нельзя перейти из основной программы в подпрограмму или выйти из подпрограммы. Не рекомендуется осуществлять переход внутрь структурированного оператора.

Пустой оператор

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

Структурированные операторы

Так называются операторы, которые состоят из других операторов.

К ним относятся:

- составной оператор;

- условный оператор if;

- условный оператор case;

- оператор цикла repeat;

- оператор цикла while;

- оператор цикла for;

- оператор над записями with.

Составной оператор

Составной оператор представляет собой совокупность последовательно выполненных операторов, заключенных в операторные скобки begin и end. Перед end ; можно не ставить.

Структура оператора

begin

<оператор1>;

<оператор2>;

……………..

<операторN>

end.

Условный оператор

Оператор if реализует алгоритмическую конструкцию РАЗВИЛКА и изменяет порядок выполнения операторов в зависимости от истинности и ложности некоторого условия. Возможны два варианта оператора:

- if s then a else b; - полная развилка;

- if s then a; - укороченная развилка,

где

s – логическое выражение, истинность которого проверяется;

a – оператор, который выполняется, если выражение s истинно;

b – оператор, который выполняется если выражение s ложно.

Ни перед then, ни перед else ; ставить нельзя.

Структура оператора

Оператор if – средство ветвления вычислительного процесса:

if<условие> then <оператор 1> else <оператор 2>;

 
 


произвольное выражение логического типа

Пример

Program EXAMPLE4;

label out;

var

x,y,res:integer;

begin

write(‘введите делимое:’);

readln(x);

write(‘введите делитель:’);

readln(y);

if y=0 then

begin

writeln(‘Деление на ноль!’);

goto out;

end;

res:=x div y;

writeln(‘частное равно:’,res);

out:

end.

Пример Вложенный условный оператор

var

a,b,c,d:real;

begin

writeln(‘введите a,b,c,d ’);

readln(a,b,c,d);

if a>b then {1 вариант}

if c<d then

if c<0 then

c:=0;

else

a:=b;

{if a>b then {2 вариант}

if c<d then

if c<0 then

c:=0;

else

else

else

a:=b;}

writeln(a,’ ’,b,’ ‘,c,’ ‘,d);

end.

1 вариант

  a b c d  
1) 1< 3<  
   
2) 3<  
   
3) 2> 4>  
   
4) -3  
   
2 вариант
  a b c D
1) 1< 3<
 
2) 2> 3<
 
3) 2> 4>
 
4) -3
 
         
                       

Любая встретившаяся часть else соответствует ближайшей к ней «сверху» части then условного оператора.

program solod_1 ;

var

x,y:integer;

begin

writeln(‘введите x’);

readln(x);

if x<=0 then y:=-x;

if x<=1 then y:=x;

if x<=2 then y:=1;

if x<=3 then y:=-2*x+5;

writeln(‘y’,y)

end.

program solod_2;

label 1;

var

x,y: real;

begin

writeln(‘введите x’);

readln(x);

if x<=0 then y:=-x

else

if x<=1 then y:=x

else

if x<=2 then y:=1

else

if x<=3 then y:=-2*x+5

else goto 1;

writeln(‘y=’,y);

1:

end.

program solod_3;

label 1;

var

x,y: real;

begin

writeln(‘введите x’);

readln(x);

if x<=0 then y:=-x;

if (x>0)and(x<=1) then y:=x;

if (x>1)and(x<=2) then y:=1;

if (x>2)and(x<=3) then y:=-2*x+5;

if x>3 then goto 1;

writeln(‘y=’,y: 0:4);

1:

end.

Ниже представлены блок-схемы каждой из трех приведенных программ program solod_1, program solod_2, program solod_3 соответственно.

Блок-схема программы program solod_1

Блок-схемы программы program solod_2

Входные данные Результат выполнения программы
Solod_1 Solod_2 Solod_3
x Y Y Y
-2
0.5 0.5 0.5
1.5
2.5
         

Блок-схема программы program solod_3

Условный оператор CASE

С помощью этого оператора можно выбрать вариант из любого количества вариантов.

Структура оператора

case s of

C1: instruction 1;

C2: instruction 2;

………………….

CN: instruction N;

else instruction

end.

s- выражение порядкового типа, значение которого вычисляется;

C1, C2, CN- константы, с которыми сравнивается значение s;

instruction 1,instruction 2,instruction N - операторы, из которых выполняется тот, с константой которого совпадает значение выражения s;

instruction - оператор, который выполняется, если значение s не совпадает ни с одной из констант C1, C2, ..., CN.

Ветвь оператора else является необязательной. Если она отсутствует и значение выражения s не совпадает ни с одной из перечисленных констант, то весь оператор рассматривается как пустой. В отличие от оператора if перед else ; ставить можно. Если для нескольких констант выполняется один оператор, то они записываются через запятую. Возможно указать диапазон.

Структура оператора

case <ключ выбора> of<список выбора>

[else <оператор>] end;

Пример

case i of

0, 2, 4, 6, 8:writeln(‘четная цифра’);

1, 3, 5, 7, 9: writeln (‘нечетная цифра’);

10..100: writeln(‘число от 10 до 100’);

else

Writeln(‘отрицательное число или больше 100’);

end.

Работа оператора CASE

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

Оператор цикла REPEAT ( с постпроверкой условия)

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

Структура оператора

repeat

instruction 1;

instruction 2;

instruction N

until s;

repeat ….. until - своеобразные операторные скобки;

instruction 1, instruction 2,…, instruction N - выполняемые операторы, составляющие тело цикла;

s- логическое выражение, истинность которого проверяется в конце каждого цикла;

; ставить перед until необязательно.

Пример

function UpCase (ch: char): char;

{Преобразует строчную латинскую букву в заглавную. ch- выражение типа char, которое находится в пределах a .. z. Если ch - не в указанных пределах, функция не выполняет никаких действий.}

Program EXAMPLE 6;

var

x, y, sum: real;

ch: char;

begin

repeat

write (‘введите числа x и y’);

readln (x, y);

sum:=x+y;

writeln(‘сумма чисел равна’, sum);

write(‘завершить программу?’);

readln(ch);

until (UpCase(ch)=’Y’) or (ch=’д’) or (ch=’Д’)

end.

Структура оператора

repeat <тело цикла> until <условие>

Работа оператора REPEAT

Операторы выполняются хотя бы один раз, после чего вычисляется выражение s (<условие>). Если его значение FALSE, то оператор повторяется. Если TRUE, то работа оператора завершается.

Пример

Program Calc;

var

operation:char;

x,y,z: real;

stop:Boolean;

begin

stop:=false;

repeat

writeln;

write(¢x,y=¢);

readln(x,y);

write(¢операция:’);

readln(operation);

case operation of

¢+¢:z:=x+y;

¢-¢:z:=x-y;

¢*¢:z:=x*y;

¢/¢:z:=x/y;

else

stop:=true;

end;

if not stop then

writeln(¢результат=¢,z);

until stop

end.

Оператор цикла WHILE (с предпроверкой условия)

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

Просмотров: 626


Вернуться в оглавление



Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.