Liten koll på vad som anses grundläggande.
När introducerar ni den ternära operatorn? Programmering A, B eller C (eller aldrig)?
Skrev den här med mina elever häromveckan, och det var svårt att ta in för de flesta i programmering A:
inturn = ( inturn === "cirkel" ) ? "kryss" : "cirkel" ;
Taggar:
Permalänk Svar från Lennart Rolandsson hos 19 April 2011 på 21.11 Det var en djuping
Jag var tvungen att slå upp det på nätet. Jag visste inte om du syftade på "===" eller ( ...) ? ...: ...;
Jag har aldrig tagit upp det i min undervisning. Jag tror att jag drog det en gång på eftergymnasial nivå (KY) då vi diskuterade kod och effektivitet. Eller så var det en gång då en elev som praktiseratde på ett stort telekomföretag och ville diskutera något som den inte förstod. Men även där var det ovanligt.
I princip har jag bara sett det i utbildningssammanhang på en kurs på KTH. Tror att det var B-nivå.
Är det vanligt i dynamiska språk? Är det något som kommer?
Permalänk Svar från Lars Gunther hos 19 April 2011 på 21.29 Det (den ternära operatorn) är i vart fall en vanlig struktur i PHP och delvis också i JavaScript.
(När den nästlas blir den väldigt rolig, men svårläst! Vad sägs om följande switch case-emulering... Som bör undvikas!)
foo = ( bar==1) ? "a" : (bar==2) ? "b" : (bar==3) ? "c" : "d";
Lägg märke till att parenteserna är onödiga och bara tillagda för att göra koden tydligare.
I JavaScript senare fallet används också en massa sådana här:
foo = bar || "default";
Uttrycket till höger utvärderas inte boolskt, utan om bar har ett "truthy" värde (oftast att objektet finns), så tilldelas det till foo, annars blir det "default".
I PHP 5.3 kan man skriva det så här:
foo = bar ?: "default";
Dvs. om bar är truthy, så är värdet underförstått mellan frågetecken och kolon. Mycket smidig lösning!
Permalänk Svar från Lennart Rolandsson hos 19 April 2011 på 23.11 Det verkar som det inte bara är minimalism som eftersträvas, då det möjliggör ett annorlunda sätt att uttrycka sig i kod, vilket i sin tur kan leda till smartare och mera elegant lösning.
Då jag undervisar i PHP brukar jag anv
$var .=$var eller $var+=$var som alternativ till andra mera utförliga skrivsätt liksom $var++ används helt naturligt i loopar mm, istället för $var = $var +1. Dock upplever jag som lärare att eleverna får lite problem. Dom köper konceptet och idéen med kortare skrivsätt, MEN de fattar inte riktigt hur ett annorluna skrivsätt skulle kunna mena samma sak.
Den abstraktionsnivå som man inför med symboler t.ex. += blir för eleverna ett nytt språk, som inte mappar direkt till den kunskap som de har sedan tidigare. Det där med foo=bar || "default" var nytt för mig, och jag kom att tänka på hur många gånger som elever INTE FÖRSTÅR vad som är skillnaden mellan
if ($svar = 1) och if ($svar == 1)
Det är också en symbolisk notation som har en djupare semantisk betydelse, där inte alltid elverna köper min förklaring, samtidigt som de accepterar varför det blir fel i koden.
Din switch-sats med nästlade operatorer var utmanande. Men i klassrummet skulle det vara riktigt intressant att se vad eleverna tänker. Vad blir poängen för dem? Blir det bara de elever som förstod $var==1 ? "hej": "vaddå"; som kan gå vidare eller kan syntaxen förstås även av de andra som inte riktigt accepterat tenära operatorer?
Minimalism är intressant, men jag tror inte det är vackert för den som inte förstår semantiken. Vad tror du? Kan det bli meningsfullt ur ett praktiskt perspektiv?
Permalänk Svar från Lars Gunther hos 20 April 2011 på 23.51 Såg den här nyss som bland annat visar på skillnader och likheter mellan logiska kontroller i C# och JavaScript. Titta på en film. Det kommer efter ca 5 minuter.
Permalänk Svar från Birger Eriksson hos 24 April 2011 på 11.25 Jag har med den i Programmering A (c++), men endast som "frivillig", vilket gör att en del intresserade elever tar den till sig med hull och hår. Personligen tycker jag att den har både fördelar och nackdelar. Den stämmer väl in med programmerares vilja att minska ner och förkorta , men stämmer dåligt med viljan att vara tydlig och öka läsbarheten i kod. Jämför själv:
inturn blir, om inturn är cirkel, kryss, annars cirkel
Om inturn är cirkel, blir inturn kryss, annars cirkel
Dela! är en mötesplats för alla som bryr sig om utbildning och lärande.
Tilltalas du av idén - då är du välkommen att bli medlem.
I denna stund är vi 3004 medlemmar i Dela! Medlemmarna skapar en stor mångfald. Här finns förskolelärare, grundskolelärare, gymnasielärare, lärarstuderande, IT-pedagoger, bibliotekarier, museipedagoger, universitetslärare, skolledare, forskare, politiker, m.fl.
Alla frågor, idéer och erfarenheter ni vill Dela! är välkomna!
/Administratörerna.
Tillagd av Simon Hansell 2 kommentarer 0 Gillar
Tillagd av Simon Hansell 0 kommentarer 0 Gillar
© 2013 Created by Niklas Karlsson.
Drivs med tekniken bakom
