Partyflock
 
Forumonderwerp · 1138637
Nog ervaren (of minder ervaren) C# programmeurs hier? Ik heb eigenlijk een aantal vragen over een console opdracht die ik niet voor elkaar lijk te krijgen :(

De opdracht is om een BMI index te laten berekenen, dus gewicht gedeeld door lengte in het kwadraat. Ik heb zelf al wel een idee hoe te starten, maar dat was het dan ook wel :x

Iemand die wellicht hulp kan bieden?
laatste aanpassing
Ongeveer zoiets?

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
int Gewicht = Int32.Parse(textBox1.Text);
float Lengte = float.Parse(textBox2.Text);
float BMI = (Gewicht / (Lengte * Lengte));
string StringBMI = BMI.ToString();
MessageBox.Show(StringBMI);
}
}
}

Ik heb doe normaal alles in VB, dus was voor het eerst iets met c# ;)
(het werkt wel!!)

Succes
Dit kan misschien wel helpen, maar toch is het anders geschreven ;)

Dit is de opdracht:

Maak een Console applicatie genaamd “Demo15” en schrijf een method genaamd “BerekenBMIscore” die een double als return-type heeft en 2 argumenten {int} heeft: GewichtInKg en LengteInCm.
Test deze method middels de Immediate Window (tijdens het runnen) of schrijf er eenvoudige input-output-instructies omheen, zoals bijvoorbeeld:

Wat is je gewicht 🇰🇬? 94

Wat is je lengte 🇨🇲? 172

Je BMI-score is: 31,77

NB: zorg dat de berekening de int-waardes goed omzet naar een double-waarde!
Tip: gebruik een hulpvariabele “BMIscore” {double} om de berekening, het resultaat aan toe te kennen en daarna terug te geven middels “return”. Deze hulpvariabele heb je bij het vervolg nog nodig.


Dit is mijn begin:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication2
{
class Program
{
static double BerekenBMIscore(int GewichtInKg, int LengteInCm)
double resultaat = BMIscore;
double BMIberekening = GewichtInKg / (LengteInCm * LengteInCm);

resultaat;


static void Main(string[] args)
{


}
}
}

Hetgeen er in de Main moet komen dat lukt wel, als ik de method maar geschreven krijg. Opmerking van de leraar:

Houd er rekening mee dat na het definieren van de method

static double BerekenBMIscore(int GewichtInKg, int LengteInCm)

je gelijk een [Enter] gevolgd door een block { } krijgt.
Nu staat er

double resultaat = BMIscore;
double BMIberekening = GewichtInKg / LengteInCm * LengteInCm;

los tussendoor. Dat gaat fouten opleveren.

Daarnaast moet je rekening houden met het feit dat de gebruiker lengte in cm opgeeft en dat jij dat nog moet omrekenen naar lengte in m.
Dat doe je ook in de method.
Kijk of je hiermee al verder komt...

Niet echt dus :D

Thx voor je hulp iig!
laatste aanpassing
Wat is je gewicht 🇰🇬? 94

Wat is je lengte 🇨🇲? 172

Je BMI-score is: 31,77

Dit voorbeeld klopt overigens al niet :lol:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
int GewichtInKg;
int LengteInCm;
Console.WriteLine("Wat is je gewicht 🇰🇬?");
GewichtInKg = int.Parse(Console.ReadLine());
Console.WriteLine("Wat is je lengte 🇨🇲?");
LengteInCm = int.Parse(Console.ReadLine());
double test = BerekenBMIscore(GewichtInKg, LengteInCm);
Console.WriteLine("Je BMI-score is: " + test);
Console.ReadLine();
}


public static double BerekenBMIscore(int Gew, int Len)
{
double Len2 = Len / 100.0;
return Gew / (Len2 * Len2);
}
}
}
cool (Y) hier kan ik verder mee, thanks a lot!
(Y)
Snap je ook waarom er bijvoorbeeld die laatste "ReadLine()" staat? ;)

Leuk he, programmeren B)
Yep, zodat je het scherm ook kunt uitlezen ;) Probeer meer duidelijkheid te krijgen over hoe de code nu precies werkt. Het parsen etc heb ik al gehad, dat snap ik wel. Nu die methods nog, haha.. Elke keer als ik alles snap word ik weer doodgegooid met nieuwe zaken, om frusty van te worden.

Programmeren tot nu toe eerlijk gezegd niet mijn favoriet, maar krijg een snelle cursus omdat ik opleiding tot softwaretester ga volgen, istqb. Noodzakelijk kwaad dus :p Blijf gewoon oefenen, dan rol ik er vanzelf wel in!
laatste aanpassing
*bump
laatste aanpassing
.
Vandaag weer objectgerelateerd leren programmeren. Dat zou volgens de leraar erg moeilijk zijn, maar liet voor mij juist het e.e.a. op zijn plek vallen :) Ik snap nu overigens wel waarom ik het te snel vind gaan, en de fun er nog niet in zit.. Leraar vertelde vandaag dat we in 7 weken tijd net zoveel stof hebben gehad als een HBO opleiding programmeren in 1 jaar :lol: Niet gek dus dat nog lang niet alles duidelijk is.

Heb wel de uitwerking van de (gehele) opdracht, die is:

Body-mass index (BMI) is een index die de verhouding tussen lengte en gewicht bij een persoon weergeeft. De BMI wordt veel gebruikt om een indicatie te krijgen of er sprake is van overgewicht. BMI is gedefinieerd als:



Maak een Console applicatie genaamd “Demo15” en schrijf een method genaamd “BerekenBMIscore” die een double als return-type heeft en 2 argumenten {int} heeft: GewichtInKg en LengteInCm.
Test deze method middels de Immediate Window (tijdens het runnen) of schrijf er eenvoudige input-output-instructies omheen, zoals bijvoorbeeld:

Wat is je gewicht 🇰🇬? 94

Wat is je lengte 🇨🇲? 172

Je BMI-score is: 31,77

NB: zorg dat de berekening de int-waardes goed omzet naar een double-waarde!
Tip: gebruik een hulpvariabele “BMIscore” {double} om de berekening, het resultaat aan toe te kennen en daarna terug te geven middels “return”. Deze hulpvariabele heb je bij het vervolg nog nodig.

De BMI-scores worden geclassificeerd en zeggen zodoende iets over het gewicht van de persoon in kwestie.

Interpretatie van de BMI-score:



Breid de method “BerekenBMIscore” uit met 2 ref-argumenten: BMIKlasse {int} met mogelijke waarden: 1, 2, 3, 4, 5 of 6, en BMIKlasseInterpretatie {string} die de interpretatie teruggeeft als in bovenstaand tabelletje (“ondergewicht”, “normaal gewicht”, etc.).
Test deze method middels de Immediate Window (tijdens het runnen) of schrijf er eenvoudige input-output-instructies omheen, zoals bijvoorbeeld:

Wat is je gewicht 🇰🇬? 94

Wat is je lengte 🇨🇲? 172

Je BMI-score is: 31,77
Bijbehorende BMI-klasse is: 5
Interpretatie: ernstig overgewicht

Tip 1: gebruik de (gevulde) hulpvariabele “BMIscore” uit 15a. om de klasse en interpretatie te bepalen. Z.O.Z.


Tip 2: Of de waarde van x tussen 2 en 5 ligt, schrijf je wiskundig als:
2 < x < 5
maar in C# wordt dat (als x een variabele is):
((x > 2) && (x < 5))
Zie ook p.75, 76


Breid de method “BerekenBMIscore” uit met 1 ref-argument: OpgetredenFout {Exception} die een eventuele fout in de berekening of uitwerking teruggeeft aan de gebruiker.
Test deze method middels de Immediate Window (tijdens het runnen) of schrijf er eenvoudige input-output-instructies omheen, zoals bijvoorbeeld:

Wat is je gewicht 🇰🇬? 94

Wat is je lengte 🇨🇲? 172

Er is een fout opgetreden bij het berekenen van de BMI-score!
De foutmelding is: <Exception.Message>



using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Demo15
{
class Program
{
static void Main(string[] args)
{
double BMI;
int BMIKlasse = 0;
string BMIstring = "";
Exception err = null;
try
{
BMI = BerekenBMI(100, 197, ref BMIKlasse, ref BMIstring, ref err);
Console.WriteLine("BMI: " + BMI);
Console.WriteLine("BMIklasse: " + BMIKlasse);
Console.WriteLine("BMIstring: " + BMIstring);
}
catch
{
Console.WriteLine(err.Message);
}
Console.ReadLine();
}

static double BerekenBMI(int Gewicht, int Lengte)
{
double BMIscore;
double dLengte = Lengte / 100.0;

double dGewicht = Convert.ToDouble(Gewicht);


return BMIscore = Math.Round(dGewicht / Math.Pow(dLengte, 2),2);
}

static double BerekenBMI(int Gewicht, int Lengte,ref int BMIKlassse,ref string BMIstring, ref Exception err)
{
double BMIscore;
BMIscore = BerekenBMI(Gewicht, Lengte);
if (BMIscore < 0)
{
throw new Exception("help");
}

if (BMIscore > 0 && BMIscore < 18.5)
{
BMIKlassse = 1;
BMIstring = "ondergewicht";
}
else if (BMIscore > 18.5 && BMIscore < 24.9)
{
BMIKlassse = 2;
BMIstring = "normaal gewicht";
}
else if (BMIscore > 25 && BMIscore < 26.9)
{
BMIKlassse = 3;
BMIstring = "licht overgewicht";
}
else if (BMIscore > 27 && BMIscore < 29.9)
{
BMIKlassse = 4;
BMIstring = "matig overgewicht";
}
else if (BMIscore > 30 && BMIscore < 39.9)
{
BMIKlassse = 5;
BMIstring = "ernstig overgewicht";
}
else
{
BMIKlassse = 6;
BMIstring = "ziekelijk overgewicht";
}

return BMIscore;
}

}
}



Sommige dingen nog wel een beetje :vaag: maar ga er nu voor zorgen dat ik het trucje na kan doen zonder te spieken, dan valt de rest over een paar weken wel weer op zijn plek :D

Klopt ook nog niet helemaal, want hier zijn de waardes al ingegeven.
laatste aanpassing
 
Uitspraak van - Den= op vrijdag 14 december 2012 om 15:31:
HBO opleiding programmeren in 1 jaar :lol: Niet gek dus dat nog lang niet alles duidelijk is.


Dan weet ik niet welk HBO die bedoeld. Want wat jij nu laat zien deden wij ook in paar weekjes met 0,0 voorkennis. Wel in Java dan, maargoed. ;)

Misschien dat je het al wist, maar aangezien je net begint is dit misschien ook wel leuk om naar te kijken ipv eindeloos lange if-statements:
http://msdn.microsoft.com/en-us/library/06tc147t%28v=vs.71%29.aspx

Ook nog een tip, wat ik zelf veel gebruik. Als je een variabele initialiseert kan je ook 'var' gebruiken.
var BMI = 0.0;
var BMIstring = "";

Verder nog een tip, maar ik zou het zelf opdelen in kleinere methodes. Maar aangezien dat niet in de opdracht staat moet dat niet.
Mocht je echt dringende vragen hebben wil ik je best helpen. Programmeer ondertussen al 3 jaar OO in Java en een jaartje in C#.
laatste aanpassing
Even kort, want moet zo naar school.

De leraar (zelf ook nog student btw) zei dat. Wij hebben 1 dag in de week les en krijgen elke week 2 of 3 nieuwe onderwerpen. De opdracht die je hierboven ziet was opdracht 15 van 3 weken terug. Ondertussen al bezig met OOP, en daar dieper op in aan het gaan.

Na de kerst gaan we al Windows applicaties bouwen, dus gaat vrij snel.

Leraar zei iig dat hij met de stof tot nu toe een jaar heeft kunnen oefenen. Dat is voor ons niet het geval, dus bedankt voor je eventuele hulp ;)
 
Artiest Synthopia
:| Looks like :

 
Uitspraak van - Den= op vrijdag 21 december 2012 om 08:15:
Na de kerst gaan we al Windows applicaties bouwen, dus gaat vrij snel.


Windows Forms of ASP.NET?
Als voorbereiding daarvoor zou je naar het Entity Framework en LINQ kunnen gaan kijken. Die technieken ontkom je niet aan met .NET
Zijn ook vrij veel dingen over te vinden op MSDN.

Ik heb C# compleet zelfstandig geleerd tijdens een software ontwikkelingsproject, maar had al een jaar ervaring met Java, dus dat is dan makkelijker instappen.
Uitspraak van verwijderd op vrijdag 21 december 2012 om 10:51:
Windows Forms


Windows Forms inderdaad. LINQ had de 'leraar' het al over, ga ik checken, samen met Entity Framework. thx.

Vandaag weer dieper ingegaan op OOP, en begonnen met testen in white/blackbox. Begint al wat leuker te worden zo, alle stof begint langzaamaan een beetje duidelijker te worden :)

DLL bestandjes openen, beetje checken en testen. Vooralsnog voor mij leuker dan het programmeren an sich, maar dat gaat mijn taak ook niet worden. Wil het natuurlijk wel zo goed mogelijk onder de knie hebben!

Uitspraak van verwijderd op vrijdag 21 december 2012 om 10:51:
Ik heb C# compleet zelfstandig geleerd tijdens een software ontwikkelingsproject, maar had al een jaar ervaring met Java, dus dat is dan makkelijker instappen.


netjes :) ik merk inderdaad wel dat de kandidaten in ons programma met java en vb ervaring het sneller oppikken ja. Maar alsnog (Y)
laatste aanpassing