Programmeringsuppgifter 1



Relevanta dokument
Tentaupplägg denna gång

Programmeringsteknik med C och Matlab

Tentaupplägg denna gång

Laboration 2: Ett kommunikationssystem

Chapter 3: Using Classes and Objects

a), c), e) och g) är olikheter. Av dem har c) och g) sanningsvärdet 1.

Inlämningsuppgift 4 NUM131

Föreläsning 4: Poster

Lösningar till tentauppgifterna sätts ut på kurssidan på nätet idag kl 19. Omtentamen i Programmering C, 5p, fristående, kväll,

Uppgift 1 (Oläsliga krypterade meddelanden)

Problem: BOW Bowling. Regler för Bowling. swedish. BOI 2015, dag 1. Tillgängligt minne: 256 MB

Programmering A C# VT Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson

DE FYRA RÄKNESÄTTEN (SID. 11) MA1C: AVRUNDNING

RödGrön-spelet Av: Jonas Hall. Högstadiet. Tid: minuter beroende på variant Material: TI-82/83/84 samt tärningar

Datorlära 3 Octave Workspace ovh mijlö Skriva text på skärmen Värdesiffror Variabler och typer Strängar Makro Vektorer

Objektorienterad programmering D2

Facit till Några extra uppgifter inför tentan Matematik Baskurs. x 2 x

Föreläsning 6: Introduktion av listor

Sidor i boken , , 3, 5, 7, 11,13,17 19, 23. Ett andragradspolynom Ett tiogradspolynom Ett tredjegradspolynom

Operatorer Tilldelning Kodblock { } if satsen Logiska uttryck Att programmera

Användarhandledning Version 1.2

Tentamen i. för D1 m fl, även distanskursen. fredag 13 januari 2012

Att använda pekare i. C-kod

8-4 Ekvationer. Namn:..

Javisst! Uttrycken kan bli komplicerade, och för att få lite överblick över det hela så gör vi det så enkelt som möjligt för oss.

Matematisk Modellering

Provivus tips om KONCENTRATION - VAD PEDAGOGEN KAN GÖRA

Senaste revideringen av kapitlet gjordes , efter att ett fel upptäckts.

Föreläsning 11. Giriga algoritmer

Kurvlängd och geometri på en sfärisk yta

Laboration: Att inhägna ett rektangulärt område

Björn Abelli Programmeringens grunder med exempel i C#

Lösningar till uppgifterna sätts ut på kurssidan på nätet idag kl Omtentamen i Programmering C, 5p, A1, D1, E1, Fri, Pr1, Te/Ek1,

Föreläsning 3.1: Datastrukturer, en översikt

Datorsystem Laboration 2: Minnesmappade bussar

Textsträngar från/till skärm eller fil

För att använda sifferkrypto använder man en rektangel om 5 gånger 6 bokstäver.

C++ Slumptalsfunktioner + switch-satsen

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

8-1 Formler och uttryck. Namn:.

Krypteringsprogrammet Kryptogamen

Matematik 1 Digitala övningar med TI-82 Stats, TI-84 Plus och TI-Nspire CAS

kl Tentaupplägg

Föreläsning 1 & 2 INTRODUKTION

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Övning 6. Komprimering, kryptering, dokumentering & testning

Repetitionsuppgifter i Matematik inför Basår. Matematiska institutionen Linköpings universitet 2014

Lokala kursplaner i Matematik Fårösunds skolområde reviderad 2005 Lokala mål Arbetssätt Underlag för bedömning

Lektionsanteckningar 2: Matematikrepetition, tabeller och diagram

TAIU07 Matematiska beräkningar med Matlab

Övningsuppgifter till föreläsning 2 Variabler och uttryck

FÖRELÄSNING 1 ANALYS MN1 DISTANS HT06

2. Komma igång Skapa grupper och elever Skriv också ut sidan 13 så att eleverna har en snabbguide till programmet.

Prov kapitel FACIT Version 1

KREATIVA BÖNESÄTT. en praktisk hjälp till dig som är ledare! Initiativtagare till materialet: Maria Melin

Ickelinjära ekvationer

Begrepp :: Determinanten

BEDÖMNINGSSTÖD. till TUMMEN UPP! matte inför betygssättningen i årskurs 6

Tentamen OOP

INDUKTION OCH DEDUKTION

Medelvärde och Median

Lathund, till Photo Story, för skräckslagna lärare

Sockets: server. with Ada.Command_Line; use Ada.Command_Line; with Ada.Exceptions; use Ada.Exceptions; with Ada.Text_IO; use Ada.

Gaussiska primtal. Christer Kiselman. Institut Mittag-Leffler & Uppsala universitet

Manus: Tredje bildspelet handlar om kroppen och rörelse. Alla vet säkert att det är bra för våra kroppar att få röra på sig.

Boken?!?! Vad är ett program? Kompilerande-Interpreterande Programmeringsmiljö Hello World! Att programmera och ett enkelt program Variabler printf

Dataprojekt. Nanovetenskapliga tankeverktyg. January 18, 2008

Kompletterande lösningsförslag och ledningar, Matematik 3000 kurs A, kapitel 6

KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: 8-13, den 18 februari 2012

Introduktion till PHP

Grupparbete L ÄR ARHANDLEDNING TRO, HOPP & KÄRLEK. Sjömanstatueringar.

LULEÅ TEKNISKA UNIVERSITET Ämneskod S0006M Institutionen för matematik Datum Skrivtid

MÄSSHANDBOK ENTREPRENÖRSKAP PÅ RIKTIGT 2016 KRONOBERG

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten Nu till dagens ämne: Vi rekapitulerar det första problemet ur ProblemI:

19. Skriva ut statistik

OBS - ranking NYTT RANKINGSYSTEM. Jan-Erik Thomasson INNEHÅLL

ClaroRead Plus Mac Manual. Artikel.nr

Konkretisering av kunskapskraven i matematik år 7-9 (Lgr11)

Fortsättningskurs i programmering F 2. Algoritmer i Programutveckling Hugo Quisbert Problemexempel 1

Processidentifiering och Polplacerad Reglering

Funktioner och grafritning i Matlab

Redovisning av inlämningsuppgifter

Systemkonstruktion SERIEKOMMUNIKATION

Grundläggande programmering med C# 7,5 högskolepoäng

Användbarhet i vardag och praktik. Reflektioner nedtecknade av Sten Sunnergren. Med tillstånd av fam Sunnergren

Handicom. Symbol for Windows. Blisseditor. Version 3.4

NMCC Sigma 8. Täby Friskola 8 Spets

Tips och tricks 1 Cadcorp SIS

TATA42: Föreläsning 10 Serier ( generaliserade summor )

Övningsuppgifter 725G82

Extramaterial till Matematik Y

1. Skriv = eller i den tomma rutan, så att det stämmer. Motivera ditt val av tecken.

Statistikens grunder 1 och 2, GN, 15 hp, deltid, kvällskurs

Laborationer i kursmomentet Datoranvändning E1. Laboration nr 5: Mer om FrameMaker

Översikt. Installation av EasyPHP 1. Ladda ner från Jag använder Release Installera EasyPHP.

Problem att fundera över

DATORTEKNIK. Tangentbord, knappsatser och deras avkodning

Uttryck och villkor. Föreläsning 2

Lösningsfokuserat arbetssätt med manualstyrd föräldrautbildning. Utbildning för föräldrar som har mycket konflikter med sina barn i åldern 3-11 år

Transkript:

Programmeringsuppgifter 1 Redovisning: Ni demo-kör och förklarar för handledaren några av de program ni gjort. Ni behöver inte hinna allt, redovisa så långt ni kommit. Om ni hinner mer kan ni alltid redovisa igen (före sista redovisningsdatum se nedan). Maxpoäng 14p. Sista datum: Ons 11/11. 1 Teckenvis IO Titta igenom de programexemplen i IO kapitlet i kompendiet innan du börjar (..ännu bättre, läs hemma i lugn och ro). 1. Gör ett program som ersätter ' ' (mellanslag) och '\t' (tab) med tecknet '_ 'repektive '*'. Exempel; Intext: En tab och två mellanslag och en tab till. Uttext: En*tab_och två_mellanslag_och_en*tab_till. Döp programlen (källkoden) till uppg1.1.c eller liknande så att ni direkt kan se vilken uppgift det rör sig om (spara på rätt plats så att ni senare hittar, kolla!). 2. Gör ett program som skriver ut ASCII-tabellen, se Wikipedia. Styrtecknen (ASCII < 32) kan du hoppa över. 3. Skapa ett (mycket enkelt) krypterings program. Programmet bygger på att vi skiftar tecken i ASCII-tabellen. Nedan har man skiftat A till N, B till O, o.s.v, alltså 13 steg i tabellen (bara stora bokstäver visas men samma gäller för små). Order HELLO blir URYYB efter krypteringen se vidare Wikipedia. 1 Produced with Lyx, the open source wordprocessor

Låt programmet läsa tecken för tecken och kryptera den enligt ovan. Användaren skriver in texten och programmet skriver ut den krypterade texten. Vid EOF avslutas programmet (d.v.s. om användaren bara trycker Ctrl d, och inget annat). Vi skall undvika konstanter i koden. Använd ett makro och döp värdet 13 till KEY istället. Använd KEY i koden istället för 13. Exempel på körning;./a.out HELLO (+enter) URYYB Banana (+enter) Onanan (Ctrl d) $ (Program avlutat) Genom att omdirigera kan man kryptera en l. $./a.out < plain.txt > chipher.txt Skapa en enkel textl och skriv något i den. Kör programmet. Titta i utlen, fungerar? 4. Gör ett program som dekrypterar ler som krypterats med föregående program. Testa att kryptera med det förra programmet och dekryptera med detta. 2 Aritmetik och formaterad IO Här behövs operatorer för beräkning samt scanf och printf för att läsa/skriva tal plus eventuellt det vi tidigare använt. 1. Skriv ett program som läser in 3 heltal, beräknar medelvärdet och slutligen skriver ut värdet. Se upp,...vilka fall bör du testa? 2. Skriv ett program som använder formlerna nedan för att beräkna banhöjd och kastlängd, utan luftmotstånd, givet utgångshastighet och kastvinkel (programmet frågar efter hastighet och vinkel). Använd funktioner ur math.h (#include<math.h>). Dessa funktioner kopplas inte automatiskt med, som t.ex funktionerna i stdio.h, utan man måste speciellt ange att detta. Detta görs genom att ge aggan -l och argumentet m då man kompilerar (skriv -lm sist på raden, betyder link math). Sin-funktionen skall ha argumentet i radianer. h = v2 sin 2 α 2 g d = v2 sin 2α g h = kasthöjd i m, d = kastlängd i m, v = hastighet i m/s, g = tyngdacceleration (9.81) i m/sek2, α= kastvinkel i grader. För tester se http://hyperphysics.phyastr.gsu.edu/ hbase/traj.html. Några exempel på värden (ev avrundningsfel kan förekomma) ; 2 Produced with Lyx, the open source wordprocessor

v α h d 1 45 0.0255 0.1020 10 45 2.5510 10.2041 10 60 3.8265 8.8370 3. Skriv ett program som läser in tre tal och därefter skriver ut det största. Igen,...vilka fall skall testas? 4. Skriv ett program som låter användaren summera ett godtyckligt antal positiva heltal (<1000000). När ett negativt tal anges skriver programmet ut summan av alla inmatade tal förutom det sista, därefter avslutas programmet. 3 En räknare Varje version bygger på den föregående. Gör precis så mycket som anges vid varje version spara undan och börja på nästa. 1. Utveckla en enkel kalkylator (som bara kan göra en beräkning i taget, kedjade beräkningar t.ex. 1 + 2 + 3 går inte). Version Specikation 1.0 Fråga efter två heltal, läsa in och addera dessa, skriv ut resultatet som t.ex. 4 + 3 = 7. Programmet av-slutas. 2.0 Lägg till att programmet frågar efter räknesätt (ett tecken +,-,*,/) och därefter två tal. Modiera så att programmet stöder reella tal (oat räcker). Programmet skall visa resultatet på formen; 1.200000 * 2.300000 = 2.760000 (om man valt multiplikation). Se upp med att tömma inströmmen! 3.0 Gör så att man kan utföra era enkla beräkningar i följd (inte kedjade beräkningar). Programmet avslutas med Ctrl c. 3.1 Stämmer designen? Inläsning, bearbetning, utmatning inte blanda beräkning och IO? Bra namn på allt? Kan man ersätta if med else if? Konstanter i koden? Behövs kommentarer? 2p 4 Gissa talet Vi gör en egen version av världens tråkigaste spel; Alltså: Datorn slumpar ett tal och användaren försöker gissa vilket talet är. 3 Produced with Lyx, the open source wordprocessor

Version Specikation 1.0 Datorn slumpar ett tal mellan 1 och 100. Användaren gissar vilket. Om rätt så skrivs Rätt ut annars Fel. Programmet avslutas. 2.0 Lägg till så att användaren kan gissa hur många gånger som helst. Vid rätt gissning avslutas programmet (annars Ctrl c för att stoppa programmet). 2.1 Lägg till så att användaren kan avbryta genom att ange ett negativt tal. 3.0 Lägg till så att programmet säger om det gissade talet var för stort eller för litet. 3.1 Lägg till så att programmet håller reda på antal gissningar. Antalet skrivs ut då programmet avslutas. 3.2 Stämmer designen? Bra namn på allt? Kan man ersätta if med else if? Konstanter i koden? Behövs kommentarer? 5 Ett övningsprogram 1. Utveckla ett övningsprogram för multiplikationstabeller. För slumptal måsta man inkludera time.h. Version Specikation 1.0 Slumpa två heltal mellan 1 och 9. Skriv ut 3 * 5 = (om 3 och 5 slumpades). Läs in svar från användaren. Om rätt svar, skriv ut Rätt annars Fel. Programmet avslutas. 2.0 Gör så att programmet kör godtyckligt antal frågot i följd. Programmet avslutas med Ctrl c 3.0 Gör så att programmet avbryts då användaren svarar -1. 4.0 Lägg till statistik som skrivs ut då programmet avslutas t.ex. Du hade 6 rätt av 8. Hur många variabler behövs? 5.0 Gör så att användaren kan välja tabell 1-9 (bara ett tal slumpas i så fall). Om 0 anges som tabell slumpas båda talen på samma sätt som tidigare. 5.1 Stämmer designen. Bra namn på allt? Konstanter i koden? If eller else if? Stil! 6 Frivilliga uppgifter 6.1 Lättare 1. Gör program som använder enkla formler. Programmen frågar efter indata och beräknar utdata m.h.a. formeln. Några exempel; 2p 2p 4 Produced with Lyx, the open source wordprocessor

a) Area eller volym för olika gurer/kroppar. b) Enkla elektro-formler, U= RI, o.s.v. 2. Gör program som byter ut något tecken i en inström mot något annat. Gör t.ex. så att man kan ange vilket tecken som skall bytas ut (och vad som skall ersätta). 3. Gör program som eliminerar följder av tecken t.ex. era mellanslag ersätt med ett o.s.v. 6.2 Svårare Övning för dig som siktar på högre betyg. Rekommenderas för DAI. 1. Konstruera ett C program som beräknar påskdagen givet ett årtal i intervallet 1900-2099. Använd metoden nedan. Inga felkontroller behövs! Tabellen visar några datum; År Datum för påskdag 2002 31:a mars 2003 20:e april 2004 11:e april Den berömde tyske matematikern C. F. Gauss konstruerade en metod för att räkna ut hur påskdagen infaller olika år (fungerar mellan 1900-2099). Metoden lyder; Beräkna följande (givet årtal): A = årtal mod 19 ( mod = modulo = resten då årtal divideras med 19) B = årtal mod 4 C = årtal mod 7 S = 19 A + 24 D = S mod 30 T = 2 B + 4 C + 6 D + 5 E = T mod 7 datum = 22 + D + E Om datum är mindre än 32 infaller påskdagen på detta datum i mars. Annars sätts datum = D+E-9 och påskdagen inträar då detta datum i april, fast med två undantag. Om datum = 26 förläggs påskdagen den 19 april. Om datum = 25 samtidigt som A = 16 och D = 28 rar vi den 18 april istället. 5 Produced with Lyx, the open source wordprocessor

2. Undersök kommandot nl. Skriv nl i terminalen. Skriv lite text och tryck return, vad händer. Generera EOF. Vad händer? Omdirigera nl att läsa från någon l d.v.s. $ nl < myle. Vad händer? Ibland verkar nl numrera tomma rader ibland inte? Fundera! Skriv en egen version av nl. TIPS: Vi vet inte hur långa raderna är bara att de avslutas med '\n'. 3. Run length encoding (RLE) är en enkel metod att komprimera data. Den fungerar på så sätt att man helt enkelt räknar hur många likadana tecken i följd men har och sedan ersätter följden av tecknen med antalet och ett tecken. Exempel; aaaaaaaaaaaabbbbbbbb qwweeerrrrtttyyu blir 12a8b blir 1q2w3e4r3t2y1u Tips: Använd ungetc. Ni skall inte behöva använda fält (arrayer). 4. Använd gfx-bibioteket (kurssidan) och gör ett program som ritar ut något (modern konst). Biblioteket består av 2-ler, gfx.h och gfx_lib.c (det nns dessutom några demo-program). Läs i lerna hur man använder biblioteket. Använd loopar och slumptal för att få så mycket som möjlig gjort med så lite kod som möjligt. 5. Gör ett litet dataspel (lämplig typ; arkad) m.h.a. gfx biblioteket. IO är lite problemetisk, man får mata in via terminalen, se demo. Om man vill kan man bygga på gfx-biblioteket med händelsehantering se t.ex. http://users.actcom.co.il/~choo/lupg/ tutorials/xlib-programming/ xlib-programming.html 6 Produced with Lyx, the open source wordprocessor