Главная страница


Специальность



Скачать 429.15 Kb.
НазваниеСпециальность
страница4/4
Дата18.04.2016
Размер429.15 Kb.
ТипЛабораторная работа
1   2   3   4

Задание1. Данфрагментпрограммы:

Type String40 = String[40]; M = Array[1..100] Of String40;

VarA : M; I, J, Min, N : Byte; Vsp : String40;

Begin

Write('N? '); ReadLn(N);

For I := 1 To N Do ReadLn(A[I]);

For I := 1 To N-1 Do

Begin Min := I;

For J := I + 1 To N Do If A[J] < A[Min] Then Min := J;

Vsp := A[I]; A[I] := A[Min]; A[Min] := Vsp;

End;

WriteLn('Ответ: '); For I := 1 To N Do WriteLn(A[I])

End.

Точно и однозначно сформулировать условие задачи, решение которой приведено в данном фрагменте.

Задание 2. Составьте и исполните программу для решения одной из задач.


2.1 Заменить в тексте все маленькие латинские буквы на большие.

2.2 Заменить в тексте все большие латинские буквы на маленькие.

Задание 3.Составьте и исполните программу для решения следующей задачи.


3.1 Удвоить все согласные буквы.

3.2 Удалить из данного слова все согласные буквы.

3.3 Проверить, имеются ли в данном слове одинаковые буквы.

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

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

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

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

3.8 Выяснить, можно ли из символов заданного слова составить слово "море".
Задание 4.

    1. Укажите значение переменной cпосле исполнения серии команд:

а) c:='гардемарин';
c:=copy(c,4,3)+'о'+copy(c,length(c)-1,1);

б) c:='баскетбол';
c:=copy(c,3,1)+copy(c,6,1)+copy(c,length(c)-1,2);

в) c:='баскетбол';
c:=copy(c,length(c)-2,3)+copy(c,length(c)-3,1);

г) c:='баскетбол';
c:=copy(c,4,3)+copy(c,2,1);

    1. Объясните, для чего предназначены и как исполняются следующие команды:

      Q:=a+ba;

      S:=concat(a,b,c,d);

      Pos(Q,W);

      Copy(r,11,3);


      Length(s);

      1. Length(a+c);

      2. delete(f,3,6);

      3. insert(f,r,5);




    2. Используя функции и процедуры обработки литерных данных перепишите команды:
      а) t:=copy(t,3,length(t)-2); через delete;
      б) t:=copy(t,1,2)+y+copy(t,3,length(t)-2); через insert;
      в) delete(t,3,1) через copy;
      г) insert(b,t,4) через copy.


Контрольные вопросы

  1. Расскажите об операциях, которые можно выполнять над строковыми величинами.

  2. Расскажите о функциях, определенных для величин строкового типа.

  3. Расскажите о процедурах, определенных для величин строкового типа.

  4. Как осуществляется доступ к отдельномусииволу строки?

  5. Почему значение отношения 'Мама'<>'мама' равно TRUE?


Лабораторная работа 11

Тема: Организация процедур

Цель:Научиться составлять программы с использованием процедур

Оборудование: ПК, ПО TurboPascal
Методические указания

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

  • Избавляют от необходимости многократно повторять в тексте программы аналогичные фрагменты;

  • Улучшают структуру программы, облегчая ее понимание при разборе;

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

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

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

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

  • Полезно разбить длинную программу на составные части – просто как книгу разбивают на главы;

  • Бывают сложные частные алгоритмы. Полезно отладить их отдельно в небольших тестирующих программах. Включение программ с отлаженными алгоритмами в основную программу будет легким, если они оформлены как подпрограммы.

  • Для повторного использования частей программы лучше сразу выделять в программе полезные алгоритмы в отдельные подпрограммы.

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

Procedure<Имя процедуры> (<Имя форм.параметра 1>:<Тип>;

< Имя форм.параметра 2>:<Тип>?);

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

Begin

<Тело процедуры>

End;
Задание 1.Изучите программу PR и ответьте на следующие вопросы:
1) какие переменные, являясь одна локальной, а другая глобальной, имеют одно и то же имя?
2) будет ли переменная L иметь одно и то же значение в основной программе и в процедуре pr3?
3) доступна ли переменная L, описанная в основной программе, в процедурах pr3 и pr4?
4) окажет ли влияние на переменную L, описанную в основной программе, изменение значения переменной L, описанной в процедуре pr3?

program PR;
var L, D, F: real;
procedure pr2;
var M, N: integer;
begin

end;
procedure pr3;
var L, L4: integer;
procedure pr4;
var L5: integer;
begin

end
;
begin

end;
begin

end.
Задание 2. Изучите две процедуры. Определите результат их работы.

Пример 1. Определите их принципиальное отличие. Процедура без параметров, которая печатает строку из 60 звездочек.
procedure pr;

var i : integer ;

begin

for i :=1 to 60 do write (‘ * '); writeln;

end.
Пример 2. Процедура c параметрами. Даны 3 различных массива целых чисел (размер каждого не превышает 15). В каждом массиве найти сумму элементов и среднеарифметическое значение.
programproc;

var i , n , sum: integer;

sr : real;

procedure work (r:integer; var s:integer; var s1:real); {процедура work}

var mas : array [1..15] of integer ; { объявлениемассивамas}

j : integer;

begin

s:=0;

for j:=1 to r do begin {вводэлементовмассива mas}

write(' Vvedite element - ', j,': ') ;

read (mas[j]);

s:=s+mas [j];

end;

s1:=s/r;

end;

begin { главнаяпрограмма}

for i:=1 to 3 do begin

write ('Vvediterazmer ',i, ' masiva: ');

readln(n);

work (n, sum, sr); {вызовпроцедуры work}

writeln ('Summa elementov = ',sum);

writeln ('Srednearifmeticheskoe = ',sr:4:1);

end;

readln;

end.
Задание 3. Составьте процедуру SQ в предположении, что дискриминант не отрицателен.

proceduresq(a,b,c: real; var x1,x2:real);

var d:real;

begin

d:=b*b-4*a*c;

x1:= (-b+sqrt(d))/(2*a);

x2:= (-b-sqrt(d))/(2*a);

end;
с помощью процедуры решим кв. ур-е y2+2y-3=0

program s;

var y1,y2: real;

proceduresq (a,b,c : real; var x1,x2 : real);

var d: real;

begin

d:=b*b-4*a*c;

x1:= (-b+sqrt(d))/(2*a);

x2:= (-b-sqrt(d))/(2*a);

end;

begin (*program*)

sq(1,2,-3,y1,y2);

writeln('y1=',y1,'y2=',y2);

end.
Контрольные вопросы:

      1. Какие задачи в программирование решают процедуры?

      2. Является ли необходимым использование процедур для решения любых типов задач?



Лабораторная работа 12

Тема:Использование процедур.

Цель: Приобрести навыков работы в написании и отладке программ с использованием процедур

Оборудование: ПК, ПО TurboPascal
Задание 1. Решите задачу с использованием процедур.

Задача: "Расположить в порядке неубывания три целых числа".
Program Pr;

Var

S1,S2,S3 :Integer;

Procedure Swap(Var A,B: Integer);{Процедура Swap спараметрами-переменными}

Var C :Integer; {C - независимая локальная переменная}

Begin

C:=A; A:=B; B:=C {Меняем местами содержимое A и B}

End;

Begin

Writeln('Введитетричисла');

Readln(S1,S2,S3);

If S1>S2 Then Swap(S1,S2);

If S2>S3 Then Swap(S2,S3);

If S1>S2 Then Swap(S1,S2);

Writeln('Числа в порядке неубывания:V',S1,S2,S3)

End.
Задание 2. Составьте процедуры для:

а) ввода одномерного числового массива,

б) вывода одномерного числового массива,

в) ввода двумерного числового массива,

г) вывода двумерного числового массива,

д) нахождения суммы элементов одномерного массива,

е) нахождения суммы элементов двумерного массива,

ж) нахождения произведения элементов одномерного массива,

з) нахождения номера максимального элемента одномерного массива,

и) нахождения номеров максимального элемента двумерного массива,

к) нахождения номера последнего отрицательного элемента массива,

л) нахождения номера первого нулевого элемента одномерного массива,

м) подсчета в данном слове количества вхождений заданной буквы,

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

Контрольные вопросы:

        1. Верна ли, представлена запись: Procedure SB(a: real; b: integer; c: char)? Если нет, укажите на ошибки, если – да, то прокомментируйте предложенные обозначения.

        2. Определите ошибки в предложенной ниже программе

const

а: integer = 5;

b: integer = 7;

{----------}

Procedure Inc2 (var c: integer; b: integer);

begin {Inc2}

c := c + с;

b := b + b;

WriteLn('удвоенные: ', c:5, b:5)

end {Inc2};
{----------}

begin {main}

WriteLn('исходные: ', a:5, b:5);

Inc2(a,b);

WriteLn('результат: ', a:5, b:5)

end {main}.

Лабораторная работа 13

Тема:Организация и использование функций

Цель: Приобрести навыков работы в написании и отладке программ с использованием функций

Оборудование: ПК, ПО TurboPascal
Теоретические сведения

Набор встроенных функций в языке Паскаль достаточно широк (ABS, SQR, TRUNC и т.д.). Если в программу включается новая, нестандартная функция, то ее необходимо описать в тексте программы, после чего можно обращаться к ней из программы. Обращение к функции осуществляется в правой части оператора присваивания, с указанием имени функции и фактических параметров. Функция может иметь собственные локальные константы, типы, переменные, процедуры и функции. Описание функций в Паскале аналогично описанию процедур. Отличительные особенности функций:

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

- имя функции может входить в выражение как операнд.

Формат описания функции:

Function<Имя функции> (<Имя форм.параметра 1>:<Тип>;

< Имя форм.параметра 2>:<Тип>?) :<Тип результата>;

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

Begin

<Тело функции>

End;

Пример 1. Написать подпрограмму-функцию степени аx, где a, х – любые числа. Воспользуемся формулой: аx = exln a

program p1;

var f, b, s, t, c, d :real; { глобальные параметры}

function stp (a, x : real) : real;

var y :real; { локальные параметры}

begin

y := exp (x * ln ( a)) ;

stp:= y;{присвоение имени функции результата вычислений подпр-мы}

end; { описание функции закончено }

begin {начало основной программы }

d:= stp (2.4, 5); {вычисление степеней разных чисел и переменных }

writein (d, stp (5,3.5));

read (f, b, s, t); c := stp (f, s)+stp (b, t);

writeln (c);

end.
Рекурсия

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

Пример 2. Составить рекурсивную функцию, вычисляющую факториал числа n следующим образом: n! = 1 , если n= 1 и n!= ( n -1 )! · n , если n> 1 . Определите результат работы программы.
function f ( n : integer): integer;

begin

if n = 1 then f := 1 else f := n * f ( n -1 ); { функция f вызываетсамусебя}

end;
Задание 1. Задача: "Найти максимальное из трех введенных чисел". Для решения воспользуемся описанием функции, принимающей значение максимального из двух чисел, которые передаются в нее в виде параметров.
Program Fn;

Var

A,B,C :Real;

Function Max(A,B:Real):Real; {ОписываемфункциюMax с формальными}

Begin {параметрами A и B, которая принимает }

If A>B ThenMax:=A {значение максимального из них }

ElseMax:=B {Здесь A и B - локальные переменные }

End;

Begin

Writeln('Введитетричисла');

Readln(A,B,C);

Writeln('Максимальным из всех является ', Max(Max(A,B),C))

End.

Задание 2. Задача: "Найти минимальное из трех введенных чисел". Для решения воспользуемся описанием функции, принимающей значение минимального из двух чисел, которые передаются в нее в виде параметров.
Контрольные вопросы:

    1. МожнолиприведеннуюзаписьFunction F(a: real; b: real): real;заменитьнаFunction F(a,b: real): real;? Если – нет, то укажите на ошибки, если – да, то прокомментируйте используемые обозначения.

    2. Какие преимущества дает использование функций в программировании?



Литература


      1. Система задач и упражнений по языку программирования Pascal / Сост. Е.Ю. Жохова, И.Е. Кокорева, П.А. Корнилов, Л.Я. Московская, У.В. Плясунова. Ярославль, 2002, 52 с.

      2. Акулич И. Л. Математическое программирование в примерах и задачах. - М.: Высшая школа, 1993.

      3. Информатика. Задачник-практикум в 2 т. / Л.А.Залогова, М.А. Плаксин, С.В.Русакова и др. Под ред. И.Г.Семакина. Е.К. Хеннера: Том 1. - 4-е изд. -М.: БИНОМ. Лаборатория знаний. 2007. – 309 с.: ил

4. Информатика. Задачник-практикум в 2 т. / Л.А.Залогова, М.А. Плаксин, С.В.Русакова и др. Под ред. И.Г.Семакина. Е.К.Хеннера: Том 2. - 4-е изд. -М.: БИНОМ. Лаборатория знаний, 2007. - 309 с.: ил

5. Грызлов В.И., Грызлова Т.П. Турбо Паскаль 7.0. – М.: ДМК, 2000.

6. Немнюгин С.А. ТurboPascal. – CПб.: Питер, 2000.

7. Аляев Ю., Козлов О. Алгоритмизация и языки программирования Pascal, C++, VisualBasic. – М.: Финансы и статистика, 2003.
Интернет- источники


  1. https://klax.tula.ru/~zet/frames/thm_procs.html

  2. https://life-prog.ru/view_zam.php?id=24&cat=1&page=2

  3. https://pascal.proweb.kz/index.php?page=56

  4. https://pascal.guti.ru/string.html

  5. https://debryansk.ru/~lpsch/uchitel/konspekt/pascal/pas_lek.htm



1   2   3   4