Процедурная декомпозиция программ и применение подпрограмм на языке высокого уровня “Паскаль”

Страницы работы

Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.

Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.

Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.

Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.

Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.

Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.

Содержание работы

Лабораторная работа №4

            Тема:Процедурная декомпозиция программ и применение подпрограмм на языке высокого уровня “Паскаль”.

            Цель: Выучить методы применение процедурной декомпозиции, определения её преимушества.

Теоретические сведения

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

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

Синтаксис Procedure:Procedure идентификатор (интерфейс);

Глобальный раздел описания

Begin

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

End;

Синтаксис Function:Function идентификатор (интерфейс):тип результата;

Глобальный раздел описания

Begin

Тело функции

Идентификатор:= “результат работы функции”

End;

Задания 1

Самостоятельно придумать процесс и создать его процедурную декомпозицию.

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

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

Программа 1

Program Day_Week;

Type trs=string(.9.);

Var day,month,n:byte;year:integer;

Function DayWeek(day,month:byte;year:integer):byte;

Function octatok (x,y:integer):integer;

Begin

  x:=x-(x div y)*y;If x<0 then x:=x+y;octatok:=x;end;

Label ExitA;

Var x,w:shortint;

Begin

If (month<1)or(month>12)or(day<1)or((day>31)) then

  Begin DayWeek:=7;goto ExitA;end;

If ((month=4)or(month=6)or(month=9)or(month=11))and(day>30) then

  Begin DayWeek:=7;goto ExitA;end;

w:=octatok(year,4);w:=(w-1-abs(w-1))div 2;

If (month=2)and(day>(28-w)) then

  Begin DayWeek:=7;goto ExitA;end;

x:=octatok(year,28);x:=x+28;x:=x+4+(x-1)div 4;x:=octatok(x,7);

day:=day+2*(month-1)+x;

For x:=0to month-2 do Begin

If(x=0)or(x=2)or(x=4)or(x=6)or(x=7)or(x=9)then day:=day+1;

  If x=1 then day:=day-2-w;end;

DayWeek:=octatok(day,7);

ExitA:End;

Function Week(n:byte):trs;

Begin Case n of

  0:week:='Monday';

  1:week:='Tuesday';

  2:week:='Wednesday';

  3:week:='Thursday';

  4:week:='Friday';

  5:week:='Saturday';

  6:week:='Sunday';

end;End;

Begin

Writeln('   Introduce facts:');

Write('    Day: ');readln(day);

Write('    Month: ');readln(month);

Write('    Year: ');readln(year);

n:=DayWeek(day,month,year);

If n=7 then Begin Writeln('   Don`t correctly introduce facts!');

  Writeln('   Programs don`t can work in this facts!');end

else Writeln('    Day week: ',Week(n));

Write('   EXIT prees on Enter: ');Readln;

End.

Работа с программой

1.    Запишите функцию DayWeek в глобальный раздел описания своей программы.

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

3.    Результатом работы будет число от 0 до 6, соответствующее дню недели.

4.    Для вывода на экран текстового сообщения вы можете туда  же записать функцию Week, которая выдаёт день недели по его номеру.

Программа 2

Program Center_List;

Var x,n,i,j:byte;b,kon:boolean;l:string;

Procedure CenterList(l:string;size:byte;ending:boolean);

Var x,n,i,j:byte;b,kon:boolean;

Label ExitA;

Begin n:=length(l);i:=0;kon:=false;b:=true;

If n=0 then

  Begin For x:=1to size do Write(' '); If ending then Writeln; Goto ExitA;end;

While (i<>n)and b do Begin

  While (' '=copy(l,i+1,1))and b do If i=n-1 then b:=false else i:=i+1;

  If not b then goto ExitA;

  If (i+1+size)>n then Begin j:=n-i;kon:=true;end else

    Begin j:=size; If ' '<>copy(l,i+1+size,1) then Begin

      While (' '<>copy(l,i+j,1))and b do If j=1 then Begin j:=size;b:=false;end

      else j:=j-1;b:=true;end;end;

   While (' '=copy(l,i+j,1))and b do j:=j-1;

   If b then Begin

     For x:=1 to (size div 2)-((j+(size div 2)*2-size)div 2) do Write(' ');

  Write(copy(l,i+1,j)); If not(kon) then writeln;i:=i+j;end;end;

  If ending then writeln else

  For x:=1 to (size div 2)-((j+1+(size div 2)*2-size)div 2) do Write(' ');

ExitA:End;

Begin

CenterList('This program write text by center',80,true);

CenterList('Left center',27,false);CenterList('Center',26,false);CenterList('Right center',27,false);

Write('   EXIT prees on Enter: ');Readln;

End.

Работа с программой

1.    Запишите функцию CenterList в глобальный раздел описания своей программы.

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

Похожие материалы

Информация о работе

Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.

Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.

Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.

Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.

Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.

Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.