Schemat blokowy...o co chodzi?

0

Kiedyś już pisałem na tym forum o tym że nigdy nie miałem do czynienia z programowaniem, a teraz zostałem do niego zmuszony przez system :-[ . Dostałem ostatnio do napisania program i jakoś sobie z nim poradziłem [diabel] jednak trzeba mi jeszcze oddać cały raport wraz ze schematem blokowym [!!!] . No własnie o co w tym chodzi??? Z czym to się je. Zamieszczam kod programu. Może ktoś mógłby mi to pokazać (słyszałem że z tym to mało roboty jest).

program Kule;
{$APPTYPE CONSOLE}

uses
  SysUtils,
  crt in 'Crt.pas';

const                                                                             {Deklaracja stałych}
     R1:real=0.1;
     g=9.806;

type
    Tmaterial=(stal,aluminium,plastik);

//-----------------------------------------------------------------------------
procedure czytaj_dane(var r2:double; var material:Tmaterial);                     {Procedura wczytywania danych}
var
   napis:string;
   blad:integer;
   klawisz:char;
begin
     write('Podaj promien kuli: ');
     readln(napis);
     val(napis,r2,blad);                                                          {Zdefiniowanie porpawnosci wprowadzanych danych}
     if (blad<>0)or(r2<0.001)or(r2>0.1) then
     repeat
           writeln('Dane sa nieprawidlowe! Promien powinien byc liczba z zakresu 0.001 .. 0.1');
           write('Podaj jeszcze raz: ');
           readln(napis);
           val(napis,r2,blad);
     until (blad=0)and(r2>=0.001)and(r2<=0.1);

     writeln('Wybierz material: 1 - stal, 2 - aluminium, 3 - tw. sztuczne');      {Menu wyboru materiału (za pomocą przypisania odp cyfr)}
     repeat
           klawisz:=readkey;
     until klawisz in ['1','2','3'];

     case klawisz of
          '1': begin
                  material:=stal;
                  writeln('Stal');
               end;
          '2': begin
                  material:=aluminium;
                  writeln('Aluminium');
               end;
          '3': begin
                  material:=plastik;
                  writeln('Tworzywo sztuczne');
               end;
     end;
end;

function alfa(r2:double; material:Tmaterial):real;                                {Funkcja pozwalająca obliczac kąt nachylenia "alfa"}

 var

  gestosc:double;
  kat:real;
  V,V2:double;
  M1,m2:double;
  x,y:double;
  Xr:double;
  Yr2,YR1:double;
begin
  YR1:=3/8*R1;
  Xr:=R1-r2;
  Yr2:=3/8*r2;
      case material of
      stal: gestosc:=7850;
      aluminium: gestosc:=2750;
      plastik: gestosc:=1080;
  end;
  V:= 2/3*pi*sqr(R1)*R1;
  V2:=2/3*pi*sqr(r2)*r2;
  M1:=V*7850;
  m2:=V2*gestosc;
  x:=(-m2*Xr)/(m2+M1);
  y:=(m2*Yr2-M1*YR1)/(M1+m2);

  kat:=arctan(x/y);
  result:=kat/pi*180;
end;

procedure wyznacz_kat(r2:double; material:Tmaterial);                             {Procedura wyznaczająca kąt "alfa"}
begin
  clrscr;
  writeln('alfa = ',alfa(r2,material):6:5,' st.');
  readln;
end;

function reakcja(r2:double; material:Tmaterial):real;                             {Funkcja pozwalająca obliczac wartosc reakcji podłoża}
var
  gestosc:double;
  M1,m2:double;
  Q1,Q2:double;
  V,V2:double;
begin
  case material of
    stal: gestosc:=7850;
    aluminium: gestosc:=2750;
    plastik: gestosc:=1080;
  end;
  V:= 2/3*pi*sqr(R1)*R1;
  V2:=2/3*pi*sqr(r2)*r2;
  M1:=V*7850;
  m2:=V2*gestosc;
  Q1:=M1*g;
  Q2:=m2*g;

  result:=Q1+Q2;
end;

procedure wyznacz_reakcje(r2:double; material:Tmaterial);                         {Procedura wyznaczająca reakcję podłoża}
begin
  clrscr;
  writeln('Wartosc reakcji podloza = ',reakcja(r2,material):4:4);
  readln;
end;

procedure eksport;                                                                {Procedura eksportująca dane do odpowiedniego pliku}
var
  promien:double;
  poprawna:boolean;
  sciezka:string;
  i:byte;
  plik:text;
begin                                                                             {Zdefiniowanie poprawnosci wprowadzanej scieżki}
  poprawna:=true;
  write('Podaj nazwe (sciezke) pliku: ');
  readln(sciezka);
  //sprawdzanie poprawnosci nazwy pliku
  for i:=1 to length(sciezka) do
    if sciezka[i] in ['/',':','?','*','<','>','|'] then
      poprawna:=false;
  if not poprawna then
  repeat
    poprawna:=true;
    write('Podana sciezka jest bledna! Wpisz ponownie: ');
    readln(sciezka);
    for i:=1 to length(sciezka) do
      if sciezka[i] in ['/',':','?','*','<','>','|'] then
        poprawna:=false;
  until poprawna;

  assign(plik,sciezka);                                                           {Zapisanie danych w pliku}
  rewrite(plik);
  writeln(plik,'STAL: ');
  writeln(plik,'promien':10,'     ','kat alfa':5,'     ','reakcja':5);
  promien:=0.001;
  repeat
    writeln(plik,promien:10:3,'     ',alfa(promien,stal):6:5,'     ',reakcja(promien,stal):6:5);
    promien:=promien+0.001;
  until promien>=0.1;

  writeln(plik,'ALUMINIUM: ');
  writeln(plik,'promien':10,'     ','kat alfa':5,'     ','reakcja':5);
  promien:=0.001;
  repeat
    writeln(plik,promien:10:3,'     ',alfa(promien,aluminium):6:5,'     ',reakcja(promien,aluminium):6:5);
    promien:=promien+0.001;
  until promien>=0.1;

  writeln(plik,'TWORZYWO SZTUCZNE: ');
  writeln(plik,'promien':10,'     ','kat alfa':5,'     ','reakcja':5);
  promien:=0.001;
  repeat
    writeln(plik,promien:10:3,'     ',alfa(promien,plastik):6:5,'     ',reakcja(promien,plastik):6:5);
    promien:=promien+0.001;
  until promien>=0.1;

  close(plik);
  clrscr;
  writeln('Dane zostaly wyeksportowane');
  readln;
end;

procedure menu(var r2:double; var material:Tmaterial);                            {Procedura menu głównego}
var
   klawisz:char;
begin
     clrscr;
     writeln('Wybierz opcje:');
     writeln('1 - Podaj nowe dane');
     writeln('2 - Wyznacz kat alfa');
     writeln('3 - Wyznacz wartosc reakcji podloza');
     writeln('4 - Eksportuj dane do pliku tekstowego');
     writeln('5 - Koniec');

     repeat
           klawisz:=readkey;
     until klawisz in ['1','2','3','4','5'];

     case klawisz of
          '1': czytaj_dane(r2,material);
          '2': wyznacz_kat(r2,material);
          '3': wyznacz_reakcje(r2,material);
          '4': eksport;
          '5': halt;
     end;

end;

//------------------------------------------------------------------------------
var
   r2:double;
   material:Tmaterial;

begin
    textcolor(white);
    czytaj_dane(r2,material);
    while true do
      menu(r2,material);
end.
0

Schemat blokowy mniej więcej polega na tej zasadzie:

Start aplikacji -> Menu usera -> Operacje na danych -> Generowanie wyników

0

I to robi się w jakieś konkretnej formie [???] . Nie mam o tym zielonego pojęcia :-/

0

Dzielisz program na bloki funkcjonalne i łączysz je strzałkami, liniami, czymkolwiek. Chodzi o to aby mniej więcej pokazać jak działa program. Zresztą, co będę dużo pisał. Googli nie masz?

0

Wpisanie na google "schemat blokowy" nic nie kosztuje.
http://www.sp5andrychow.iap.pl/Algorytmika/lekcja2.htm

0

Możesz użyć devFlowchartera - http://sourceforge.net/projects/devflowcharter. Akurat ten program działa w drugą stronę tzn. na podstwie schematu blokowego generuje kod ale może Ci się przyda.

Pozdrawiam,
albi

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0