( ostream ) << ( annan datatyp ) : ostream



Relevanta dokument
För att skriva data till skärmen ( konsolen) används objektet System.out tillsammans med metoden println eller print.

Snabbslumpade uppgifter från flera moment.

Föreläsning 5: Rekursion

Tentamen i Programmering grundkurs och Programmering C

Lathund, procent med bråk, åk 8

Individuellt Mjukvaruutvecklingsprojekt

1 Texthantering. 1.1 Typen char. Exempel, skriv ut alfabetet

TIMREDOVISNINGSSYSTEM

Datorövning 2 Statistik med Excel (Office 2007, svenska)

Vad är det och hur definierar vi en Biblioteksfunktioner (math) Top-down-programmering lokala globala variabler Arrays som in-parametrar

1 Funktioner och procedurell abstraktion

Du ska nu skapa ett litet program som skriver ut Hello World.

Introduktion till programmering

4-6 Trianglar Namn:..

Laborativ matematik som bedömningsform. Per Berggren och Maria Lindroth

Elektronen och laddning

Partnerskapsförord. giftorättsgods görs till enskild egendom 1, 2. Parter 3. Partnerskapsförordets innehåll: 4

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

Sammanfattning på lättläst svenska

Omvandla Vinklar. 1 Mattematiskt Tankesätt

Manual för Min sida 1/ rev

Utveckla arbetsmiljö och verksamhet genom samverkan

För dig som är valutaväxlare. Så här följer du reglerna om penningtvätt i din dagliga verksamhet INFORMATION FRÅN FINANSINSPEKTIONEN

Projekt benböj på olika belastningar med olika lång vila

ANVÄND NAVIGATIONEN I CAPITEX SÄLJSTÖD

När jag blir gravid ska jag sluta röka!

HT 2011 FK2004 Tenta Lärare delen 4 problem 6 poäng / problem

Kapitel 6. f(x) = sin x. Figur 6.1: Funktionen sin x. 1 Oinas-Kukkonen m.fl. Kurs 6 kapitel 1

MultiBoot Användarhandbok

Sammanfatta era aktiviteter och effekten av dem i rutorna under punkt 1 på arbetsbladet.

Programexempel: tärningsspel

Algebra, polynom & andragradsekvationer en pampig rubrik på ett annars relativt obetydligt dokument

Pesach Laksman är lärarutbildare i matematik och matematikdidaktik vid Malmö högskola.

Instruktion 3. Tabbar.

Vi skall skriva uppsats

4-3 Vinklar Namn: Inledning. Vad är en vinkel?

Presentationsövningar

Mätningar på op-förstärkare. Del 3, växelspänningsförstärkning med balanserad ingång.

FRÅN A TILL Ö LäraMera Ab / och Allemansdata Ab / FRÅN A TILL Ö

Fullför installation av ELIQ

Avsikt På ett lekfullt sätt färdighetsträna, utveckla elevers känsla för hur vårt talsystem är uppbyggt samt hitta mönster som uppkommer.

Datorövning 2 Statistik med Excel (Office 2003, engelska)

Dina tänder är viktiga. Du behöver dem varje dag.

Övningar Dag 2 En första klass

Facit med lösningsförslag kommer att anslås på vår hemsida Du kan dessutom få dem via e-post, se nedan.

Skapa en rapport med snygg formatering, rubriker, sidnummer och innehållsförteckning

SKOGLIGA TILLÄMPNINGAR

INSTUDERINGSFRÅGOR TILL PROVET

TIMREDOVISNINGSSYSTEM

Systematiskt kvalitetsarbete

Varför är det så viktigt hur vi bedömer?! Christian Lundahl!

Skriva B gammalt nationellt prov

Menys webbaserade kurser manual för kursdeltagare. Utbildningsplattform: Fronter

VÄRDERINGSÖVNINGAR. Vad är Svenskt?

Klasser och objekt i C#

Övningshäfte i matematik för. Kemistuderande BL 05

Kampanj kommer från det franska ordet campagne och innebär att man under en tidsbegränsad period bedriver en viss verksamhet.

Statsbidrag för läxhjälp till huvudmän 2016

Nämnarens adventskalendern 2007

Det är bra om även distriktsstyrelsen gör en presentation av sig själva på samma sätt som de andra.

Rapport uppdrag. Advisory board

Hur skapar man formula r

Bered en buffertlösning. Niklas Dahrén

Handbok Ämnesprov 2016 Lärarinmatning I Dexter Åk 3. Uppdaterad: /HL Version: IST AB

Bortom fagert tal om bristande tillgänglighet som diskriminering

912 Läsförståelse och matematik behöver man lära sig läsa matematik?

SANNOLIKHET. Sannolikhet är: Hur stor chans (eller risk) att något inträffar.

Trepunkts rullbälten i en 68 cab.

Lathund till Annonsportalen

Sammanfattning av kursdag 2, i Stra ngna s och Eskilstuna

Modul 6: Integraler och tillämpningar

Lektion 1, del b Utskrifter av variabelvärden Inläsning av värden till variabler

Tillämpad UNIX. Laborations-PM Christian von Schultz, Programpaket och processhantering

Efter att du har installerat ExyPlus Office med tillhörande kartpaket börjar du med att göra följande inställningar:

Intervjumall. Datum: Intervjuare: Kandidatens namn: Kandidatens uppgifter: Växel: (5)

Beräkning av inavelsgrad

Två konstiga klockor

Föreningen Nordens lokala hemsidor

En lönerevision görs i flera steg; Initiering - Lönerevision Attestering - Skapa förmån - Uppdatera lön.

Tankar om elevtankar. HÖJMA-projektet

ANVÄNDARHANDLEDNING FÖR

Lathund för pedagoger Grundskola med:

Hur utvecklar man användbara system? Utvärdering. Användbarhet handlar om kvalitet. Utvärdering. Empiriska mätningar. Metoder

Idag: Dataabstraktion

Denna talesmannapolicy gäller tillsammans med AcadeMedias kommunikationspolicy. I kommuniaktionspolicyn finns följande formulering:

1,2C 4,6C 1A. X-kuber. strävorna

CAEBBK01 Drag och tryckarmering

Webb-bidrag. Sök bidrag på webben Gäller från

ATT KUNNA TILL. MA1050 Matte Grund Vuxenutbildningen Dennis Jonsson

Nedlagd studietid och olika kurskarakterisika en anspråkslös analys baserad på kursvärderingsdata. Fan Yang Wallentin

Handbok Blinken. Danny Allen Översättare: Stefan Asserhäll

Träning i bevisföring

Vetenskapliga begrepp. Studieobjekt, metod, resultat, bidrag

Invisible Friend Senast uppdaterad

Edgar Allan Poe läsförståelse- och funderingsfrågor samt skrivövning

Handledning för digitala verktyg Talsyntes och rättstavningsprogram. Vital, StavaRex och SpellRight

Laborationspecifikation

Guide för att hitta markavvattningssamfälligheter och täckdikningsplaner

Transkript:

1 Inmatning och utskrift Inmatning från tangentbord och utskrift till skärm sker i C++ med hjälp av strömmar. Vi har tidigare sett exempel på utskrift. Vi kommer i det här avsnittet även ta upp inmatning från tangentbordet så att vi kan skapa program som kommunicerar med en användare istället för att använda värden inskrivna i programkoden. 1.1 Utskrift till skärm För att skriva data till skärmen ( konsolen) används variabeln cout tillsammans med strömoperatorn <<. Denna binära operator fungerar på samma sätt som andra binära operatorer dvs. den tar två operander och ger ett resultat. Variabeln cout är deklarerad i filen iostream med datatypen ostream (output stream, utström). Operationen << ser generellt ut som ( ostream ) << ( annan datatyp ) : ostream Vi har tidigare sett bland annat int a; a = 6; cout<< a har värdet "<< a << endl; double x; x = 3.202; cout<< x har värdet << x << endl; Om vi betraktar rad 3 cout<< a har värdet "<< a << endl; ser vi att utströmsoperatorn finns på tre ställen, satsen är alltså sammansatt av tre enkla uttryck. Den operation som utförs först är den längst till vänster. eller cout<< "a har värdet" ( ostream ) << ( text ):ostream Returvärdet från operationen är variabeln cout. ( operationen ger operanden som resultat ) Nästa operation kan alltså läsas ut som cout<< a Även denna operation ger operanden cout som resultat. Den sista operationen kan därför läsas ut som cout<< endl

Med utströmsoperatorn kan man alltså med en enda sats skriva ut så många variabler och texter som man vill. Det är ändå oftast en god ide att hålla raderna så pass korta att de blir lättlästa. Det brukar som regel innebära maximalt 2 3 variabler och en kortare text. 1.1.1 Formatering av utmatning #include<iostream> Man vill gärna att den utskrift som programmet gör på skärmen ska vara snygg och lättläst. Tyvärr blir det inte alltid som man tänkt sig, i synnerhet då värden på flyttalsvariabler ska skrivas ut på skärmen. Exempel, valutaomvandling double kron_dollar_kurs = 10.43; double kronor = 345.50; double dollars; dollars = kronor / kron_dollar_kurs; cout << kronor << " svenska kronor blir "; cout << dollars << " amerikanska dollar" << endl; Resultatet av programkörningen blir 345.5 svenska kronor blir 33.1256 amerikanska dollar Press any key to continue Det är inte speciellt snyggt att få fyra decimaler på dollarkursen. På vissa kompilatorer kan man få ännu mer svårlästa utskrifter ex 3.455E+02 svenska kronor blir 3.31256E+1 amerikanska dollar Press any key to continue Siffrorna ska läsas som 3.455 * 10 2 och 3.31256* 10 1. För att råda bot på detta finns det ett antal knep man kan ta till. För att få ett visst antal decimaler kan man skriva cout.setf(ios::showpoint); // visa alltid decimalpunkt cout.precision( 2 ); // med två flyttalsdecimaler Skriv denna dessa två rader som egna satser innan flyttalen skrivs ut. Obs detta påverkar inte på något sätt flyttalsvariablernas precision utan endast hur de skrivs på skärmen. För att få en decimalpunkt istället för E notationen ovan skriver man

cout.setf(ios::fixed ); cout.width( 20 ); setf och precision är funktioner( eller metoder ) kopplade till utströmmen cout. Det som ges innanför parenteserna ( ios::fixed och heltalet 2 )kallas funktionsargument. Ett annat sätt att formatera utskriften är att ange hur många positioner ett uttryck ska uppta. #include<iostream> Ger att nästföljande utströmsoperation kommer att ta minst 20 teckenpositioner till sitt förfogande. Om talet eller texten är kortare fogas tillräckligt antal blanksteg in. Observera att den angivna bredden bara gäller för den utströmsoperation till cout som kommer direkt efter cout.width( ) Sammantaget kan då programmet se ut som: double kron_dollar_kurs = 10.43; double kronor = 345.50; double dollars; dollars = kronor / kron_dollar_kurs; cout.setf(ios::showpoint); cout.precision( 2 ); cout.setf(ios::fixed ); cout << kronor << " svenska kronor blir "; cout << dollars << " amerikanska dollar" << endl; 1.2 Inmatning från tangentbordet Inmatning görs med strömmar, på ett liknande sätt som utmatningen. Man använder sig av en inströmsoperator>> istället för utströmsoperatorn<<, och inströmmen kallas cin istället för cout. Den stora skillnaden är att en inströmsoperation stannar tillfälligt programmet i väntan på inmatning ifrån tangentbordet. Inströmsoperationen har liknande form som utströmsoperationen ( istream ) >> ( någon datatyp ) : istream Datatypen istream ( input stream, inström) och cin är båda definierade och deklarerade i iostream. För att ta emot inmatning av ett heltal från tangentbordet kan man skriva:

int i; cin >> i; Inströmsoperationen liknar till viss del en tilldelningsoperation, men med den stora skillnaden att värdet som variabeln i får bestäms av användaren som kör programmet. Programmet väntar i inströmsoperationen tills det att användaren faktiskt matat in ett värde. Denna egenhet gör att man för varje inmatningssats ( inströmsoperation från cin ) måste se till att användaren blir varskodd att programmet väntar på inmatning. Det görs ganska enkelt genom att skriva ut lite ledtext på skärmen. int i; cout << "Mata in ett heltal och tryck på return"<<endl; cin >> i; Glömmer man att lägga till ledtext till inmatningen, eller kanske rentav råkar lägga den efter inmatningen, kommer programmet att vänta på en inmatning från användaren, och användaren kommer i sin tur att inte ha en aning om att programmet väntar tålmodigt på en inmatning. Dollarkursprogrammet tidigare blir betydligt mer användbart om man lägger till en inmatningsprocedur

#include<iostream> double kron_dollar_kurs = 10.43; double kronor; double dollars; // ange ledtext direkt före inmatning cout << "Ange hur många kronor du har:"<<endl; cin >> kronor; // resultatet beror på vad som matats in dollars = kronor / kron_dollar_kurs; cout.setf(ios::showpoint ); cout.precision( 2 ); cout.setf(ios::fixed ); cout << "Dina "<< kronor << " svenska kronor blir "; cout << dollars << " amerikanska dollar" << endl; En programkörning kan då se ut som Ange hur mõnga kronor du har: 6500 Dina 6500.00 svenska kronor blir 623.20 amerikanska dollar Press any key to continue Programmet skriver först ut ledtexten, väntar på inmatningen, 6500[Enter]. [Enter] anger att tangenten Enter/Return/Vagnretur skall tryckas. Sedan skrivs resultatet av beräkningen ut. Inströmsoperationen kan i likhet med utströmsoperationen ta emot flera inmatningar i en sats. double variabel1, variabel2; cout<<"skriv in två flyttal, avsluta med return"; cin>> variabel1 >> variabel2; Inmatningen till denna sats kan antingen göras genom att man skriver två tal och trycker return mellan varje tal, eller kan man separera talen med blanksteg eller tab och avsluta inmatningen med return. Se även om vittecken i avsnittet Texthantering, in och utmatning. Problemet med denna typ av inmatning är att man inte kan skriva ut någon ledtext mellan varje inmatning. Utan man kan bara ge ledtexter typ "Ange 4 tal". Det kan därför vara ett bättre alternativ att dela upp det så att man bara har en inmatning per sats, och ledtext till varje inmatning. 1.2.1 Exempelprogram Beräkna area och omkrets hos en rektangel.

#include<iostream> double sida; double bredd; double omkrets; // ange ledtexten cout << "Ange längden på rektangeln:"<<endl; cin >> sida; // ny ledtext cout << "Ange bredden på rektangeln:"<<endl; cin >> bredd; omkrets = sida*2 + bredd*2; cout.setf(ios::showpoint ); cout.precision( 2 ); cout.setf(ios::fixed ); cout <<"Omkretsen på rektangeln är "<< omkrets<< endl; cout <<"Rektangeln har arean "; // sida*bredd är arean cout << sida*bredd<<endl; // observera att beräkningen görs före utströmsoperationen // * har högre prioritet än << 1.2.2 Övning: Skriv ett program som frågar efter hur gammal du är, och därefter berättar hur många dagar du levat. Dela upp lösningen i olika steg. Börja med att fundera på hur du vill att beräkningen ska gå till. Då du vet hur du vill att beräkningen ska fungera tänker du ut hur användardialogen (programkörningen med in och utmatningar) ska se ut. Därefter kan du börja skriva programmet genom att titta på tidigare exempel. Tänk särskilt på vilka variabler du behöver och vilka datatyper dessa variabler bör ha.