Behöver hjälp med Flödesschema

Permalänk
Medlem

Behöver hjälp med Flödesschema

Hej. Jag studerar programmering 1 på distans och håller just nu på med en uppgift som heter "Amerikanen i bastun". Jag har lyckas skriva en kod som verkar fungera bra men en del av uppgiften är att man ska skriva ett flödesschema till koden och jag fattar verkligen inte hur jag ska göra. vad ska vara med i det och hur skall det skrivas. Ska jag tillexempel ha med try-Catch och isåfall hur? är extremt tacksam för all hjälp.

class Program { private static double fahr; private static double celsius; static double FharToCels(double fahrenheit) { double celsius = ((fahrenheit - 32) * 5) / 9; return celsius; } static void Main(string[] args) { do { Console.WriteLine("Please state desired temperature:"); bool loop = true; do { try { fahr = Convert.ToDouble(Console.ReadLine()); celsius = FharToCels(fahr); loop = false; } catch { Console.WriteLine("Error. Please enter temperature in numbers"); } } while (loop); Console.WriteLine(fahr + " Degrees in Fahrenheit is : " + Math.Round(celsius, 0) + " degrees in celsius."); if (celsius > 77) { Console.WriteLine(Math.Round(celsius, 0) + " degrees celsius is too hot, turn it down a bit. "); } else if (celsius < 73) { Console.WriteLine(Math.Round(celsius, 0) + " degrees celsius is too cold, turn it up a bit. "); } else if (celsius == 75) { Console.WriteLine(celsius + " degrees celsius is a perfect temperature. "); } else { Console.WriteLine("This temperature is acceptable "); } } while (celsius < 73 || celsius > 77); Console.ReadLine(); } } }

Permalänk
Medlem

@noxheart: http://www.kursnavet.se/kurser/Programmering%20A-C/htm/10_flo...

Används för att visa flödet av koden, antar att läraren vill att du kan visa upp hur din kod fungerar och hur logiken ser ut i ett flöde. Tror du inte behöver ha med try-catch, däremot kan du skriva typ "om heltal gör detta. Annars gå tillbaka och gör om"

Permalänk
Medlem

Kolla draw.io och välj template flowchart så får du ett bra grundupplägg och tydliga symboler.

Om du hoovrar över symbolerna till vänster så står det också vad respektive symbol används till, tex process, beslutsnod osv.

Visa signatur

Citera så jag hittar tillbaka...

1: AM4 3600X, RTX 4060 OC, X570-I, 32GB 3200MHz, SF450, 34”
2: AM4 3600, RTX 3070 OC, B550-I, 16GB 3600MHz, SF750, 34”
3: AM4 3600, RTX 3070 OC, B550-I, 16GB 3200MHz, SF600, 34”

Permalänk
Medlem

Tack så mycket. Tror jag har gjort det relativt bra nu men är fast på en sak. Detta står som en del av uppgiften:
"Man gör ett aktivitetsdiagram per metod, och varje metod ska tydligt
separeras i figuren. För att visualisera ett anrop finns olika lösningar"

Förstår inte hur och vart jag ska sätta ut metoderna. Helt ärligt är jag inte 100% vad metoder är men jag tror att metoderna jag har i detta program är: "Static double FahrToCels(double fahrenheit" och "static void Main(string[] args)"

Här är det jag gjort hittills:

Permalänk
99:e percentilen

Följande handlar inte om flödesscheman, men är mycket viktigt om du vill lära dig programmera bra.

En av de viktigaste principerna du ska tänka på när du programmerar, @noxheart, är Don’t Repeat Yourself (DRY). Om du senare ska utöka det acceptabla intervallet till exempelvis 70–80 °C blir det inte roligt om du t ex ändrar 73 till 70 på ett ställe men glömmer det på ett annat. (Och tänk då om det inte ens är du, utan någon annan, som ska göra ändringen!)

I ett ”riktigt” (läs: större) program är sådana misstag nästan omöjliga att gardera sig mot om man skriver ”våt” kod (i motsats till DRY). Inte ens en automatisk sökning efter värdet som ska ersättas hjälper i allmänhet, av två skäl:

  • Det kan finnas flera förekomster av samma uttryck som inte har något att göra med varandra – vilka förekomster av t ex 73 ska bytas ut? Det är ofta inte uppenbart.

  • Värden förekommer ofta ”maskerade”, till exempel om du använder celsius < 63 för att kolla om temperaturen är ”jättelåg” (mer än 10 °C utanför det acceptabla intervallet).

Du bör istället sträva efter att skriva vad du menar. Bygg dina program så att du aldrig behöver ändra på flera ställen för att ändra en sak, och så att det är enkelt för någon som inte skrivit koden att modifiera programmets konfiguration. I det här fallet, högst upp i koden:

// Temperatures in degrees Celsius: private static final int OPTIMAL = 75; private static final int MIN_ACCEPTABLE = 73; private static final int MAX_ACCEPTABLE = 77;

Eller till och med, beroende på vad du vill mena™:

// Temperatures in degrees Celsius: private static final int OPTIMAL = 75; private static final int TOLERANCE = 2; private static final int MIN_ACCEPTABLE = OPTIMAL - TOLERANCE; private static final int MAX_ACCEPTABLE = OPTIMAL + TOLERANCE;

Ersätt sedan alla motsvarande numeriska literaler (75, …) med deras respektive namn (OPTIMAL, …), så har du ett betydligt bättre program (ur en principiell synvinkel).

Visa signatur

Skrivet med hjälp av Better SweClockers

Permalänk
Moderator
Festpilot 2020, Antiallo

@noxheart: Ser ut att vara på god väg.

Tänk på att flödesschemat är tänkt att visualisera flödet i ditt program. Då är det viktigt att det finns en tydlig riktning.
Generellt sett gör man oftast alla grejer i en led, dvs börja högst upp och jobba nedåt.

Alla lyckade test är nedåt, loopback och misslyckanden görs oftast åtsidorna och sedan uppåt till föregående block. Att dra pilar på diagonalen har jag aldrig sett förut.

Ta en titt på detta exemplet så förstår du vad jag menar.

Dold text
Visa signatur

 | PM:a Moderatorerna | Kontaktformuläret | Geeks Discord |
Testpilot, Skribent, Moderator & Geeks Gaming Huvudadmin

Permalänk
Medlem

Tack ännu en gång för mer hjälp. Jag ändrade koden lite efter @Alling 's förslag och försökte även snygga till flödesschemat lite, dock så gjorde jag inte riktigt som @DavidtheDoom föreslog för visste inte hur jag skulle göra true nedåt med if else.

Jag fattar fortfarande inte riktigt hur jag skall göra med metoder etc men detta är hur det ser ut nu. Är tacksam för alla tips