Anonimo
Anonimo ha chiesto in Computer e InternetProgrammazione e Design · 4 sett fa

Aiuto con diagramma a blocchi/ flowchart?

 Acquisiti N numeri stabilire quali di questi sono primi.

2 risposte

Classificazione
  • exProf
    Lv 7
    4 sett fa

    Di "diagramma a blocchi" ne esistono millanta tipi diversi; i flowchart che descrivono algoritmi sono grafi di flusso (GDF) del controllo e, per descriverne uno, serve prima descrivere il formalismo di descrizione.

    Si tratta quasi di una mise en abyme (ti descrivo il formalismo che userò per descriverti il GDF con cui ti descriverò l'algoritmo che ho ideato per stabilire quali degli N numeri naturali ricevuti in ingresso sono primi e quali no).

    Sei proprio sicura sicura che non ti siano sufficienti un'esauriente descrizione e dieci righe di pseudocodice?

    IO INTANTO CI PROVO.

    ==============================

    DESCRIZIONE: in ogni decina oltre il nove sono potenziali nuovi divisori solo quelli che, in decimale, terminano con {1, 3, 7, 9}. I divisori primi della prima decina {2, 3, 5, 7} si provano singolarmente.

    ------------------------------

    def compitoAssegnato(qualche genere di input):

    1) Acquisire k da input.

    2) Se k = 0: emettere "FINE"; TERMINARE.

    3) Porre (divisore, quoto) = primaScomposizione(k).

    4) Emettere k

    4a) Se quoto = 1: emettere "è primo";

    4b) altrimenti : emettere "è composto: ", divisore, "*", quoto.

    5) Proseguire dal passo 1.

    ------------------------------

    def primaScomposizione(n):

      for div in [2, 3, 5, 7]:

        if not n % div: return div, n // div

      dif = 2

      div = 11

      stop = math.sqrt(n)

      while div <= stop:

        if not n % div: return d, n // d

        div += dif

        dif = 6 - dif

      if div >= stop: return n, 1

      return div, n // div

    ---------------

    NOTA: "def primaScomposizione(n)" è in Python.

    Trovi software, documentazione e testi ai link

    http://www.python.it/

    http://www.python.it/doc/Howtothink/Howtothink-htm...

    ==============================

    SE PROPRIO CI TIENI AL FLOWCHART

    ==============================

    I componenti di un grafo di flusso (flusso dell'esecuzione) sono blocchi e frecce.

    ------------------------------

    BLOCCHI etichettati dai contenuti.

    ------------

    1) rettangolo (tipo A come azione):

    1a) contiene comandi eseguibili in parallelo o comunque senza ordine;

    1b) ha una freccia entrante e una uscente.

    ------------

    2) rombo (tipo T come test):

    2a) contiene un'affermazione (T);

    2b) ha una freccia entrante in un vertice e due uscenti da due altri vertici distinti dal primo e fra loro.

    ------------

    3) cerchio (tipo C come connettore):

    3a) contiene un nome simbolico o nulla;

    3b) ha tre sottotipi

    3b1) connettore d'inizio (etichetta: "α", "inizio", "start", ...) con

    * nessuna freccia entrante e una uscente; può essercene solo uno.

    3b2) connettore di confluenza (etichetta: qualsiasi) con

    * più d'una freccia entrante e una uscente; possono essercene qualsiasi numero.

    3b3) connettore terminale (etichetta: "ω", "fine", "end", ...) con

    * una freccia entrante e nessuna uscente; possono essercene qualsiasi numero.

    ------------------------------

    FRECCE: linee sequenziatrici dell'esecuzione.

    ------------

    Una freccia si compone di uno o più segmenti orizzontali o verticali connessi fra loro ad angolo retto.

    ------------

    Il primo estremo del primo segmento esce dal BLOCCO appena eseguito/valutato/connesso e il secondo estremo dell'ultimo segmento porta una punta di freccia ed entra nel blocco successivo in ordine di esecuzione/valutazione/connessione.

    ------------

    Il secondo estremo dei segmenti prima dell'ultimo possono o meno portare una punta di freccia (essere orientati) secondo come conviene alla chiarezza del disegno.

    ------------

    Di norma sono prive di etichetta.

    ------------

    Se sono le due frecce uscenti da un blocco T sono etichettate in prossimità del vertice da cui escono con un carattere apposto vicino al segmento:

    * carattere "- meno" sulla freccia del flusso da seguire se T è falsa;

    * carattere "+ più" sulla freccia del flusso da seguire se T è vera.

    ==============================

    SCHEMA DEL GDF per "def compitoAssegnato(input)"

    nel formato [BLOCCO(etichetta); →(verso) BLOCCO]

    ------------------------------

    0) C0(α) →(giù) C1

    1) C1(ciclo) →(giù) A0

    2) A0(acquisire k) →(giù) T0

    3) T0(k = 0): "+" →(dx) A1; "-" →(giù) A2

    4) A1(emettere "FINE") →(dx) C2

    5) C2(ω)

    6) A2(porre (divisore, quoto) = primaScomposizione(k)) →(giù) A3

    7) A3(emettere k) →(giù) T1

    8) T1(quoto = 1): "-" →(sx) A4; "+" →(dx) A5

    9) A4(emettere "è composto: ", divisore, "*", quoto) →(giù) C3

    10) A5(emettere "è primo") →(giù) C3

    11) C3() →(giù) C1

    ------------------------------

    NOTE

    ---------------

    Le connessioni A4 → C3 e A5 → C3 sono formate da due tratti orientati:

    * il primo in giù per un breve tratto;

    * il secondo in orizzontale verso C3 posto al centro, sotto T1.

    ---------------

    La connessione C3 → C1 è formata da quattro tratti orientati:

    * il primo in giù per un breve tratto;

    * il secondo a sinistra per quanto occorre a superare ogni disegno che sia più in alto;

    * il terzo in su fino alla quota di C1;

    * il quarto a destra fino a C1.

  • 4 sett fa

    Però se fate informatica non potete ragionare sulla soluzione

Altre domande? Fai una domanda e ottieni le risposte che cerchi.