/* Ammortamenti basati su Break Event Point ATTENZIONE: il programma opera su numeri interi, mentre la natura dei calcoli richiede numeri FloatingPoint. Lo scopo del programma è solo quello di illustrare lo stile imposto dalla Programmazione Strutturata, e non di fornire uno strumento di calcolo per l'analisi degli investimenti. */ PROC main() DEF costo_attrezzature, costo_un_pezzo, prezzo_previsto, pezzi, costo_totale, ricavo, produrre=0, prezzo_minimo=0, flag_exit=FALSE WriteF('Ammortamenti V1.0\n') costo_attrezzature := input('Costo delle attrezzature') costo_un_pezzo := input('Costo di produzione di un pezzo') WHILE flag_exit = FALSE prezzo_previsto := input('Prezzo di vendita di un pezzo') IF prezzo_previsto <> 0 WriteF('GUADAGNO 1 pezzo = \t\t\d\n', (prezzo_previsto - costo_un_pezzo)) pezzi := numero_pezzi(costo_attrezzature, costo_un_pezzo, prezzo_previsto) WriteF('Numero dei pezzi necessari = \t\d\n', pezzi) costo_totale := costo_attrezzature + (costo_un_pezzo * pezzi) WriteF('Costo Reale dell\aoperazione = \t\d\n', costo_totale) ricavo := prezzo_previsto * pezzi WriteF('Ricavato della vendita = \t\d\n', ricavo) WriteF('Guadagno Reale = \t\t\d\n', (ricavo - costo_totale)) WriteF('-------------------------------------------\n') REPEAT produrre := input('Quanti pezzi hai preventivato di vendere') prezzo_minimo := prezzo(costo_attrezzature, costo_un_pezzo, produrre) WriteF('Prezzo minimo per \d pezzi = \d\n', pezzi, prezzo_minimo) WriteF('\n\tV E R I F I C A\n') pezzi := numero_pezzi(costo_attrezzature, costo_un_pezzo, prezzo_minimo) WriteF('Pezzi da vendere = \d\n\n', pezzi) UNTIL produrre = 0 ELSE flag_exit := TRUE ENDIF ENDWHILE WriteF('FINE!\n') CleanUp(0) ENDPROC -> Preleva l'input da tastiera PROC input(frase=NIL:PTR TO CHAR) DEF prova[64]:STRING WriteF('\s? ', frase) ReadStr(stdin, prova) ENDPROC Val(prova) -> Calcola il numero dei pezzi da produrre PROC numero_pezzi(attrezzature=NIL, pezzo=NIL, previsto=NIL) DEF numero=0 IF attrezzature <> NIL IF pezzo <> NIL IF previsto <> NIL numero := attrezzature / (previsto - (2 * pezzo)) ENDIF ENDIF ENDIF ENDPROC numero -> Calcola il prezzo di vendita consigliato PROC prezzo(attrezzature=NIL, costo=NIL, pezzi=NIL) DEF consigliato=0 IF attrezzature <> NIL IF costo <> NIL IF pezzi <> NIL consigliato := (attrezzature / pezzi) + (2 * costo) ENDIF ENDIF ENDIF ENDPROC consigliato