Реферат: Программирование на языке Турбо Паскаль

Лекция 1. Структура программы на языке Turbo Pascal

Приведём простейший пример программы, единственная целькоторой <span Times New Roman CYR""><span Times New Roman CYR"">–

вывести на экран какое-нибудь приветствие:

program Hello;

begin

 writeln('Hello, world!');

  readln;

end.

Первая строка ничего не делает, она просто содержит названиепрограммы. Затем, после слова beginначинаются собственно действия. В нашей программе их два: первое <span Times New Roman CYR""><span Times New Roman CYR"">–

это вывод строчки «Hello,world»<span Times New Roman",«serif»;mso-ansi-language: EN-US"> на экран, а второе <span Times New Roman CYR""><span Times New Roman CYR"">– ожидание нажатия клавиши «Enter», оно нужно для того,чтобы можно было увидеть результат программы, а затем уже нажать «Enter» и вернуться вТурбо-Паскаль. И, наконец, слово end с точкой в последней строке говорит о том, что программазакончилась. Действия, из которых состоит программа, называются операторами, они отделяются друг отдруга точкой с запятой.

А теперь приведём пример, в котором программа уже не«глухая», то есть может запрашивать какие-либо данные у пользователя. Пустьтребуется спросить у пользователя два числа, после этого вывести на экран ихпроизведение:

program AxB;

var a,b: integer;

begin

  writeln('Введите a и b');

 readln(a,b);

  writeln('Произведение равно ',a*b);

  readln;

end;

В этой программе перед словом begin появляется новая строчка,начинающаяся словом var.В ней мы указываем, что программе понадобится две переменные (a и b), в которых можно хранить целые числа (слово integer).

О том, что делает первый оператор, нам известно: он выводитна экран строчку 'Введите a и b'. При выполнении второго оператора программабудет ждать, пока пользователь не введет число с клавиатуры и не нажмёт «Enter»; это число программазапишет в переменную a,затем то<span Times New Roman",«serif»;mso-ansi-language: EN-US">

же самое делается для переменной b. Третьим оператором выводим на экрансначала надпись «Произведение равно », а потом значение выражения <span Times New Roman",«serif»;mso-ansi-language:EN-US">a<span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-ansi-language:EN-US;mso-char-type: symbol;mso-symbol-font-family:Symbol">×<span Times New Roman",«serif»;mso-ansi-language:EN-US">b («*»<span Times New Roman CYR""><span Times New Roman CYR"">–знак умножения<span Times New Roman",«serif»; mso-ansi-language:EN-US">). Четвёртый оператор пояснений не требует.

А теперь<span Times New Roman",«serif»; mso-ansi-language:EN-US">

рассмотрим структуру программы в общем виде.Любая программа на Турбо-Паскале состоит из трех блоков: блока объявлений,блока описания процедур и функций и блока основной программы. Ниже эти блокирасписаны более подробно.<span Times New Roman",«serif»; mso-ansi-language:EN-US">

Блок объявлений:

program… (название программы)

uses… (используемые программой внешние модули)

const… (объявления констант)

type… (объявления типов)

var...  (объявления переменных)

Блок описания процедур и функций:

procedure(function)

begin

...

end;

...

Блок основной программы:

begin

… (операторы основнойпрограммы) ...

end;<span Times New Roman",«serif»">

Рассмотрим наиболее важные частивышеописанных блоков. Под заголовком программы понимается имя, помогающееопределить её назначение. Имя, или идентификатор,строится по следующим правилам: оно может начинаться с большой или малой буквылатинского алфавита или знака «_», далее могут следовать буквы, цифры или знак«_»; внутри идентификатора не может стоять пробел. После имени программыследует поставить «;», этот знак служит в Паскале для разделенияпоследовательных инструкций. Заметим, что имя программы может не совпадать сименем соответствующего файла на диске.

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

<span Times New Roman",«serif»;mso-ansi-language:EN-US">

<span Courier New";mso-bidi-font-family: «Times New Roman»;mso-ansi-language:EN-US">const

<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US"> Zero = 0;

<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">pi = 3.1415926;

<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">my_const = -1.5;

<span Courier New"; mso-bidi-font-family:«Times New Roman»">

<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">Hello = '

<span Courier New"; mso-bidi-font-family:«Times New Roman»">Привет !<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">';

<span Times New Roman",«serif»;mso-ansi-language:EN-US">

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

Название типа

Возможные значения

Примеры значений

integer

целые: -32768… 32767

12, -10000

real

действительные (по модулю): 2,9x10-39… 1,7x1038

-9.81, 6.02e-23

string[n]

строка до n символов длиной, если [n] не указано, то до 255

‘abcde’, ‘привет’

char

одиночный символ

‘F’, ‘!’, ’_’,’ю’

<span Times New Roman",«serif»;mso-ansi-language:EN-US">

Объявления переменныхзаписываются в следующей форме:<span Times New Roman",«serif»; mso-ansi-language:EN-US"> var <

переменная<span Times New Roman",«serif»;mso-ansi-language:EN-US">>: <span Times New Roman",«serif»;mso-ansi-language: EN-US"><тип<span Times New Roman",«serif»; mso-ansi-language:EN-US">>;<span Times New Roman",«serif»;mso-ansi-language:EN-US">

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

Примеры объявления:

<span Courier New";mso-bidi-font-family: «Times New Roman»;mso-ansi-language:EN-US">var

<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US"> Number: integer;

<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">d,l: real;

<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">Name: string[20];

<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">Line: string;

<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">Key1,Key2: char;

<span Times New Roman",«serif»;mso-ansi-language:EN-US">

Блок основной программы. Здесь, между словами <span Times New Roman",«serif»;mso-ansi-language:EN-US">begin

и<span Times New Roman",«serif»;mso-ansi-language: EN-US">end. располагаются команды (точнее, операторы), которые будутвыполняться один за другим при запуске программы. Рассмотрим простейшие типыоператоров на следующем примере:

<span Courier New";mso-bidi-font-family: «Times New Roman»;mso-ansi-language:EN-US">program

<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US"> First;

<span Courier New";mso-bidi-font-family: «Times New Roman»;mso-ansi-language:EN-US">const

<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US"> a<span Courier New"; mso-bidi-font-family:«Times New Roman»">2<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US"> = 3;

<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">a1 = -2;

<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">a0 = 5;

<span Courier New";mso-bidi-font-family: «Times New Roman»;mso-ansi-language:EN-US">var

<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US"> x,f: real;

<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">

<span Courier New";mso-bidi-font-family: «Times New Roman»;mso-ansi-language:EN-US">begin

<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">

<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">write(‘

<span Courier New"; mso-bidi-font-family:«Times New Roman»">Введите значение х <span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">’);

<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">readln(x);

<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">f

<span Courier New"; mso-bidi-font-family:«Times New Roman»"> <span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">:=<span Courier New"; mso-bidi-font-family:«Times New Roman»"> <span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">a2*x*x+a1*x+a0;

<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">writeln(‘

<span Courier New"; mso-bidi-font-family:«Times New Roman»">Значение квадратного трехчлена: <span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">’<span Courier New"; mso-bidi-font-family:«Times New Roman»">,<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">f);

<span Courier New";mso-bidi-font-family: «Times New Roman»;mso-ansi-language:EN-US">end

<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">.

<span Times New Roman",«serif»;mso-ansi-language:EN-US">

Первая строка исполняемой(основной) части программы выводит на экран надпись «Введите значение х », дляэтого используется процедура writeнаписанная разработчиками Турбо Паскаля, то есть набор команд, невидимыйдля нас, но существующий реально в недрах системы Турбо Паскаль. В качествепараметра этой процедуры используется наша строчка. Параметры всегдазаписываются в круглых скобках, апострофы означают, что параметр имеетстроковый тип. Итак, в первой строке мы видим так называемый оператор вызовапроцедуры. Каждый оператор отделяется от следующего знаком «;». Во второйстроке вызывается процедура ввода readln(x), которая ждет, пока пользователь наберет значение x с клавиатуры и нажметклавишу «Enter», азатем переводит курсор на следующую строку (ln <span Times New Roman CYR"; mso-hansi-font-family:«Times New Roman CYR»;mso-char-type:symbol;mso-symbol-font-family: Wingdings;mso-no-proof:yes">ó

Line <span Times New Roman CYR""><span Times New Roman CYR"">–строка). В третьей строке вычисляется значение трехчлена и записываетсяв переменную f; этотоператор называется оператором присваивания, и обозначается символом ":=". В последней строкена экран выводится строка «Значениеквадратного трехчлена: » и значение переменной f. Несложно заметить, что здесьпроцедуре writeln передаетсяуже не один, а два параметра, причем они могут иметь разные типы. Вообще,процедуры ввода и вывода (т.е. write,writeln, read, readln)могутиметь любое число параметров различных типов, параметрами могут являтьсяпеременные, литералы (т.е. непосредственно записанные числа, строки; в нашемпримере дважды были использованы строковые литералы), а также выражения.Используя выражение при выводе, можно заменить две последние строчки нашейпрограммы одной:

<span Courier New"; mso-bidi-font-family:«Times New Roman»;mso-ansi-language:EN-US">writeln('

<span Courier New";mso-bidi-font-family:«Times New Roman»">Значениеквадратного трехчлена: <span Courier New"; mso-bidi-font-family:«Times New Roman»;mso-ansi-language:EN-US">'<span Courier New";mso-bidi-font-family:«Times New Roman»">,<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US"> a2*x*x+a1*x+a0);<span Courier New"; mso-bidi-font-family:«Times New Roman»">

В арифметических выражениях наПаскале используются следующие знаки для обозначения операций: +, -, *, <span Times New Roman",«serif»;mso-ansi-language:EN-US">/

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

Замечание об именах. Для обозначения переменных запрещаетсяиспользование ряда слов, называемых зарезервированными, они играют в языкеособую роль. Нам уже встречался ряд зарезервированных слов: program, begin, end, string, const, var, ит.п.

<span Times New Roman",«serif»;mso-ansi-language:EN-US">

Лекция 2.Процедуры ввода-вывода. Некоторые встроенные функции Турбо-Паскаля.

1. Процедуры ввода<span Times New Roman",«serif»; mso-ansi-language:EN-US">-

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

·<span Times New Roman"">     

<span Courier New"; mso-bidi-font-family:«Times New Roman»;mso-ansi-language:EN-US">write(p1,p2,…pn);<span Times New Roman CYR""><span Times New Roman CYR"">–выводит на экран значения выражений p1,p2,… pn, количество которых (n) неограничено. Выражения могут бытьчисловые, строковые, символьные и логические. Под выражением будем пониматьсовокупность некоторых действий, применённых к переменным, константам илилитералам, например: арифметические действия и математические функции длячисел, функции для обработки строк и отдельных символов, логические выражения ит.п. Возможен форматный вывод, т.е. явное указание того, сколько выделятьпозиций на экране для вывода значения. Пример для вещественных типов: write(r+s:10:5); <span Times New Roman CYR""><span Times New Roman CYR"">–вывести значение выражения r+s с выделением для этого 10 позиций, из них 5 <span Times New Roman CYR""><span Times New Roman CYR"">–после запятой. Для других типов все несколько проще: write(p:10); <span Times New Roman CYR""><span Times New Roman CYR"">– вывестизначение выражения p,выделив под это 10 позиций. Вывод на экран в любом случае производится поправому краю выделенного поля.

·<span Times New Roman"">     

<span Courier New"; mso-bidi-font-family:«Times New Roman»;mso-ansi-language:EN-US">writeln(p1,p2,…pn); <span Times New Roman CYR""><span Times New Roman CYR"">–аналогично write,<span Courier New"; mso-bidi-font-family:«Times New Roman»"> выводит значения <span Times New Roman",«serif»;mso-ansi-language:EN-US">p1,p2,…pn, после чего переводит курсор на новую строку. Смысл параметров <span Times New Roman CYR""><span Times New Roman CYR"">–тот же, замечания о форматном выводе остаются в силе. Существует вариант <span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">writeln; (без параметров), что означает лишьперевод курсора на начало новой строки.

·<span Times New Roman"">     

<span Courier New"; mso-bidi-font-family:«Times New Roman»;mso-ansi-language:EN-US">readln(v1,v2,...vn);<span Times New Roman CYR""><span Times New Roman CYR"">–ввод с клавиатуры значений переменных <span Times New Roman",«serif»;mso-ansi-language:EN-US">v1,...vn.Переменные могут иметь строковый, символьный или числовой тип. При вводеследует разделять значения пробелами, символами табуляции или перевода строки(т.е., нажимая <span Times New Roman",«serif»; mso-ansi-language:EN-US">Enter).

·<span Times New Roman"">     

read(v1,v2,...vn);<span Times New Roman CYR""><span Times New Roman CYR"">–по назначению сходно с readln;отличие состоит в том, что символ перевода строки (Enter), нажатый при завершении ввода, не«проглатывается», а ждет следующего оператора ввода. Если им окажется операторввода строковой переменной или просто readln; то строковой переменной будет присвоено значение пустойстроки, а readln безпараметров не станет ждать, пока пользователь нажмет Enter, а среагирует на уже введенный.

Пример.Программа просит пользователя ввести с клавиатуры два целых числа и печатает наэкране их сумму:

programPrintSum;

vara,b: integer;

begin

  write('Введите два числа:');

 readln(a,b);

  writeln('Сумма a и b равна ',a+b);

  readln;

end.

<span Times New Roman CYR"; mso-bidi-font-family:«Times New Roman CYR»">2. <span Times New Roman""> 

Функции числовых параметров.

Название

Значение

<span Times New Roman",«serif»;mso-ansi-language:EN-US">abs

(<span Times New Roman",«serif»;mso-ansi-language: EN-US">x)

модуль x

<span Times New Roman",«serif»;mso-ansi-language:EN-US">cos

(<span Times New Roman",«serif»;mso-ansi-language: EN-US">x)

косинус<span Times New Roman",«serif»;mso-ansi-language:EN-US">

x

<span Times New Roman",«serif»;mso-ansi-language:EN-US">frac

(<span Times New Roman",«serif»;mso-ansi-language: EN-US">x)

дробная часть x

<span Times New Roman",«serif»;mso-ansi-language:EN-US">int

(<span Times New Roman",«serif»;mso-ansi-language: EN-US">x)

целая часть x (т.е. ближайшее целое, не превосходящее x)

<span Times New Roman",«serif»;mso-ansi-language:EN-US">pi

число <span Times New Roman CYR";mso-hansi-font-family: «Times New Roman CYR»;mso-char-type:symbol;mso-symbol-font-family:Symbol">p

<span Times New Roman",«serif»;mso-ansi-language:EN-US">round(x)

x, округлённое до целого

<span Times New Roman",«serif»;mso-ansi-language:EN-US">sin

(<span Times New Roman",«serif»;mso-ansi-language: EN-US">x)

синус x

<span Times New Roman",«serif»;mso-ansi-language:EN-US">sqr

(<span Times New Roman",«serif»;mso-ansi-language: EN-US">x)

квадрат x

<span Times New Roman",«serif»;mso-ansi-language:EN-US">sqrt

(<span Times New Roman",«serif»;mso-ansi-language: EN-US">x)

квадратный корень из x

<span Times New Roman",«serif»;mso-ansi-language:EN-US">trunc(x)

число, полученное из x отбрасыванием дробной части

Лекция 3. Операторыусловного выполнения.1. Оператор if.

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

<span Courier New";mso-bidi-font-family: «Times New Roman»;mso-ansi-language:EN-US">if

<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US"> <<span Courier New"; mso-bidi-font-family:«Times New Roman»">условие<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">><span Courier New"; mso-bidi-font-family:«Times New Roman»"> <span Courier New";mso-bidi-font-family: «Times New Roman»;mso-ansi-language:EN-US">then<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US"> <<span Courier New"; mso-bidi-font-family:«Times New Roman»">оператор1<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">><span Courier New"; mso-bidi-font-family:«Times New Roman»"> <span Courier New";mso-bidi-font-family: «Times New Roman»;mso-ansi-language:EN-US">else<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US"> <<span Courier New"; mso-bidi-font-family:«Times New Roman»">оператор2<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">>;

Под оператором понимается либо одиночный оператор (например,присваивания, вызова процедуры), либо т.н. составной оператор, состоящий изнескольких простых операторов, помещённых между словами begin и end. Важно заметить, что перед else неставится точка с запятой.Частьelse может иотсутствовать.

Пример 1: пустьтребуется найти число m=max(a,b).Этой задаче соответствует следующий фрагмент программы на Паскале:

<span Courier New";mso-bidi-font-family: «Times New Roman»;mso-ansi-language:EN-US">if

<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US"> a>b thenm:=a else m:=b;<span Courier New";mso-bidi-font-family:«Times New Roman»">

Пример 2: (без else) пусть дано целое число i. Требуется оставить его безизменения, если оно делится на 2, и вычесть из него 1, если это не так.

<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">var

<span Courier New";mso-bidi-font-family:«Times New Roman»;mso-ansi-language:EN-US">i: integer;

<span Courier New"; mso-bidi-font-family:«Times New Roman»;mso-ansi-language:EN-US">.......

<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">if

<span Courier New"; mso-bidi-font-family:«Times New Roman»;mso-ansi-language:EN-US"> i mod 2 = 1 then i:=i-1;<span Courier New"; mso-bidi-font-family:«Times New Roman»"> <span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">{else -<span Courier New"; mso-bidi-font-family:«Times New Roman»"> ничего не делать<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">}<span Courier New"; mso-bidi-font-family:«Times New Roman»">

Примечание: в примере использована операция нахожденияостатка от деления (<span Times New Roman",«serif»; mso-ansi-language:EN-US">mod

), для нахождения неполного частного вТурбо-Паскале используется <span Times New Roman",«serif»; mso-ansi-language:EN-US">div.

Пример 3: (сиспользованием составного оператора). Пусть даны две переменные типа <span Times New Roman",«serif»;mso-ansi-language:EN-US">real

.Требуется поменять местами  значения этихпеременных, если <span Times New Roman",«serif»; mso-ansi-language:EN-US">a1>a2.

<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">var

<span Courier New";mso-bidi-font-family:«Times New Roman»;mso-ansi-language:EN-US">a1,a2,buf :real;

<span Courier New"; mso-bidi-font-family:«Times New Roman»;mso-ansi-language:EN-US">.........

<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">if

<span Courier New"; mso-bidi-font-family:«Times New Roman»;mso-ansi-language:EN-US"> a1>a2 then begin

<span Courier New"; mso-bidi-font-family:«Times New Roman»;mso-ansi-language:EN-US">  buf:=a1;

<span Courier New"; mso-bidi-font-family:«Times New Roman»;mso-ansi-language:EN-US">  a1:=a2;

<span Courier New"; mso-bidi-font-family:«Times New Roman»;mso-ansi-language:EN-US">  a2:=buf;             

<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">end

<span Courier New";mso-bidi-font-family:«Times New Roman»;mso-ansi-language:EN-US">;<span Courier New";mso-bidi-font-family:«Times New Roman»">

Следующий пример использует вложенные операторы <span Times New Roman",«serif»;mso-ansi-language:EN-US">if

.<span Times New Roman",«serif»;mso-ansi-language:EN-US">

Пример 4: Поисккорней квадратного уравнения.

<span Courier New";mso-bidi-font-family:«Times New Roman»">program

<span Courier New";mso-bidi-font-family:«Times New Roman»">SqEquation;

<span Courier New";mso-bidi-font-family:«Times New Roman»">var

<span Courier New";mso-bidi-font-family:«Times New Roman»">a,b,c,d: real;

<span Courier New";mso-bidi-font-family:«Times New Roman»">begin

<span Courier New";mso-bidi-font-family: «Times New Roman»">  writeln;

<span Courier New";mso-bidi-font-family: «Times New Roman»">  write('Введитекоэффициенты a,b,c квадратного уравнения: ');

<span Courier New";mso-bidi-font-family: «Times New Roman»">  readln(a,b,c);

<span Courier New";mso-bidi-font-family: «Times New Roman»">  d:=sqr(b)-4*a*c;

<span Courier New";mso-bidi-font-family: «Times New Roman»">  if d>=0 then

<span Courier New";mso-bidi-font-family: «Times New Roman»">      if d=0 then writeln('Единственный корень: x=',-b/(2*a):8:3)

<span Courier New";mso-bidi-font-family: «Times New Roman»">        else writeln('Два корня:x1=',(-b+sqrt(d))/(2*a):8:3,

<span Courier New";mso-bidi-font-family: «Times New Roman»">                               ',x2=',(-b-sqrt(d))/(2*a):8:3)

<span Courier New";mso-bidi-font-family: «Times New Roman»">    else {d<0} writeln('Корней нет');

<span Courier New";mso-bidi-font-family: «Times New Roman»">  readln;

<span Courier New";mso-bidi-font-family: «Times New Roman»">end.

Чтобы не запутаться в структуре этой программы, следуетпомнить такое правило: <span Times New Roman",«serif»;mso-ansi-language:EN-US">else

всегдаотносится к последнему оператору <span Times New Roman",«serif»;mso-ansi-language:EN-US">if.Если же в программе требуется, чтобы <span Times New Roman",«serif»;mso-ansi-language:EN-US">else относилось кодному из предыдущих<span Times New Roman",«serif»; mso-ansi-language:EN-US"> if,<span Times New Roman",«serif»; mso-ansi-language:EN-US"> то придется воспользоваться составнымоператором:

Пример 5:<span Times New Roman",«serif»; mso-ansi-language:EN-US">

пользователь вводит натуральное число,задача программы — поставить слово «ученик» в нужную форму в сочетании счислительным (например: 1 ученик, 3 ученика, 9 учеников и т.п.)<span Courier New";mso-bidi-font-family:«Times New Roman»">

begin

  write('Число учеников (1..20) --> ');readln(n);

  write(n,' ученик');

  if n<5 then begin

    ifn>1 then writeln('а');

  end

  else

    writeln('ов');

   readln;

end.

В этом примере пришлось использовать составной оператор (begin… end;) для тогочтобы часть else относиласьне к оператору if n>1,а к if n<5.

2. Оператор выбора (case)<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»">

Кроме оператора условного выполнения и циклов в ТурбоПаскале имеется ещё одна управляющая конструкция, одно из названий которой —оператор выбора. На самом деле это усложнённый оператор if,он позволяет программе выполняться не двумя способами, в зависимости отвыполнения условия, а несколькими, в зависимости от значения некотороговыражения. В общем виде этот оператор выглядит так:

caseВыражение of

  Вариант1: Оператор1;

  Вариант2: Оператор2;

  ...

  ВариантN: ОператорN;

  [else ОператорN1;]

end;

(Пояснение: квадратные скобки означают то, что часть <span Times New Roman",«serif»;mso-ansi-language:EN-US">else

может отсутствовать).

Выражение в простейших случаях может быть целочисленным илисимвольным. В качестве вариантов можно применять:

<span Times New Roman CYR";mso-bidi-font-family:«Times New Roman CYR»">1. <span Times New Roman""> 

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

<span Times New Roman CYR";mso-bidi-font-family:«Times New Roman CYR»">2. <span Times New Roman""> 

'a'..'z'.

<span Times New Roman CYR";mso-bidi-font-family:«Times New Roman CYR»">3. <span Times New Roman""> 

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

Рассмотрим пример. Пусть пользователь вводит целое число от1 до 10, программа должна приписать к нему слово «ученик» с необходимымокончанием (нулевое, «а» или «ов»).

programSchoolChildren;

varn: integer;

begin

 write('Число учеников --> '); readln(n);

  write(n,'ученик');

  case n of

   2..4:  write('а');

    5..10:write('ов');

  end;

  readln;

end.

Можно также усовершенствовать программу для произвольногонатурального n:<span Times New Roman",«serif»;mso-ansi-language:EN-US">

<span Times New Roman",«serif»; mso-ansi-language:EN-US">

write(n,' ученик');

  case n mod 100 of

    11..19:write('ов');

    else case n mod 10 of

     2..4:   write('а');

      0,5..9:write('ов');

    end;

  end;

Лекция 4. Операторы циклов вПаскале

В реальных задачах часто требуется выполнять одни и те жеоператоры несколько раз. Возможны различные варианты: выполнять фрагментпрограммы фиксированное число раз, выполнять<span Times New Roman",«serif»;mso-ansi-language:EN-US">,

пока некотороеусловие является истинным, и т. п. В связи с наличием вариантов в Паскалесуществует 3 типа циклов.1. Цикл с постусловием (Repeat)

На Паскале записывается следующим образом: repeat<оператор> until <условие>. (По-русски: повторятьчто-то пока_не_выполнилось условие).Под обозначением <span Times New Roman",«serif»; mso-ansi-language:EN-US"><

оператор<span Times New Roman",«serif»;mso-ansi-language:EN-US">> здесь понимаетсялибо одиночный, либо последовательность операторов, разделённых точкой сзапятой. Цикл работает следующим образом: выполняется оператор, затемпроверяется условие, если оно пока еще не выполнилось, то оператор выполняетсявновь, затем проверяется условие, и т. д. Когда условие, наконец, станетистинным выполнение оператора, расположенного внутри цикла, прекратится, идалее будет выполняться следующий за циклом оператор. Под условием, вообщеговоря, понимается выражение логического типа.

Пример (подсчет суммы натуральных чисел от 1 до 100):

<span Courier New"; mso-bidi-font-family:«Times New Roman»;mso-ansi-language:EN-US">var

<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US"> i,sum: integer;

<span Courier New"; mso-bidi-font-family:«Times New Roman»;mso-ansi-language:EN-US">begin

<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">

<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">  sum:=0; i:=0;

<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">  repeat

<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">    i:=i+1;

<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">    sum:=sum+i;

<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">  until i=100;

<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">  writeln('Суммаравна: ',sum);

<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">  readln;

<span Courier New"; mso-bidi-font-family:«Times New Roman»;mso-ansi-language:EN-US">end

<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">.

Важно заметить, что операторы стоящие внутри цикла repeat<span Times New Roman",«serif»;mso-ansi-language:EN-US">

(иначе<span Times New Roman CYR""><span Times New Roman CYR"">–в теле цикла) выполняются хотя бы один раз (только после этого проверяетсяусловие выхода).2. Цикл с предусловием(While)

Этот цикл записывается так: while<условие> do<оператор>.<span Times New Roman",«serif»;mso-ansi-language: EN-US">(

Пока условие истинно, выполнять оператор<span Times New Roman",«serif»;mso-ansi-language:EN-US">).Суть в следующем: пока условие истинно, выполняется оператор (в этом случаеоператор может не выполниться ни разу, т.к. условие проверяется до выполнения).Под оператором здесь понимается либо простой, либо составной оператор (т.е.несколько операторов, заключёных в begin… end).

Рассмотрим тот же пример, выполненный с помощью <span Times New Roman",«serif»;mso-ansi-language:EN-US">while

:

<span Courier New"; mso-bidi-font-family:«Times New Roman»">var

<span Courier New";mso-bidi-font-family:«Times New Roman»"> i,sum: integer;

<span Courier New"; mso-bidi-font-family:«Times New Roman»">begin

<span Courier New";mso-bidi-font-family:«Times New Roman»">

<span Courier New";mso-bidi-font-family:«Times New Roman»">  sum:=0; i:=0;

<span Courier New";mso-bidi-font-family:«Times New Roman»">  whilei<

<span Courier New";mso-bidi-font-family: «Times New Roman»;mso-ansi-language:EN-US">10<span Courier New";mso-bidi-font-family:«Times New Roman»">0 do begin

<span Courier New";mso-bidi-font-family:«Times New Roman»">    i:=i+1;

<span Courier New";mso-bidi-font-family:«Times New Roman»">    sum:=sum+i;

<span Courier New";mso-bidi-font-family:«Times New Roman»">  end;

<span Courier New";mso-bidi-font-family:«Times New Roman»">  writeln('Сумма равна: ',sum);

<span Courier New";mso-bidi-font-family:«Times New Roman»">  readln;

<span Courier New"; mso-bidi-font-family:«Times New Roman»">end

<span Courier New";mso-bidi-font-family:«Times New Roman»">.3. Цикл со счетчиком (For)

Записывается так: for<переменная>:=<нач> to<кон> do <оператор>. Вместо toвозможно слово downto. Рассмотрим такой пример: требуется вывести на экрантаблицу квадратов натуральных чисел от 2 до 20.

<span Courier New"; mso-bidi-font-family:«Times New Roman»">var

<span Courier New";mso-bidi-font-family:«Times New Roman»"> i: integer;

<span Courier New"; mso-bidi-font-family:«Times New Roman»">begin

<span Courier New";mso-bidi-font-family:«Times New Roman»"> for i:=2 to 20 do writeln(i,' ',sqr(i)); end.

При выполнении цикла происходит следующее: переменной i присваивается начальноезначение (2), затем выполняется оператор (простой или составной), после этого кi прибавляется 1, ипроверяется, не стало ли значение i равно конечному (20). Если нет, то вновь выполняется оператор,добавляется 1, и т. д. В случае, когда вместо toиспользуется downto, все происходит наоборот: единица не прибавляется, авычитается. Например, следующий цикл выведет ту же таблицу, но в обратномпорядке:

<span Courier New"; mso-bidi-font-family:«Times New Roman»">for

<span Courier New";mso-bidi-font-family:«Times New Roman»"> i:=20 <span Courier New"; mso-bidi-font-family:«Times New Roman»;mso-ansi-language:EN-US">down<span Courier New"; mso-bidi-font-family:«Times New Roman»">to<span Courier New";mso-bidi-font-family:«Times New Roman»"> 2 do writeln(i,' ',sqr(i));<span Courier New";mso-bidi-font-family:«Times New Roman»;mso-ansi-language:EN-US">

В завершение запишем программу о подсчете суммы чисел от 1до 100 с помощью for:

<span Courier New"; mso-bidi-font-family:«Times New Roman»;mso-ansi-language:EN-US">var

<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US"> i, sum: integer;

<span Courier New"; mso-bidi-font-family:«Times New Roman»;mso-ansi-language:EN-US">begin

<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">

<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">  sum:=0;

<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">  for i:=1 to 100 do sum:=sum+i;

<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">  writeln(sum);

<span Courier New"; mso-bidi-font-family:«Times New Roman»;mso-ansi-language:EN-US">end

<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">.<span Courier New"; mso-bidi-font-family:«Times New Roman»">Лекция 5. Символьные и строковыепеременные

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

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

Тип данных, переменные которого хранят ровно один символ(букву, цифру, знак препинания и т.п.) называется символьным, а в Паскале — char. Объявить переменную такого типа можно так:<span Courier New";mso-bidi-font-family:«Times New Roman»;mso-ansi-language:EN-US">varch: char;

. Для того чтобы положить в эту переменную символ, нужноиспользовать оператор присваивания, а символ записывать в апострофах, например:<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">ch:='R';. Для символьных переменных возможнотакже использование процедуры readln,например:

write(‘Выйтииз игры?(Да/Нет)’); readln(ch);

ifch=’Д’ then ...{выходить}...

else...{продолжать}...;

<span Times New Roman",«serif»; mso-ansi-language:EN-US">

Символьные переменные в памяти компьютера хранятся в виде числовых кодов, иначеговоря, у каждого символа есть порядковый номер. К примеру, код пробела равен32, код <span Times New Roman",«serif»; mso-ansi-language:EN-US">‘A’

— <span Times New Roman",«serif»; mso-ansi-language:EN-US">65, <span Times New Roman",«serif»; mso-ansi-language:EN-US">‘B’ — 66, <span Times New Roman",«serif»;mso-ansi-language:EN-US">‘C’ — 67, код символа<span Times New Roman",«serif»;mso-ansi-language: EN-US">‘1’ — 48, <span Times New Roman",«serif»; mso-ansi-language:EN-US">‘2’ — 49, <span Times New Roman",«serif»;mso-ansi-language:EN-US">‘.’ — 46 и т. п.Некоторые символы (с кодами, меньшими 32) являются управляющими, при выводе таких символов на экран происходит какоелибо действие, например, символ с кодом 10 переносит курсор на новую строку, скодом 7 — вызывает звуковой сигнал, с кодом 8 — сдвигает курсор на одну позициювлево. Под хранение  символа выделяется 1байт (байт состоит из 8 бит, а бит может принимать значения 0 или 1), поэтомувсего можно закодировать 28=256 различных символов.<span Times New Roman",«serif»;mso-ansi-language:EN-US"> Кодировкасимволов, которая используется Турбо-Паскале, называется ASCII (American Standard Code for InformationInterchange — американский стандартный код для обмена информацией<span Times New Roman",«serif»;mso-ansi-language:EN-US">).<span Times New Roman",«serif»;mso-ansi-language:EN-US">

Для того чтобы получить в программе код символа нужноиспользовать функцию <span Courier New"; mso-bidi-font-family:«Times New Roman»;mso-ansi-language:EN-US">chr

,например:

vari: byte; {число,занимающее 1 байт, значения — от 0 до 255}

    ch: char;

...

readln(i); writeln('символ с кодом',i,' — это',chr(i));

Если в качестве кода используетсяконкретное число, а не выражение и не переменная, то можно использовать символ <span Times New Roman",«serif»;mso-ansi-language:EN-US">«#»

,скажем так<span Times New Roman",«serif»; mso-ansi-language:EN-US">: <span Courier New"; mso-bidi-font-family:«Times New Roman»;mso-ansi-language:EN-US">ch:=#7;.  Для того перехода от кода к символуиспользуется функция <span Courier New"; mso-bidi-font-family:«Times New Roman»;mso-ansi-language:EN-US">ord<span Times New Roman",«serif»;mso-ansi-language:EN-US">(от слова ordinal<span Times New Roman",«serif»;mso-ansi-language:EN-US">— порядковый<span Times New Roman",«serif»; mso-ansi-language:EN-US">). Имеющиеся знания позволяют нам написатьпрограмму, которая выдаёт на экран таблицу с кодами символов:

programASCII;

varch: char;

begin

  for ch:=#32 to #255 dowrite(ord(ch),'—>',ch,'  ');

  readln;

end.

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

С использованием кодов работают ещё две функции, значениякоторых символьные:

<span Times New Roman CYR"; mso-bidi-font-family:«Times New Roman CYR»">1. <span Times New Roman""> 

succ (от succeedent — последующий), она выдаёт символ соследующим кодом.

<span Times New Roman CYR"; mso-bidi-font-family:«Times New Roman CYR»">2. <span Times New Roman""> 

pred (от predecessor — предшественник), выдаёт символ с предыдущимкодом.

Если попытаться в программе получитьsucc(#255)</spa

еще рефераты
Еще работы по программному обеспечению