2016PrgC33vf

From rtgkomArkiv
Jump to: navigation, search

Aflevering af eksamensprojekt - Gkb 16:04, 1 May 2017 (CEST)[edit]

I Programmering C skal der afleveres et produkt og en journal, men et produkt og en rapport i Informationsteknologi B. Der skal aflevers tre steder, på Lectio, Fronter og på StudieWebbet.

For nærmere detaljer se wikiartiklen for InfB3334: http://www.rtgkom.dk/wiki/2016InfB33-34#Aflevering_af_afsluttende_projekt_-_Gkb_14:57.2C_1_May_2017_.28CEST.29

Eksamensprojekt, Gkb 12:11, 7 February 2017 (CET)[edit]

Vi starter eksamensprojektet i dag. Her er oplægget: http://rtgkom.dk/~gkb/pubdoc/2016_2017_PrgC34_oplaeg_til_eksamensprojekt_v01.pdf

Servicemeddelelse, Gkb 19:48, 9 December 2016 (CET)[edit]

Se servicemedelelsen på wikiartiklern for InfB, her: http://rtgkom.dk/wiki/2016InfB33-34#L.C3.A6ringsprogram_-_aflevering.2C_2016-12-09.2C_fredag.2C_servicemeddelelse.2C_Gkb_18:36.2C_9_December_2016_.28CET.29

Elever fra klasse 3.3 bemærk den sidste del af posteringen, den handler om jeres webshops og Teknologi A projektet som de indgår i. Har jeg beskrevet sammenhængen korrekt?

mvh Karl

2016-12-08, torsdag, 2. module i C3101, Gkb 10:04, 8 December 2016 (CET)[edit]

Projektarbejde i grupper fortsat.

Projektet "Læringsprogram" skal afleveres på i morgen, så udviklingsarbejdet skal afrundes og rapporten for InfB og journalen for PrgC skrives.

Afleveringen er lidt kompleks pga. at der skal trænes at lave både rapport og journal. Se nærmere i oplæggets afsnit om "Aflevering". Oplægget er her http://rtgkom.dk/~gkb/pubdoc/Laeringsprogram_2016_InfB_PrgC.pdf.

Registrering af projektgrupper i projektet Læringsprogram[edit]

Skriv kun bruernavnet som I har på vores webserver

  • GruppeXX: bruernavn01, brugernavn02, brugernavn03, brugernavn04 osv
  • Gruppe01: gustavagss14
  • Gruppe02: frejahk14
  • Gruppe03: ulriksl14, thomaslb14, mathiasfj14, frederikbm14
  • Gruppe04: madsmf14, nicklastt14, nicolaifba14
  • Gruppe05: lukashp14, alexanderss14, benjaminws14, antonbd14
  • Gruppe06: nicholasbl14, madsbc14, teisma14
  • Gruppe07: andersrs14, casperf14, lassewj14
  • Gruppe08: emilosn14, delanka14, frederiklb14, caspervo14
  • Gruppe09: christianlp14
  • Gruppe10: jonassp14
  • Gruppe11: patrickebj14, jonasch14
  • Gruppe12: stefanskh14
  • Gruppe13: asbjoernhba13
  • Gruppe14: kennetheh13

2016-11-02, onsdag, 3. modul i C3101, Gkb 13:12, 2 November 2016 (CET)[edit]

Eleverne fra 3.4 skal i dag arbejde med følgende:

  1. Uploade og præsentere rapporten for projektet Numeriske metoder. Der er oprettet en mappe i jeres html mappe med navnet numeriske_metoder. Lav et eller flere skærmbilleder og skriv en kort præsentation (max ca. 100 ord) af projektet i en HTML fil med navnet index.html og link til den fra din opgaveoversigt. Upload også rapporten til mappen og link til den fra præsentationen i HTML filen. Bemærk at den præsentation jeg taler om her, er altså HTML filen! Brug IMG elementer til at inkludere skærmbillederne.
  2. Komponer med kodning, programmering af musik. Vi fortsætter lidt afprøvningen af miniAudicle og så tester vi Sonic Pi. Brug begge systemer til at lave en wav fil på ca. 30 sekunder. Brug gerne de scripts som følger med systemerne og lav dine egen modifikationer eller tilføjelser. Installer og afprøv de to følgende systemer som begge kan bruges til at generere lyde med programmering.
    1. miniAudicle fra Princeton University, download her http://audicle.cs.princeton.edu/mini/, så for du både programmeringssproget Chuck, http://chuck.cs.princeton.edu/release/, og udviklingsmiljøet miniAudicle på en gang. Her er dokumentation http://chuck.cs.princeton.edu/doc/.
    2. Sonic Pi fra http://sonic-pi.net/

Eleverne fra 3.3. skal arbejde med installering af webshop systemet Prestashop. Alle har vistnok nu installeret Ubuntu 16.04 LTS Server på sine servere og nu skal selve webshop systemet installeres. I går aktiverede Óli 'port forwarding for alle jeres servere. De kan nu nås udefra med URL på formen http://rtgkom.dk:51 til 59, - vistnok?

2016-09-22, torsdag, 2. modul i C3101 og C3104, Gkb 10:22, 22 September 2016 (CEST)[edit]

Vi skal afslutte legen med den hurtige prototype til et program som løser 2. grads ligninger i dag. I næste uge begynder projektforløb for både eleverne fra stamklasse 3.3 og 3.4.


Se på referatet fra sidste modul for at få et hurtigt overblik over kravene og tips til en løsning af opgaven.

2016-09-19, mandag, 2. modul i C3101, Referat af modulet, Gkb 08:54, 22 September 2016 (CEST)[edit]

Jeg tog først fejl og troede vi havde InfB og satte klassen i gang med fortsat arbejde med øvelsen Eftersyn på StudieWeb. Efter ca 5 min blev jeg klar over det og skiftede fokus til opgaven om en hurtig prototype med Turtle modulet til løsning af 2. gradsligning vha. Python og Turtle modulet, som vi begyndte på onsdag den 14. september. Her et et link til formuleringen af opgaven: http://rtgkom.dk/wiki/2016PrgC33vf#Dagens_opgave_-_hurtig_prototype_med_Turtle_modulet, og den gengives her:

Opgaven er at lave en hurtig prototype til et program som løser en 2. gradsligning. I skal bruge Python og Turtle modulet.

  • Indstastning af konstanterne kan ske på kommandoprompten i Python.
  • Programmet skal tegne et koordinatsystem og vise en del af parablen, gerne hvor rødderne ligger.
  • Rødderne skal angives med tekst i GUI'en.
  • Dokumenter med et eller flere skærmdumps og lidt tekst på jeres StudieWeb i mappen hurtig_prototype_med_turtle_modulet, som er oprettet i jeres html mappe.

Bemærk at det er ok at flere detaljer i programmet er ufærdige og ser mærkelige ud. F.eks. kan der være ekstra streger i koordinatsystemet, bare hvis det nogenlunde fremgår at der er en vis sammenhæng mellem grafen for parablen og koordinatsystemet.

Jeg lavede nu lidt demonstrationsundervisning på min computer og på projektoren. Prøv selv at afprøve det som beskrives i de følgende punkter.

  • Jeg demonstrerede på projektoren hvordan kodestumpen som jeg pastede i wiki'en onsdag i sidste uge kan bruges til at tegne flere parallelle streger.
  • Dernæst viste jeg en lidt forbedret version af denne kode og lagde den op i wiki'en.
  • Nu viste jeg hvordan for-sætningen i denne kode kan tilpasses til at tegne de lodrette streger i koordinatsystemet. Det handlede nærmest være om at skifte x og y ud med y og x i koden. Den eneste tilføjelse var at dreje skjoldpadden 90 grader til venstre.
  • Nu havde vi et koordinatsystem som vi kunne bestemme størrelsen på i pixels, samt afstanden mellem stregerne i pixels. Den samlede kode til tegning af både de vandrette og lodrette streger så nu sådan ud.

<source lang=Python>

  1. De vandrette linjer i koordinatsystemet tegnes her

t.penup() t.goto(xmin, ymin) #Vi begynder i nederste venstre hjoerne af vores koordinatsystem for y in range(ymin, ymax+1, dy): #+1 lagt til for at faa den sidste loop med

   t.goto(xmin, y)
   if y == 0:
       t.pensize(width=3)
   t.pendown()
   t.forward(width)
   t.pensize(width=1)
   t.penup()

t.left(90) t.goto(xmin, ymin) #Vi begynder i nederste venstre hjoerne af vores koordinatsystem for x in range(xmin, xmax+1, dx): #+1 lagt til for at faa den sidste loop med

   t.goto(x, ymin)
   if x == 0:
       t.pensize(width=3)
   t.pendown() 
   t.forward(width)
   t.pensize(width=1)
   t.penup()

</source>

  • Jeg brugte nu en for-sætning til at udregne funktionsværdierne for de samme værdier som jeg brugte til at besteme positionen for de lodrette streger. Så tegnede jeg streger mellem punkterne med turtle.goto(x, fx). Koden for denne del af programmet så sådan ud.

<source lang=Python>

  1. Grafen tegnes nu med flere korte streger

t.pendown() for x in range(xmin, xmax+1, dx): #+1 lagt til for at faa den sidste loop med

   fx = a*x**2 + b*x + c
   print(x, fx)
   t.goto(x,fx)

</source>

  • Vi havde nu en grov og upolered første version af et program som viste faktisk grafen for parablen, -altså hvis konstanterne vælges fornuftigt. Jeg afprøvede programmet med a=1, b=3 og b=2 og det gav følgende graf hvor man lige kan skimpte at der nok er en parabel i grafen.

http://rtgkom.dk/~gkb/billeder/hurtig_prototype_med_turtle_modulet_fig00_250x241.png

http://rtgkom.dk/~gkb/billeder/hurtig_prototype_med_turtle_modulet_fig01_320x200.png

F.eks. hvis a=0.1, b=3 og c=2 så får vi følgende resultat.

indsæt billed

2016-09-19, mandag, 2. modul i C3101, Gkb 10:54, 19 September 2016 (CEST)[edit]

Her følger en ny version af koden til at tegen de vandrette streger i koordinatsystemet. Det er blevet forbedret lidt i forhold til den gamle, men den kan fortsat forbedres.

<source lang=python>

  1. Tegning af koordinatsystemet starter her

t = turtle.Turtle() xmin, xmax, ymin, ymax = -100, 100, -100, 100 dx, dy = 10, 10 width=xmax-xmin hight=ymax-ymin print("width:", width) print("hight:", hight)

  1. De vandrette linjer i koordinatsystemet tegnes her

t.goto(xmin, ymin) #Vi begynder i overste venstre hjoerne af vores koordinatsystem for y in range(ymin, ymax+1, dy): #+1 lagt til for at faa den sidste loop med

   t.goto(xmin, y)
   if y == 0:
       t.pensize(width=3)
   t.pendown()
   t.forward(width)
   t.pensize(width=1)
   t.penup()

</source> Når du afprøver koden, så husk at importere turtle modulet.

2016-09-14, onsdag, 3. modul i C3101, Gkb 09:37, 14 September 2016 (CEST)[edit]

Jeg kan ikke komme i dag. Mette Frost Nielsen afløser mig og vejleder jer i dag.

Ok, så kom jeg alligevel. Gkb 12:24, 14 September 2016 (CEST)

Dagens opgave - hurtig prototype med Turtle modulet[edit]

Dagens opgave er at lave en hurtig prototype til et program som løser en 2. gradsligning. I skal bruge Python og Turtle modulet.

  • Indstastning af konstanterne kan ske på kommandoprompten i Python.
  • Programmet skal tegne et koordinatsystem og vise en del af parablen, gerne hvor rødderne ligger.
  • Rødderne skal angives med tekst i GUI'en.
  • Dokumenter med et eller flere skærmdumps og lidt tekst på jeres StudieWeb i mappen hurtig_prototype_med_turtle_modulet, som er oprettet i jeres html mappe.

Tips til løsning af opgaven[edit]

  • Med GUI så mener vi en grafisk brugerflade, sådan som automatisk bliver til når vi udfører en kommando som f.eks. turtle.forward(10).
  • Du kan tegne koordinatsystemet med en turtle som flere vandrette og lodrette streger. Løft blyanten op mens du flytter til startpunktet på den næste streg.
  • Du kan tegen parablens kurve med mange korte streger. Hvis du laver dem meget korte, så kan ingen se at grafen består af streger.
  • Du kan bruge input sætningen til at læse konstanterne a, b og c i Python terminalen.
  • Her følger Python kode til at finde rødderne. Afprøv den og brug gerne i dit program for hurtigt at komme videre.
   <source lang=python>
   import turtle, math
   turtle.home()
   
   a = input("a: ")
   b = input("b: ")
   c = input("c: ")
   
   print(type(a), type(b), type(c))
   print(a, b, c) 
   
   a = float(a)
   b = float(b)
   c = float(c)
   print(type(a), type(b), type(c)) #Bemærk at type nu er float!
   print(a, b, c) #og konstanterne udskrives nu med et decimalpunkt!
   
   d = b**2 - 4*a*c
   print("d = ", d)
   
   x1 = (-b + math.sqrt(d))/(2*a)
   x2 = (-b + math.sqrt(d))/(2*a)
   
   print("x1 = ", x1)
   print("x2 = ", x2)
   </source>
  • Og her kommer et lidt kode som viser hvordan vi kan bruge en for sætning til at tegen de vandrette linjer i koordinatsystemet. Afprøv denne kode, og prøv at tilpasse den til også at tegne de lodrette linjer i koordinatsystemet.
#Her proever vi at tegne koordinatsystemet

t = turtle.Turtle()

dx = 10
dy = 10
t.goto(-100, 100)
last_y = 100

for j in range(21):
    t.pendown()
    t.forward(200)
    t.penup()
    t.goto(-100, last_y - dy)
    last_y = last_y - dy

2016-09-05, mandag, 2. modul i C3104, Gkb 09:56, 5 September 2016 (CEST)[edit]

Vi startede med et plenummøde hvor vi diskuterede begreberne i kapitel 1, The way of the program.

Med afsæt i præsentationen af begreberne i kapitlet diskuterede blandt andet følgende emner:

  • Algoritmen til at løse en 2. gradsligning
  • Antal rødder for en 2. gradsligning. Altid to ifølge Algebraens hovedsætning, hvis konstanterne er reelle tal.
  • Komplekse tal, det komplekse talsystem, akserne Re og Im, og at i**2 = -1.
  • Python som værktøj til at udregne kvadratrod af negative tal.
  • Division med 0 og forsøg på at udregne kvadratrod af et negativt tal, som to eksempler på hvad kan skabe en runtime error.
  • Flowcharting, en teknik til at visualisere algoritmer med en tegning. Brug Dia, fra https://wiki.gnome.org/Apps/Dia
  • Mellemsprog for compilere for at reducere antalet af oversættelser.
  • Elementer i programmer: Statements og tokens, på dansk sætninger og unik sammenstelling af bogstaver og tal?
  • Statement vs. funktion, med afsæt i ændringen af print sætningen i Python 2 til en funktion i Python 3.


Online versionen af lærebogen er her: http://openbookproject.net/thinkcs/python/english3e/

Du kan finde en PDF version her: http://www.ict.ru.ac.za/Resources/cspw/thinkcspy3/

Eksempel på python requests program; Lukashp14 12:46, 31 August 2016 (CEST)[edit]

Python programmet kan identificere elevnumre et ciffer ad gangen ved hjælp af fronters søgefunktion.

import requests
import csv

cookies = {"wcid": "", "session_userkey": "", "__cfduid": ""}
headers = headers = {"User-Agent":"","Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8","Accept-Language":"en-US,en;q=0.5","Accept-Encoding":"gzip","DNT":"1","Referer":"https://fronter.com/rts/prjframe/members.phtml","Connection":"close","Upgrade-Insecure-Requests":"1","Content-Type":"application/x-www-form-urlencoded; charset=iso-8859-1;","Content-Length":"272"}

def passwordList():
	with open("first.txt") as FileObj:
		for lines in FileObj.read().split('\n'):
			for i in range(10):
				tryNumber(str(lines) + str(i))

def tryNumber(student_number):
	payload = {"fronter_request_token":"", "listing_start":"0", "order":"","do_action":"","sticky_action":"","source":"../prjframe/members.phtml","sendmail_members_searchparams":student_number,"sendmail_did_search_again":"1","sendmail_order":"","sendmail_listing_start":"1","sendmail_listing_leap":"100"}
	r = requests.post("https://fronter.com/rts/prjframe/members.phtml", data=payload, headers=headers, cookies=cookies)
	responseHTML = r.text
	print student_number
	if (responseHTML.find("Intet resultat") == -1):
		print "USERS FOUND"
		f = open('student_numbers2.csv', 'ab')
		w = csv.writer(f)
		w.writerow([student_number])
		f.close()
		return

passwordList()