Вход

Основы алгоритмизации и программирования

Контрольная работа по компьютерным сетям
Дата добавления: 16 августа 2004
Язык контрольной: Русский
Word, rtf, 312 кб (архив zip, 32 кб)
Контрольную можно скачать бесплатно
Скачать
Не подходит данная работа?
Вы можете заказать написание любой учебной работы на любую тему.
Заказать новую работу



Московский государственный университет экономики, статистики и информатики


Филиал в г. Минске


Кафедра экономики и информатики

Контрольная работа

по дисциплине «ОСНОВЫ АЛГОРИТМИЗАЦИИ И ПРОГРАММИРОВАНИЯ»

ВАРИАНТ № 7

Выполнил студент I курса Минец Наталья Владимировна

Руководитель Васильев Владимир Павлович

МИНСК

2004

Содержание.


Содержание

1. Операторы организации разветвляющихся алгоритмов 3

2. Процедуры – операторы и процедуры - функции в языке Паскаль 6

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

2.2 Процедуры и функции пользователя 6

3. Задача 1 10

3.1 Постановка задачи 10

3.2 Блок-схема алгоритма задачи 10

3.3 Текст программы на языке Паскаль 11

3.4 Контрольные примеры 11

4. Задача 2 12

4.1 Постановка задачи 12

4.2 Блок-схема алгоритма задачи 12

4.3 Текст программы на языке Паскаль 13

4.4 Контрольные примеры 14

5. Задача 3 16

5.1 Постановка задачи 16

5.2 Блок-схема алгоритма задачи 16

5.3 Текст программы на языке Паскаль 18

5.4 Контрольный пример 19

Список литературы 20



  1. Операторы организации разветвляющихся алгоритмов

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

Условие - выражение булевского типа. Например:

Var flag: boolean;

a>b; a<=b; a<>b

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

And (и)

( a=b ) and (b<>x)

условие истинно, если каждая составляющая его часть истина;

Or (или)

(a>b) or (b=x)

условие истинно, если хотя бы одна из составляющих истина;

Not (отрицание)

Not (x=a)

условие истино, если a не равно b.

Для записи ветвления в Паскале применяется оператор IF (если).

Формат записи оператора:

If условие then

оператор1

else

оператор2;

В качестве оператора может быть любой оператор (в том числе и составной). Часть else может отсутствовать (ветвление неполное).

If условие then

оператор1;

Пример:

X: =2;

if x>0 then

y: =1

else

y: =2;

Write(Y);

Внутри оператора if могут содержаться другие операторы if:

If x=0 then

If y<0 then

If y= - 2 then

y: = 3

else if x= - 5 then

y: = - 2

else y: =1;

Для записи нескольких вариантов действий удобно применение оператора CASE (выбор).

Формат записи оператора:

сase выражение-селектор of

список 1: оператор1;

список2: оператор2;

cписок n: операторn;

else

оператор

end;

Оператор CASE работает следующим образом:

1 шаг - вычисляется выражение (оно должно быть перечислимого типа).

2 шаг - обеспечивается реализация того оператора, константа выбора которого равна текущему значению селектора (выражения)

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

Пример:

Var x: integer;

сase x of

12: y:=1;

5,30,46: y:=2;

1..10: y:=3;

else

y:=4

end;

Если переменная х будет равна 12, то y примет значение 1.

Если переменная х будет равна 5, 30 или 46, то y примет значение 2.

Если переменная х будет равна от 1 до 4, или от 6 до 10, то y примет значение 3.

Если переменная х не будет равна ни одному из перечисленных значений, то y примет значение 4.



2. Процедуры – операторы и процедуры - функции в языке Паскаль

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

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

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

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

2.2 Процедуры и функции пользователя

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

Процедуры.

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

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

PROCEDURE <имя> (Формальные параметры);

CONST ...;

TYPE ...;

VAR ...;

BEGIN

<операторы>

END;

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

PROCEDURE Abort(Msg: string);

BEGIN

Writeln('Ошибка: ', Msg);

Halt(1);

END;

{Сохраним данный пример в файле ABORT.PAS для дальнейшего использования в примере ниже по тексту.}

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

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


PROGRAM DemoProc;

{ Подсчет суммы десяти введенных целых положительных чисел, если будет введено отрицательное число, прервать выполнение }

CONST

Limit = 10; { ограничение на количество вводимых чисел }

VAR

Count, Item, Sum: integer;

{$I ABORT.PAS } { включение в текст файла ABORT.PAS }

BEGIN

Count:= 0;

Sum:= 0;

WHILE (Count < Limit) DO BEGIN { условие выполнение цикла }

Count:= Count+1;

Write('Введите ', Count, '-ое целое число: ');

Readln(Item);

IF Item < 0 THEN

{ вызов процедуры:}

Abort('введено отрицательное число');

Sum:= Sum+Item;

END;

Writeln('Сумма введенных чисел равна ', Sum);

END.

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

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

Функции.

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

FUNCTION <имя> (Формальные параметры) : <тип результата>;

CONST ...;

TYPE ...;

VAR ...;

BEGIN

<операторы>

END;

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

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

PROGRAM DemoPower;

VAR Z:real;

FUNCTION Power(X,Y:real): real;

BEGIN

Power:= Exp(Y* Ln(X))

END;

BEGIN

Z:=5.31;

{ возведение значения Z в 4-ю степень}

Write(Power(Z,4.0));

END.



3. Задача 1

3.1 Постановка задачи

Написать и отладить программу, которая вычисляет значение функции y=f(х), при заданном с клавиатуры значении х, или выдает сообщение, что функция неопределенна:

3.2 Блок-схема алгоритма задачи

ДА





НЕТ






ДА


НЕТ








y:=1/(x2-5x+6)



y:=x2-5x+6
















3.3 Текст программы на языке Паскаль

{Задача 1.}

Program z1;

uses crt;

var x,y:real;

Begin

clrscr;

write('Введите х: ');

readln(x);

if x<=0 then y:=sqr(x)-5*x+6

else if sqr(x)-5*x+6<>0 then

y:=1/(sqr(x)-5*x+6)

else begin

writeln('При х=',x:5:2,' функция f(x) не определена.');

readln;

halt;

end;

writeln('Ответ: y=f(',x:5:2,')=',y:5:2);

readln;

End.



3.4 Контрольные примеры

Введите х: 2

При х= 2.00 функция f(x) не определена.


Введите х: 5

Ответ: y=f( 5.00)= 0.17


Введите х: -2

Ответ: y=f(-2.00)=20.00




4. Задача 2

4.1 Постановка задачи

Написать и отладить программу, которая вычисляет значение матричного выражения, или выдает сообщение о невозможности его выполнения, при задании с клавиатуры значениях размерностей и элементов матриц А[M,N]; B[L,M]; C [N,L]:

А*С+4*В

4.2 Блок-схема алгоритма задачи









ДА


НЕТ






Y:= А*С+4*В








4.3 Текст программы на языке Паскаль

{Задача 2.}

Program z2;

uses crt;

var M,N,L,i,j,k:integer;

A,B,C,D,E,Y:array[1..10,1..10] of real;

Begin

clrscr;

writeln('Вычисление матричного выражения Y[L,M]=A[M,N]*C[N,L]+4*B[L,M]');

{Ввод размерностей матриц.}

write('Введите размерность матриц - значения M,N,L (<=10): ');

readln(M,N,L);

if (M>10) or (N>10) or (L>10) or (M<1) or (N<1) or (L<1) then begin

writeln('Введены некорректные данные. (1<=M,N,L<=10)');

readln;

halt;

end;

if M<>L then begin

writeln('При заданных значениях M, N, L вычислить выражение');

writeln('A[M,N]*C[N,L]+4*B[L,M] невозможно,т.к.складываются');

writeln('только матрицы одинаковых размеров.');

writeln('Введите одинаковые значения для M и L.');

readln;

halt;

end;

{Ввод элементов матриц.}

writeln('Введите построчно элементы матрицы A[',M,',',N,']:');

for i:=1 to M do

for j:=1 to N do

read(A[i,j]);

writeln('Введите построчно элементы матрицы B[',L,',',M,']:');

for i:=1 to L do

for j:=1 to M do

read(B[i,j]);

writeln('Введите построчно элементы матрицы C[',N,',',L,']:');

for i:=1 to N do

for j:=1 to L do

read(C[i,j]);

writeln('Ответ:');

{Вычисление произведения матриц: D[M,L]=A[M,N]*C[N,L]}

for i:=1 to M do

for j:=1 to L do begin

D[i,j]:=0;

for k:=1 to N do

D[i,j]:=D[i,j]+A[i,k]*C[k,j];

end;

{Вычисление умножения матрицы на число: Е[L,M]=4*B[L,M]}

for i:=1 to L do

for j:=1 to M do

E[i,j]:=4*B[i,j];

{Вычисление сложения матриц: Y[L,M]=D[M,L]+Е[L,M]}

for i:=1 to L do begin

for j:=1 to M do begin

Y[i,j]:=D[i,j]+E[i,j];

write(Y[i,j]:9:2);

end;

writeln;

end;

readln;

End.

4.4 Контрольные примеры

Вычисление матричного выражения Y[L,M]=A[M,N]*C[N,L]+4*B[L,M]

Введите размерность матриц - значения M, N, L (<=10): 5 4 6

При заданных значениях M, N, L вычислить выражение

A[M,N]*C[N,L]+4*B[L,M] невозможно, т.к. складываются

только матрицы одинаковых размеров.

Введите одинаковые значения для M и L.


Вычисление матричного выражения Y[L,M]=A[M,N]*C[N,L]+4*B[L,M]

Введите размерность матриц - значения M, N, L (<=10): 4 3 4

Введите построчно элементы матрицы A[4,3]:

3 2 4

1 5 2

4 2 1

6 3 2

Введите построчно элементы матрицы B[4,4]:

5 2 7 1

3 5 2 8

9 2 9 3

1 4 7 2



Введите построчно элементы матрицы C[3,4]:

5 2 1 7

2 4 2 8

2 1 6 5

Ответ:

47.00 26.00 59.00 61.00

31.00 44.00 31.00 89.00

62.00 25.00 50.00 61.00

44.00 42.00 52.00 84.00







5. Задача 3

5.1 Постановка задачи

Разработать программы:

  1. ввода данных с клавиатуры и формирования текстового файла;

  2. чтения текстового файла с диска и вывода его на экран в виде таблицы.

Данные для формирования файла.

ФКС-2 0,01 10 -8 ?10 -9

АМД-94 1 10 -6? 10-5

РСК-94 10 10-7 ?10 -6

5.2 Блок-схема алгоритма задачи

а) Запись данных в файл (Fn – имя файла).







а) Чтение данных из файл и их вывод на экран.








НЕТ






ДА






5.3 Текст программы на языке Паскаль

{Задача 3.}

Program z3a;

uses crt;

var f:text;

n,i:integer;

fn,s1,s2:string;

r:real;

Begin

clrscr;

writeln('Формирование текстового файла с данными, введенными с клавиатуры.');

write('Введите имя файла:');

readln(fn);

assign(f,fn);

rewrite(f);

write('Введите количество строк: ');

readln(n);

writeln('Введите данные:');

for i:=1 to n do begin

write('Название:');

readln(s1);

write('Численное значение:');

readln(r);

write('Диапазон:');

readln(s2);

writeln(f,s1:15,r:15:2,s2:15);

end;

close(f);

writeln('Данные успешно записаны в файл ',fn);

readln;

End.



{Задача 3б.}

Program z3b;

uses crt;

var f:text;

s,fn:string;

r:real;

Begin

clrscr;

writeln('Чтение данных из текстового файла и их вывод на экран.');

write('Введите имя файла: ');

readln(fn);

assign(f,fn);

reset(f);

writeln('Данные из файла ',fn);

while not eof(f) do begin

readln(f,s);

writeln(s);

end;

close(f);

readln;

End.

5.4 Контрольный пример

Формирование текстового файла с данными, введенными с клавиатуры.

Введите имя файла:f1.txt

Введите количество строк: 3

Введите данные:

Название:ФКС-2

Численное значение:0.01

Диапазон:10-8..10-9

Название:АМД-94

Численное значение:1

Диапазон:10-6..10-5

Название:РСК-94

Численное значение:10

Диапазон:10-7..10-6

Данные успешно записаны в файл f1.txt


Чтение данных из текстового файла и их вывод на экран.

Введите имя файла: f1.txt

Данные из файла f1.txt

ФКС-2 0.01 10-8..10-9

АМД-94 1.00 10-6..10-7

РСК-94 10.00 10-7..10-6





Список литературы

1. Бородич Ю.С. и др. Паскаль для персонадьных компьютеров: Справочное пособие. Мн.: Выш. шк.: БФ ГИТМП " Ника", 1991 г.

2. Вальвачев А. Н., Крисевич В.С. Программирование на языке Паскаль для персонадьных ЭВМ ЕС: Справочное пособие. - Мн.: Выш. шк., 1989 г.

3. Васюкова Н. Д., Тюляева В. В. Практикум по основам программирования. Язык Паскаль: Учебное пособие. - М.: Высш. шк.,1991 г.

4. Офицеров Д. В., Старых В. А. Программирование в интегрированной среде Турбо-Паскаль: Справочное пособие. – МН.: Беларусь, 1992 г.


© Рефератбанк, 2002 - 2017