рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

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

Алфавит языка Turbo Pascal - раздел Программирование,   Удк     Составители: Про...

 

УДК

 

 

Составители: проф. В.С. Степанов,

ст. преп. Васильева Н.И.

 

Рецензент: доц. Шнеерсон Ю.Б..

 

Рекомендовано к изданию в качестве методических указаний к выполнению лабораторных работ по информатике в среде Turbo Pascal для студентов ФАВТ и ФПСКТ дневного, вечернего и заочного отделений кафедрой математики и информатики.

Протокол №10 от 03.10.2010.

 

 

© Санкт-Петербургский государственный

университет кино и телевидения, 2010.

 

 


Тема 1

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

Вычисление значения арифметического выражения

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

- латинские буквы: а, b, с, … , z; - русские буквы: а, б, в, … , я; - арабские цифры: 0,1, 2, … , 9;

Переменные

Переменная – это область памяти (ячейка) компьютера. Переменные могут менять свое значение в процессе выполнения программы, каждая переменная,… alfa, suml, n22, a1b2c3. Система Turbo Pascal латинские строчные и прописные буквы воспринимает одинаково.

Типы переменных и констант

В системе Turbo Pascal для описания числовых переменных и констант используются следующие стандартные типы:

− действительных чисел (real);

− символьный тип (char);

− строковый (string);

− логический (boolean);

− целые типы.

Целые типы данных языка Turbo Pascal

  Границы изменения: для действительного типа (real) от –10–39 до 1038,

Стандартные математические функции, используемые

В Turbo Pascal

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

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

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

Для задания такого действия и служит оператор присваивания, который относится к числу основных операторов:

Переменная := выражение;

где:= – знак присваивания.

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

Примеры:

Var a,b:integer;

x:real; c:boolean; s,s1:char;

. . . . . . . . . . . . . . . . . . . . . . . .

a:=5; {Значение переменной становится равным пяти}

b:=a; {Значение переменной в становится равным

значению переменной а}

b:=b+1; {Значение переменной в увеличивается на 1}

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

Переменной типа real можно присвоить значение выражения типа real или integer.

Переменной типа integer можно присвоить значение выражения только лишь типа integer.

a:=b/10; { a – целого типа, b/10 –выражение действительного типа, поэтому оператор неверен}

x:=a mod 2;

c:=(a>3) and (a<5);

Компьютер проверяет соответствие типов и при несоответствии типов выдает сообщение об ошибке.

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

 

Ввод и вывод результатов вычислений

Процедура ввода состоит из идентификатора read (читать) или readlnи следующим за ним в круглых скобках списком переменных. Переменные… Read (a, b, с); readln(x, y);

Тема 2

Логические выражения

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

Логические выражения состоят из переменных и констант логического типа, логических операций и операций отношений. Логическое выражение может принимать значения true (истина) или false (ложь).

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

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

 

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

 

В Паскале определены три логические операции:

 

not отрицание (не)
and логическое умножение (и)
or логическое сложение (или)

 

Эти операции применимы только к логическим операндам и дают результат того же типа.

Логическое умножение (A and В) дает значение true только в том случае, если и А, и В имеют значение true. Если хотя бы один операнд (или оба) имеет значение false, то результат также имеет значение false.

Логическое сложение (A or В) дает значение false в том и только в том случае, если А и В одновременно имеют значение false. Если хотя бы один операнд (или оба) имеет значение true, то результат также име­ет значение true.

Операция отрицания (not A) дает значение false, если А имеет значение true и, наоборот, дает значение true, если false.

В логическом выражении принят следующий приоритет операций:

 

1. not (выполняется в первую очередь).

2. * , /, div , mod , and.

3. +, ~, or.

4. < , <= , = , <> , > , >=.

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

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

Примеры:

 

(x >= a) and (x <= b)
(x < a) or (x > b)
или
not ((x >= a) and (x <= b))

 

 

Запишем выражения, зависящие от координат точки (x,y) и принимающее значение TRUE, если точка принадлежит заштрихованной области, и FALSE, если не принадлежит.

 

(x>=3) and (x<=7) and (y>=-1) and (y<=2)
 
y -2 2 x

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

В Turbo Pascal имеется две формы условного оператора: полная и сокращенная. Полный условный оператор имеет вид:

if A then S1 else S2;

где if (если), then (то), else (иначе) – служебные слова,

А –логическое выражение,

S1, S2 – операторы.

Перед then и else нельзя ставить точку с запятой.

Если логическое выражение А принимает значение true, то выполняется оператор S1, в противном случае выполняется оператор S2.Пример:

if x > 0 then y:= ln(x) else y:=1;

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

Составной оператор – это последовательность операторов, взятая в операторные скобки beginend, т. е. это конструкция вида

begin S1;

S2;

... ;

Sk

end;

где S1, S2,…, Sk – операторы.

Пример: if abs(x) <= abs(y) then

begin z := x + y;

write(z:5:2)

end

else

begin z:= sqr(x) – sqr(y);

write(z:5:2)

end;

Краткий условный оператор имеет вид:

if A then S;

где А – логическое выражение,

S оператор.

Если выполняется условие (логическое выражение принимает значение true), то выполняется оператор S, иначе управление передается оператору, следующему за данным условным оператором.

 

Пример: if у < 1 then z := ехр(у);

Пример: if (a > b) and (x > 0) then

begin с := а b;

у := х + 2

end;

 

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

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

 

Пример 1. Найти максимальное из значений двух переменных, т. Е. х = мах(a, b).

If а > b then х := a else х := b;

 

Пример 2. Найти максимальное из значений трех переменных, то есть х = мах(а, b, с).

If a > b then x := a else x := b;

if c > x then x := c.

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

Пример выполнения задания 2

Даны три целых числа A, B и C. Определить значения переменных X Y, Z. Вывести их на экран монитора.

Пусть Dl и D2 – заштрихованные части плоскости (см. рис.1) и пусть U определяется как функция X и Y. Вывести на экран значение функции U. Вывод результатов оформить пояснительным текстом.

Если то

иначе

Вычислить значение функции U по правилу:

 

 

Записи (x, y) Î Dl, (x, y) Î D2

означают, что точка с координатами (х, у) принадлежит области D1 или D2.

Рис. 1

Program lab2;

uses crt;

var u, x, y, z:real;

a, b, c:integer;

begin clrscr;

writeln (‘Введите a, b, c¢);

readln (a, b, c);

if a + b > с then begin x:= a + b;

y:= sqrt(a*a + b*b);

z:= ln(b + c)

end

else

begin x:=a с;

y:= a*ac*c;

z:=ln(a*c)

end;

writeln (‘x=’, x:5:2,’ y=’, y:5:2,’ z=’, z:5:2)

if (y <=2*x/3 + 2) and (y >= x*x) then и:=x*x

else

if (sqrt(sqr(x) + sqr(y)) >= 2)

and (sqrt(sqr(x) + sqr(y))<=3) and (y < 0)

then u:=x + y

else u := 0;

writeln(‘u=’, u:7:2);

readkey

end.


Тема 3

Использование циклических структур.

Операторы цикла с предусловием и с постусловием

При разработке алгоритмов большинства задач возникает необходимость повторения какого-либо оператора или последовательности операторов. Для организации таких повторов (циклов) при записи алгоритмов на Turbo Pascal используются три разновидности операторов цикла:

¾ с параметром,

¾ с предусловием,

¾ с постусловием.

Оператор цикла с предусловием

Оператор цикла с предусловием имеет вид:

while A do S;

где А – выражение логического типа;

S – простой или составной оператор.

Выполнение оператора начинается с вычисления значения выражения А. Если оно имеет значение true (истина), то выполняется оператор S. Затем выполнение оператора цикла повторяется до тех пор, пока значение выражения А не станет равным false (ложь). Тогда управление передается оператору, следующему за оператором цикла, а оператор S внутри цикла выполняться не будет. Если А ложно при первом входе в цикл, то оператор S не выполняется ни разу. Очевидно, что один из операторов, находящихся внутри цикла, должен изменять значение выражения А, так как иначе цикл будет повторяться бесконечно.

Пример. Вычислить и вывести на экран значения аргумента х и функции у = х2 при изменении х от 0 до 1 с шагом 0.1 ( этот пример был рассмотрен выше, но с использованием оператора цикла с предусловием ).

х := 0;

while х <= 1 do

begin y:= sqr(x);

write(x:5:2, у:5:2);

х:=x + 0.1;

end.

Оператор цикла с постусловием

Оператор цикла с постусловием имеет вид:

repeat S1; S2; ... SN until A;

где S1, S2,…, SN – операторы тела цикла,

A – выражение логического типа.

Оператор цикла с постусловием начинается с выполнения операторов в теле цикла. Затем вычисляется значение логического выражения А, и, если получается истинное значение, то осуществляется выход из цикла. Если же значение А ложно, то выполнение операторов S1, S2, …, SN повторяется, а затем снова вычисляется выражение А.

Следует отметить, что в отличие от цикла с предусловием выход из цикла с постусловием осуществляется при истинности выражения А.

 

Пример. Вычислить и вывести на экран значения аргумента х и функции у = х2 при изменении х от 0 до 1 с шагом 0.1. (Это пример, рассмотренный выше, но с использованием оператора цикла с постусловием).

х := 0;

repeat

у:= sqr(x);

write(x:5:2, у:5:2);

х:=х + 0.1

until x > 1;

 

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

Среди операторов цикла в Turbo Pascal оператор цикла с предусловием является наиболее универсальным.

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

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

Пример выполнения задания 3

Вычислить значение функции двух переменных

с использованием двойного оператора цикла: внешний оператор цикла с предусловием while, а внутренний – оператор цикла с постусловием.

Значение переменных x и y изменяются соответственно от xнач до xкон с шагом h, и от yнач до yкон с шагом h, и вводятся с клавиатуры. Все переменные относятся к вещественному типу.

Вывести на экран таблицу значений х, y, z.

Примечание. В программе фиксируется значение одной из пе­ременных (например, хнач) во внешнем цикле, затем во внутреннем цик­ле берется первое значение унач и для пары хнач, унач вычисляется зна­чение z по заданной формуле, выводятся на экран значения х, у, z, далее у увеличивается на шаг hy. Внутренний цикл будет работать, пока у не станет больше укон, затем выход во внешний цикл, увеличение х на шаг hx и т. Д. Двойной цикл закончится, когда х станет больше хкон.

 

рrogram Iab3;

uses crt;

var x, xn, xk, hx, y, yn, yk, hy, z:real;

begin clrscr;

writeln(¢Bвeдитe xn, xk, hx, yn, yk, hy¢);

readln(xn, xk, hx, yn, yk, hy);

x:=xn;

while x < xk + hx/2 do

begin у:=уп;

repeat

z:=sqrt(x*x*x + l)*exp(x)/(y*y + 2);

writeln (¢х =¢, x:6:2,¢ y=¢, y:6:2,¢ z=¢, z:6:2);

y:=y + hy

until у > yk

x:=x + hx;

writeln;

end;

readkey;

end.

 

Исходные данные:

 

xнач=1, xкон=3, hx=1,
yнач=2, yкон=6, hy=2.

 

Полученный результат:

 

x=1, y=2 z=0.64
x=1 y=4 z=0.21
x=1 y=6 z=0.10
     
x=2 y=2 z=3.69
x=2 y=4 z=1.23
x=2 y=6 z=0.58
     
x=3 y=2 z=17.71
x=3 y=4 z=5.90
x=3 y=6 z=2.81

 

Тема 4

Использование циклических структур.

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

Оператор цикла с параметромудобно использовать, когда необходимо выполнить оператор заранее известное число раз. Существует два варианта оператора цикла с параметром

for к:=n1 to n2 do S;

или

for к:=п1 downto n2 do S;

где к – параметр цикла;

п1 и п2 – выражения, задающие начальное и конечное значения параметра цикла соответственно;

S простой или составной оператор (тело цикла).

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

Шаг параметра цикла к при выполнении оператора цикла с параметром для целого типа равен 1 (для цикла to) и –1 (для цикла downto).

Следует запомнить и то, что для обоих вариантов записи цикла с параметром справедливо: если начальное и конечное значения равны, то тело цикла (оператор S) выполнится один раз.

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

Для оператора цикла с параметром имеются некоторые ограничения.

¾ Оператор цикла с параметром применяется, если число повторений тела цикла заранее известно.

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

¾ Для каждого значения параметра цикл выполняется только 1 раз.

¾ Значения параметра цикла запрещено изменять операторами в теле цикла.

Пример1. Вычислить сумму квадратов натуральных чисел с 1 до 10.

S := 0;

for i:=1 to 10 do s := s+sqr (i);

Примечание. Произведение n последовательных натуральных чисел обозначают n! ( произносится n факториал), то есть .

Пример 2.

Вычислить 8!.

P:=1;

for i:=2 to 8 do p:=p*i;

Заметим так же, что параметр цикла может и не использоваться в теле цикла, так что основное его назначение – это управление числом повторений цикла.

Пример 3

Значение y=xn, где n>=0 – целое, можно вычислить по следующему алгоритму: предварительно положить y=1, а затем n раз домножить это значение на x:

Readln(n);

Readln(x);

y:=1;

for i:=1 to n do y:=y*x;

Как видно, здесь параметр цикла i служит лишь для того, чтобы тело цикла (оператор y:= y* x) выполнилось нужное число раз.

Пример 4.

Вычислить сумму .

sum:= 0;

for i:=1 to 12 do sum:=sum+(sqr (i)+1)/(i*i*i);

Пример 5.

Вычислить произведение .

P:= 1;

for i:=1 to 7 do p:=p*i/( i* i-2* i+5);

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

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

Пример выполнения задания 4

Вычислить значение выражения

.

program lab4;

uses crt;

var c,p,sum:real;

k,i:integer;

begin p:=1;

for k:=1 to 5 do

begin sum:=0; a:=1; b:=1;

for i:=1 to k do

begin a:=a*2; {вычисляем 2i}

b:=b*I; {вычисляем i!}

sum:=sum+a/b; {вычисляем сумму}

end;

p:=p*(sqr(k+2)+sum; {вычисляем произведение}

end;

writeln(‘p=’,p:0:2);

readkey;

end.

 

Тема 5

Использование и обработка одномерного массива

Когда мы имеем дело с большим количеством данных одного типа, обозначать их различными именами и обрабатывать становится затруднительно. Например,… 1.6, 14.9, –5.6, 8.5, 0.46. Конечно, можно каждое число обозначить своим именем, например А1, SB, M, NIC, NUM. Но можно для всей совокупности…

Описание одномерного массива

type имя типа = array [тип индекса] of тип компонент; var имя массива: имя типа. Например:

Часто встречающиеся задачи на одномерный массив

  Задача 1. Найти сумму элементов массива а. sum:=0;

Пример выполнения задания 5

Заданы массивы f и g, каждый состоит из 8 действительных чисел. Найти массив h = f + g и вычислить его модуль.

 

program masl;

var f, g, h: array [1..8] of real;

i:integer;

modh : real;

begin clrscr;

writeln(¢введи массив f¢);

for i:=1 to 8 do read(f[i]);

writeln(¢введи массив g:¢);

for i:=1 to 8 do read(g[i]);

modh:=0;

for i := 1 to 8 do

begin h[i] := f[i] + g[i];

modh := modh + sqr(h[i])

end;

modh := sqrt(modh);

writeln(¢вектор h:¢);

for i := 1 to 8 do write(h[i]:8:2);

writeln;

writeln(¢modh =¢, modh:7:2);

readkey

end.


Тема 6

Использование и обработка двумерного массива

Общий вид описания двумерного массива: array [тип идекса1, тип индекса 2] of тип компонентов; Тип индекса, так же как и при описании одномерного массива, может быть скалярным или ограниченным, кроме…

Часто встречающиеся задачи на двумерный массив

Пусть для примера дана матрица а(4, 4). Задача 1. Найти сумму элементов матрицы а. sum:=0;

Задачи с использованием

Главной или побочной диагонали матрицы

Пусть дана матрица а(4,4).  

Пример выполнения задания 6

Дана матрица a(4, 4). Получить матрицу b(4, 4) по правилу:

а также произведение элементов строки, содержащей наименьший элемент матрицы.

program lab4;

uses crt;

var к, i, j : integer;

b, a : array [1 .. 4, 1 .. 4] of real;

p, min : real;

begin clrscr;

writeln (¢введите матрицу d¢);

for i:=1 to 4 do

for j:=1 to 4 do read (a[i, j]);

min:=a[l, 1]; k:=1;

{формирование матрицы b и в этом же цикле}

{поиск минимального элемента и номера строки,

в которой он находится}

for i:=1 to 4 do

for j:=1 to 4 do

begin

if a[i, j] > 0 then b[i, j]:=2*a[i, j] else

b[i, j]:=0;

if a[i, j] < min then

begin min:=a[i, j];

к:=i

end

end;

p:=1;

for j:=1 to 4 do

p:=p*a[k, j]; {вычисление произведения элементов

k-ой строки}

writeln (¢вывод b(4, 4)¢);

for i:=1 to 4 do

begin

for j:=1 to 4 do write(b[i, j]:8:2);

writeln

end;

writeln (¢минимальный элемент = ¢, min :8:2);

writeln (¢произведение элементов ¢, k,¢ строки =¢, p:5:2)

readkey

end.

 

Тема 7

Организация программ

С использованием функций

Описание функции содержится в главной программе после раздела описания переменных (var) и перед началом (begin) программы. В общем виде функция записывается следующим образом: function имя(формальные параметры) :тип результата;

Раздел описаний

Begin

Раздел операторов

end;

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

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

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

Например, описания вычисления функции тангенса угла:

 

function tg(x:real): real;

begin

tg := sin(x)/cos(x)

end;

 

Вызов и выполнение функции производится при вычислении указателя функции:

имя функции(фактические параметры ).

При этом вызов функции необходимо делать непосредственно внутри выражения, подобно тому, как используются стандартные встроенные функции, например синус sin(x). Фактические и формальные параметры должны согласовываться

¾ по порядку следования,

¾ количеству,

¾ типам.

Например, вызов ранее описанной функции tg можно произвести так:

a := tg(y);

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

 

Пример. Заданы стороны двух треугольников MNK (стороны m, n, k) и PLF (стороны p, l, f ). Переменной s присвоить значение –1, если площадь треугольника MNK меньше или равнa площади треугольника PLF, и значение 1 в противном случае.

Вычисление площади треугольников по формуле Герона оформить в виде функции pl.

Примечание. Формула Герона для вычисления площади треугольника со сторонами a, b, c:

,

где , где p – полупериметр треугольника.

program pr1;

uses crt;

var m, n, k, l, p, f, h, q: real;

s : integer;

function pl(a, b, c: real): real;

var r : real;

begin

r:= ( a + b + c ) / 2;

pl:= sqrt (r*(r – a)*(r – b)*(r – c));

end;

begin clrscr;

writeln(‘Введите стороны m, n, k, p, l, f’);

readln(m, n, k, p, l, f );

h := pl(m, n, k);

q := pl(p, l, f );

if h > q then s := 1 else s := –1;

writeln('s=' , s :3);

readkey;

end.

 

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

Нельзя записать так:

function sum(a: array[1..5] of real; var : real):real;

 

Пример. Пусть заданы два вектора а(8) и b(12). Вычислить для каждого вектора произведение его элементов.

program pr2;

type vect = array [ 1 .. 12 ] of real;

var a, b: vect;

ta, tb : real;

. . . . . . . . . . . . . .

function prl(var x: vect; n: integer): real;

var i: integer;

p: real;

begin p := 1;

for i:= 1 to n do

p := p * x[ i ];

pr := p

end;

begin

. . . . . . . . . . . . . . .

ta:= pr(a, 8);

tb:= pr(b, 12);

. . . . . . . . . . . . . . . . .

end.

Пример выполнения задания 7

Дана матрица А(4,4).

Вычислить

Z= X1X4 +X2X3 + X3X2+ X4X1,

где Xk – наибольшее из значений элементов K – го столбца матрицы A.

Вычисление наибольшего значения оформить в виде функции.

 

program lab6;

type matr = array[1..4,1..4] of real;

var a: matr; z: real;

x: array[1..4] of real;

i, j: integer;

function max(y:matr; k: integer): real;

var m: real; i: integer;

begin

m: = a[1,k];

for i:= 2 to 4 do

if a[i,k]> m then m:= a[i,k];

max:=m

end;

begin

writeln(‘введите матрицу a(4,4)’);

for i:= 1 to 4 do

for j:= 1 to 4 do read(a[i,j]);

for i:= 1 to 4 do x[i] :=max(a,i);

z:=0;

for i:= 1 to 4 do

z := z + x[i] * x[5 – i];

writeln(‘z=’,z:6:2);

readkey;

end.

 

Тема 8

Организация программ

С использованием процедур

Избежать дублирования операторов можно, если оформить повторяющуюся последовательность как процедуру и в том месте программы, где надо выполнить эти… В Турбо Паскале процедурой называется часть программы, имеющая имя и… Описание процедуры включает заголовок и тело процедуры. Заголовок состоит из зарезервированного слова procedure,…

Параметры

procedure korrect (s, к : real; x : integer); s, k, x – параметры-значения. Фактический параметр, соответствующий… korrect (2.5, (х + 2)/5, 1);

Пример выполнения задания 8

Даны две вещественные матрицы a(7, 7) и b(5, 5). Из отрица­тельных элементов матрицы а сформировать одномерный массив с, а из отрицательных элементов матрицы b сформировать одномерныймассив d.

В программе использовать три процедуры:

– для ввода матриц,

– для формирования одномерных массивов,

– для вывода одномерных массивов.

program lab5;

uses crt;

const n=7;

type matr=array [1..n, 1..n] of real;

vect = array[l..n*n] of real;

var a, b:matr; c, d:vect; t, q:integer;

{процедура для ввода квадратной матрицы с фиктивным именем х с числом строк k и с числом столбцов k, где k <= п}

procedure vvod (var x:matr; k:integer);

var i, j:integer:

begin

for i:=1 to k do

for j:=1 to k do read(x[i, j]);

end;

{процедура вывода одномерного массива с фиктивным именем y с числом элементов т, где т <= п*п}

procedure vyvod (y:vect; m:integer);

var i:integer:

begin

for i := 1to m do write(y[i]:6:2);

writeln

end;

{процедура формирования из матрицы х(k, k) одномерного массива у(т)}

procedure form (x:matr; k:integer; var у:vect; var m:integer);

var i ,,j:integer:

begin m:=0;

for i:=1 to k do

for j:=1 to k do

if x [i, j] <0 then

begin m:=m + 1;

y[m]:=x[i, j]

end

end;

{раздел операторов основной программы}

begin clrscr;

writeln (¢введите элементы матрицы а(7, 7)¢);

vvod (a, 7);

writeln (¢введите элементы матрицы b(5, 5)¢);

vvod (b, 5);

form(a, 7, с, t);

writeln (¢вывод одномерного массива с длиной t

элементов¢);

vyvod(c, t);

form (b, 5, d, q);

writeln (¢вывод одномерного массива d длиной

q элементов¢);

vyvod (d, q);

readkey

end.


Тема 9

Текстовые файлы

Текстовым файлом называется упорядоченная совокупность произвольного числа однотипных элементов с последовательным методом доступа. Элементами… Бытовые примеры текстовых файлов просты. Если файл можно вывести на экран в… Для работы с текстовыми файлами необходимо определить файловую переменную:

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

Набор символов в компьютере достаточно велик. Все символы упорядо­чены, т.е. каждый символ имеет свой порядковый номер (код символа). Символьная константа (литера) – это символ, заключенный в апостро­фы,… const sim= ¢A¢; s= ¢*¢;

Операции над строками

Строка – это последовательность символов кодовой таблицы компьютера. При использовании в выражениях строка заключается в апострофы. Количество символов в строке (длина строки) может динамически изменяться от 0 до 255. Для определения данных строкового типа используется идентификатор string, за которым следует заключенное в квадратные скобки значение максимально допустимой длины строки данного типа. Если это значение не указывается, то по умолчанию дли­на строки равна 255 символам.

Переменную строкового типа можно определить через описание типа в разделе описания типов type или непосредственно в разделе опи­сания переменных. Строковые данные могут использоваться в про­грамме также в качестве констант.

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

type <имя типа> = string [максимальная длина строки];

var <имя переменной> : <имя типа>;

Переменную типа string можно задать и без описания типа:

var <имя переменной> : string [максимальная длина строки];

Примеры описания:

const adres=¢ул. Короленко, 5¢; {строковая константа}

type Ast= string [125];

var Fstr:Ast; {описание с заданием типа}

Stl:string; {no умолчанию длина строки = 255}

St2, St3:string [50]; {строка с максимальной длиной 50 символов}

Nazv:string[280]; {ошибка, длина строки превышает 255}

Особенности работы со строками

read (st); writeln (¢пример¢); 2. Значением строки может быть любая последовательность символов, заключенная… А:=¢abcd1¢; В:=¢¢; {пустая строка}

Редактирование строк

length (s : string):word; вычисляет текущую длину строки s (количество символов в строке). Строка может… s:=¢Петербург¢

Преобразование строк

str (x[:width [:dec]]; var s:string); служит для преобразования числовых значений в строковые, где х может быть… var f, п:integer;

Процедуры и функции

Для работы с текстовыми файлами

assign (f:text;name:string); связывает файловую переменную f с существующим или вновь создаваемым на… Имя файла на диске состоит из идентификатора, содержащего не более 8 символов, за которым следует расширение –…

Примеры выполнения задания 9

Дан текстовый файл abc.txt. Удалить из каждой строки файла abc.txt все пробелы и расположить символы строки в обратном порядке.

Результат записать в файл def.txt.

Примечание. Формирование текстового файла с исходными данными abc.txt можно выполнить в любом текстовом редакторе, в том числе и в редакторе Турбо Паскаля.

Порядок создания файла:

- войти в редактор Турбо Паскаля;

- набрать несколько строк текста (в конце последней строки обязательно нажать Enter);

- сохранить под именем: abc.txt.

program lab6;

uses crt;

var s : string;

f, g: text;

n,k,i:integer;

begin clrscr;

assign (f, ¢abc.txt¢);

assign (g, ¢def.txt¢);

reset (f); {открыть файл abc.txt на чтение}

rewrite (g); {открыть файл def.txt на запись}

while not eof (f) do

begin readln (f, s); {текущая строка файла запишется в ОЗУ в ячейку, отведенную под переменную s}

п := pos(¢ ¢); {позиция первого по порядку пробела}

while n > 0 do

begin

delete(s, n, 1); {удаление пробела в позиции п}

п := pos(¢ ¢);

end;

{формирование новой строки s1 из символов строки s,

расположенных в обратном порядке}

k:=length(s);

for i:= 1 to k do

s1[i]:=s[k+1-i];

{запись строки s1 в файл g }

writeln(g, s1);

end; close(f); close(g);

end.


 

Тема 10

Работа с комбинированными типами данных

(записями)

Общие сведения

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

 

Фамилия Имя Отчество Год рождения Гражданство Телефон Факультет
Иванов Сергей Петрович Россия ФАВТ

 

Для описания подобных объектов в Турбо Паскале используется специальный тип данных – запись.

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

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

Описание записи начинается со служебного слова record, затем следует список полей с указанием их типов. Заканчивается описание записи словом end:

Record имя поля 1 : тип поля 1;

имя поля 2 : тип поля 2;

. . . . . . . . . . . . . . . . . . .

имя поля N : тип поля N

end;

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

Рассмотрим примеры.

Представить комплексные числа А и В в виде записей (re + im*i), где re, im – вещественные числа, а также описать дату (число, месяц, год).

type comp = record

re, im: real

end;

data = record

day: 1..31;

month: 1..12;

year: integer

end;

var a, b: comp; dt: data;

Особенности работы с записями

Естественно, что до выполнения этого оператора значения всех полей переменной – записи a должны быть определены. Во всех прочих случаях оперируют… 2. Реализуется прямой доступ к любому полю записи. Чтобы обратиться к… a. re := 1.54; a. im := – 2.45;

Пример выполнения задания 10

Даны сведения о книгах: название, автор, год издания, цена. Вывести на экран название книги писателя, фамилия которого начинается с буквы «Т», и, кроме того, данные о самой дорогой книге.

Исходные данные можно ввести с клавиатуры(см. п. 5), но при работе с массивом из записей удобнее вводить данные из текстового файла, который подготовлен заранее.

Текстовый файл можно создать в редакторе Турбо Паскаля:

– в меню FILE выбрать NEW,

– ввести данные в соответствии с описанием полей записи,

– в конце последней строки обязательно нажать ENTER?

– записать файл в свою папку с именем, указанным в программе (в нашей программе имя файла kniga.txt).

Пусть в текстовый файл введены данные:

 

Евгений Онегин Пушкин А.С.
Война и мир Толстой Л.Н
Петр Первый Толстой А.Н
Степан Разин Чапыгин А.П.
15 символов   12 символов   число   число

 

 

program lab9;

uses crt;

type zap = record book:string[15];

name:string[12];

year:integer;

many:integer;

end;

var f: text;

i, n, k:integer;

max:integer;

kniga:array[1..100]of zap;

begin clrscr;

assign(f,'kniga.dat');

reset(f); n:=0;

while not eof(f) do

begin n:=n+1;

with kniga[n] do

readln(f, book, name, year, many);

end;

{Выбор книги писателя с фамилией, начинающейся на букву Т}

for i:=1 to n do

with kniga[i] do

if name[1]=’Т’ then writeln(book:15, name:16);

writeln;

{Выбор самой дорогой книги}

max:= kniga[1].many; k:=1;

for i:=1 to n do

with kniga [i] do

if many>max then

begin max:=many;

k:=i

end;

with kniga [k] do

writeln(‘Cамая дорогая книга: ’,

, name:15, adres:15 year:6, many:6);

readkey;

close(f);

end.

 

В результате работы программы на экране появится текст:

 

Война и мир Толстой Л.Н

Петр Первый Толстой А.Н.

 

Евгений Онегин Пушкин А.С. 2003 210

 


Тема 11

Типизированные файлы

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

Процедуры и функции для работы с

Типизированными файлами

assign ( f : file; name : string ); rewrite ( f : file ); reset ( f : file);

Прямой доступ к элементам файла

seek( f : file, n : longint ); позволяет заменить значение текущего указателя, установив его на элемент файла… Для сложной обработки файла без перезаписи элементов в массив используются две функции.

Примеры выполнения задания 11

Пример 1. Создать файл f.dat из целых чисел. Переписать в файл g.dat из файла f.dat отрицательные элементы.

Первая программа создает файл f.dat.

program lab10_1;

uses CRT;

var f :file of integer;

i, n, x :integer;

begin clrscr;

assign{f, ‘f.dat’);

rewrite(f);

writeln(‘введите число элементов в файле’);

readln(n);

for i := 1 to n do

begin

writeln(‘введите значение’, i,‘ –го элемента’);

readln(x);

write(f,x)

end;

close(f)

end.

 

Следующая программа будет читать элементы файла f.dat, выбирать только те элементы, значения которых отрицательны, переписывать их в файл g.dat. Выводить элементы файла g.dat на экран ПК.

program lab10_11;

uses CRT;

var f ,g: file of integer;

i, x: integer;

begin clrscr;

assign{f, ‘f.dat’);

reset(f);

assign{g, ‘g.dat’);

rewrite(g);

while not eof (f) do

begin

read(f, x);

if x<0 then write (g, x)

end;

{вывод элементов файла g.dat на экран}

reset (g);

while not eof (g) do

begin

read(g, x);

writeln(x)

end;

close(f);

close(g)

end.

Пример 2. Содержимое файла f.dat не изменилось. Заменить элементы данного файла с отрицательными значениями на -1. Остальные элементы оставить без изменения.

program lab10_2;

uses сrt;

var f: file of integer;

i, x: integer;

begin clrscr;

assign(f, ‘f.dat’);

reset(f);

while not eof (f) do

begin

read(f, x);

if x<0 then

begin

x := -1;

seek(f, filepos (f) -1);

write(f, x)

end

end;

{вывод элементов файла f.dat на экран}

reset (f);

while not eof (f) do

begin

read(f, x);

writeln(x)

end;

close(f)

end.

 

Пример 3. На диске в файле с именем FV размещены вектора, каждый из которых содержит по 8 действительных элементов. Вычислить максимальные значения для каждого из векторов, записать их в файл GM и вывести на экран ПК.

program file12;

type vect = array [ 1..8 ] of real;

fil1 = file of vect;

fil2 = file of real;

var a: vect;

i: integer;

аmax, b: real;

f1: fil1;

f2: fil2;

begin clrscr;

assign ( f1, ' FV.DAT ');

assign ( f2, ' GM.DAT ');

reset ( f1 );

rewrite ( f2 );

while not eof ( f1 ) do

begin

read ( f1, a); amax := a[1];

for i := 1 to 8 do

if a[i] > amax then amax := a[i];

write( f2, amax );

end;

close( f2 );

reset( f2 );

while not eof ( f2 ) do

begin read ( f2, b );

writeln ( b : 7 : 2 )

end;

close(f1);

close(f2);

end.


ОГЛАВЛЕНИЕ

Тема 1. Основы построения программы. Вычисление значения арифметического выражения  
Тема 2. Логические выражения. Условный оператор
Тема 3. Использование циклических структур. Операторы цикла с предусловием и с постусловием.
Тема 4. Использование циклических структур. Оператор цикла с параметром.
Тема 5. Использование и обработка одномерного массива.
Тема 6. Использование и обработка двумерного массива.
Тема 7. Организация программ с использованием функций.
Тема 8. Организация программ с использованием процедур.
Тема 9. Текстовые файлы.
Тема 10. Работа с комбинированными типами данных (записями)
Тема 11. Типизированные файлы.

 

Редактор Н.Н. Калинина

 

Изд. лиц. ИД №02558 от 18.08.2000 г.

Подписано в печать 2010 г. Формат 60*84 1/16

Бумага офсетная. Объем п. л. Уч.-изд. л.

Тираж 350 экз. Заказ

 

 

 

Редакционно-издательский отдел СПбГУКиТ

192102. Санкт-Петербург, ул. Бухарестская, 22

 

Подразделение оперативной полиграфии СПбГУКиТ

192102. Санкт-Петербург, ул. Бухарестская, 22

– Конец работы –

Используемые теги: алфавит, языка, Turbo, Pascal0.074

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Алфавит языка Turbo Pascal

Что будем делать с полученным материалом:

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

Еще рефераты, курсовые, дипломные работы на эту тему:

Понятие алгоритма, его свойства. Описание алгоритмов с помощью блок схем на языке Turbo Pascal
Каким же образом компьютер решает сложнейшие задачи обработки информации Для решения этих задач программист должен составить подробное описание… В разных ситуациях в роли исполнителя может выступать электронное или… Составление алгоритмов и вопросы их существования являются предметом серьзных математических исследований. Свойства…

Лекция 1. Интегрированная Среда и Состав языка Object Pascal. Состав языка
Содержание... Лекция Интегрированная Среда и Состав языка Object Pascal... Работа с окнами Редактирование в Object Pascal...

О.Ф. Власенко, И.В. Беляева СИМВОЛЫ И СТРОКИ В ЯЗЫКЕ TURBO PASCAL
Министерство образования Российской Федерации... Ульяновский государственный технический университет...

Обучение начальных курсов методам программирования на языке Turbo Pascal
К идентификатору строкового типа и к ссылке на переменную строкового типа можно применять стандартные функции Low и High. В этом случае функция Low… Параметр-переменная, описанная с помощью идентификатора OpenString и ключевого… Открытые строковые параметры позволяют передавать одной и той же процедуре или функции строковые переменные…

Два объекта истории русского языка: живой язык диалектный и литературный язык
Новые общественные функции приобретает русский язык по мере сложения новой исторической общности советского народа он становится межнациональным... Современный период... Горшкова Хабургаев ИГРЯ...

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

Изобретение языка: концепции возникновения языка от Демокрита до А.Смита
Первоначальные формы его выражения Язык наиболее объемлющее и наиболее дифференцированное средство выражения, которым владеет человек, и… Крик при этом распадался на свои составные части так появился ряд звуков,… Поэтому, когда появлялся этот предмет, появлялся как бы сам по себе и в одной и той же форме этот звуковой комплекс.…

Алгоритмічна мова TURBO PASCAL
Дрогобицький державний педагогічний університет... імені Івана Франка... Методичний посібник...

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

Философия языка "Трактата": логика языка versus логика мышления
Почти год Витгенштейн провел в плену, большую часть времени в лагере в Монте-Касино (Южная Италия). Здесь он и закончил ЛФТ. На протяжении всего… Добавим, что первое издание ЛФТ относится к 1921 году [23] . Для общей оценки… Можно сказать, что именно в этом произведении был выражен лингвистический поворот, у Фреге и Рассела лишь намеченный,…

0.036
Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • По категориям
  • По работам