Behöver hjälp med Flödesschema

Trädvy Permalänk
Medlem
Registrerad
Maj 2019

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(); } } }

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Aug 2013

@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"

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Sep 2004

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.

Citera så jag hittar tillbaka...

Trädvy Permalänk
Medlem
Registrerad
Maj 2019

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:

Trädvy Permalänk
Entusiast
Testpilot
Plats
Chalmers
Registrerad
Aug 2011

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).

Skrivet med hjälp av Better SweClockers

Trädvy Permalänk
Festpilot, Antiallo
David Kvist
Plats
Göteborg
Registrerad
Jun 2012

@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

Synpunkter på min moderering? Kontakt:
| PM:a mig | Maila mig | PM:a Moderatorerna | Kontaktformuläret |
Testpilot, Skribent, Moderator & Geeks Gaming Huvudadmin
| Geeks Officiella Discord-server |
Forumregler

Trädvy Permalänk
Medlem
Registrerad
Maj 2019

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