#pragma region IntelliSense_Fix #ifdef __INTELLISENSE__ #include #include #include #endif #pragma endregion import std; int valuta_fattore(std::string_view expr = ""); int valore_assoluto(int n); int stima_ampiezza(); void riga_divisoria(char simbolo, int lunghezza=stima_ampiezza()); //Definizione di una funzione // Intestazione // { // dichiarazione/definizione di VARIABILI LOCALI // corpo con istruzioni // } // //versioni legacy e moderne //INTESTAZIONE LEGACY per funzione con valore di ritorno // tipo_valore_restituito nome_funzione(lista parametri, anche vuota) // { // istruzioni // // return espressione_tipo_restituito // } int f() { return 200;} //void f2(int p1, int p2 = 10, int p3 = 20, int p4=56); //void disegnaRettangolo(int base, int altezza, int colore = NERO, int spessore = 1, int livello = 0); int valuta_espressione(std::string_view& expr) { // Un'espressione inizia sempre con un fattore int risultato = valuta_fattore(expr); //... ecc return risultato; } int valuta_fattore(std::string_view expr) { if (expr.empty()) return 0; // Caso 1: Trova una parentesi. La delega torna all'espressione. if (expr.front() == '(') { expr.remove_prefix(1); // Consuma '(' int risultato = valuta_espressione(expr); // Chiamata mutuamente ricorsiva //... ecc } } //emula la funzione abs della STL (ma solo per gli int) int valore_assoluto(int n) { //if (n < 0) //{ // n = -n; //} // //return n; return n >= 0 ? n : -n; } int stima_ampiezza() { return 60; } void riga_divisoria(char simbolo, int lunghezza) { std::println("{}", std::string(lunghezza, simbolo)); return; } auto main() -> int { //f2(10,20); int risultato = -100; std::println("{}", valore_assoluto(34)); riga_divisoria('-'); std::println("{}", risultato); int v = valore_assoluto(-9); if (valore_assoluto(risultato) > 80) { std::println("Soglia sicurezza superata!!"); } riga_divisoria('-'); }