Listen-Tester

Hier könnt Ihr Eure Funktionen zu den Aufgabe 1a bis d testen

Achtung: Hier müsst Ihr nur eine Funktion und den oder die Rückgabewerte definieren. Eine Ein- oder Ausgabe ist nicht nötig (und würde eh zu falschen Testergebnissen führen.) 

Schreibe eine Funktion, die

Coding Exercise: 1a) Liste mit natürlichen Zahlen

eine natürliche Zahl n entgegen nimmt und eine Liste mit den natürlichen Zahlen von 1 bis n zurück gibt

Beispiele

  • natListe(1) gibt [1] zurück
  • natListe(3) gibt [1, 2, 3] zurück

Tipp

Coding Exercise: 1b) Listenelemente aufsummieren

eine Liste von Integerwerten erwartet und ihre Summe zurück gibt

Beispiele

  • Summe([1, 2, 3]) ergäbe dann 6

Tipp

Enter testing statements like print(myfunction("test argument")) below.

Coding Exercise: 1c) Großbuchstaben

eine Liste von Buchstaben erwartet und daraus eine neue Liste erstellt, in der alle Buchstaben groß geschrieben werden.
Dazu hilfreich: die Methode capitalize() macht aus einem Buchstaben einen Großbuchstaben:

print("test".capitalize()) gibt "Test" aus

Beispiele

  • alles_gross(["t", "e", "s", "t"]) ergäbe dann: ["T", "E", "S", "T"]

Tipp

Coding Exercise: 1d) kumulierte Summe

eine Liste L von Integerwerten erwartet und eine neue Liste K mit der kumulierten Summe erstellt. Das i-te Element soll also die Summe der ersten i+1 Elemente der ursprünglichen Liste erhalten. Zurückgegeben wird die neue Liste K

Beispiel

  • kumSum([1, 2, 3]) gäbe dann [1, 3, 6] zurück.

Tipp 1 Tipp 2 Tipp 3

Listen

Listen näher kennenlernen

Listenelemente adressieren

Example: Slices von Listen

Notiere Dir im Heft, welcher Bereich der Liste angesprochen wird.

Example: Listen ähneln Strings, können aber geändert werden (Strings nicht!):

Notiere Dir im Heft, was die Befehle in den einzelnen Zeilen bewirken

Example: Durchlaufen von Listen

Notiere Dir im Heft, was die Befehle in den einzelnen Zeilen bewirken

Übung

Multiple Choice Exercise: Endlosschleife

Für welche Belegung von x läuft die Schleife unten endlos?

def geheim(x):
a = [0, 4, 0, 3, 2]
while x > 0:
x = a[x]
return "Fertig!"
Korrekt! a[3]=3 (das erste Element hat ja den Index 0) und dabei bleibt es dann auch.

Schleifen

Ein paar nützliche Übungen zu Schleifen

Achtung: Hier müsst Ihr nur eine Funktion und den oder die Rückgabewerte definieren. Eine Ein- oder Ausgabe ist (bis auf eine Ausnahme) nicht nötig (und würde eh zu falschen Testergebnissen führen.) 

for-Schleifen

Coding Exercise: Summe der Kuben

Schreibe eine Funktion kubikSumme(n), die die Summe der Kuben (dritten Potenzen) aller Zahlen von 1 bis n zurückgibt, also 13+23+33+... Arbeite mit einer for-Schleife.

Beispiele

  • kubikSumme(1) gibt 1 zurück
  • kubikSumme(3) gibt 36 zurück

Tipp

Coding Exercise: Fakultät

Schreibe eine Funktion fak(n), die die Fakultät n! von einer natürlichen Zahl n zurückgibt.
Dabei ist n!=1*2*3*...*n für n>=1 und 0!=1. Arbeite mit einer for-Schleife.

Beispiele

  • fak(3) gibt 6 zurück
  • fak(5) gibt 60 zurück

Tipp

Enter testing statements like print(myfunction("test argument")) below.

while-Schleifen

Man kann auch mit einer while-Schleife zählen, muss sich aber selbst um die Zählvariable i kümmern:

Example

Zählt von 0 bis 4, wie for i in range(5):...

Coding Exercise: Quadratzahlen

Schreibe eine Funktion quadrate(n), die alle Quadratzahlen ausgibt (Du brauchst also eine print-Anweisung), die kleiner oder gleich n sind. Arbeite mit einer while-Schleife.

Beispiele

  • quadrate(7) gibt
    1
    4

    zurück
  • quadrate(25) gibt
    1
    4
    9
    16
    25

    zurück

Tipp

Coding Exercise: kleinster Teiler

Schreibe eine Funktion minTeiler(n), die den kleinsten Teiler von n ausgibt, der größer als 1 ist.
n soll dabei mindestens 2 sein. Arbeite mit einer while-Schleife.

Beispiel

  • minTeiler(42) gibt 3 zurück.

Tipp

Coding Exercise: Größte Zweierpotenz

Schreibe eine Funktion maxZweier(n), die die größte Zweierpotenz 2k bestimmt, die kleiner oder gleich n ist. Der Rückgabewert soll k sein. Arbeite mit einer while-Schleife.

Beispiel

  • maxZweier(42) gibt 5 zurück.

Tipp

Bedingungen

Ein paar kleinere Übungen zur bedingten Verzweigung

Achtung: Hier müsst Ihr nur eine Funktion und den oder die Rückgabewerte definieren. Eine Ein- oder Ausgabe ist nicht nötig (und würde eh zu falschen Testergebnissen führen.) 

Coding Exercise: gerade oder ungerade?
Schreibe eine Funktion istGerade(n), die prüft, ob die Integervariable n gerade oder ungerade ist. Ist n gerade, soll sie True ausgeben, sonst False.

Beispiele

  • istGerade(5) gibt False zurück
  • istGerade(0) gibt True zurück

Tipp

Im Folgenden sollst Du Dir auch Gedanken über die Implementierung verschiedener Funktionen machen, die es in Python eventuell schon gibt. Diese Funktionen, z.B. min() und max(), darfst Du aber nicht benutzen. :-P

Coding Exercise: Minimum
Schreibe eine Funktion Minimum(a, b), die die kleinere der beiden Zahlen a und b zurückgibt.

In der Mathematik gibt es neben der Betragsfunktion (in Python: abs() auch die Signum-Funktion, die das Vorzeichen einer Zahl x zurück gibt.
Es gilt: x = Signum(x) * Betrag(x)

Coding Exercise: Vorzeichen
Schreibe eine Funktion vorzeichen(a), die -1 zurück gibt, wenn a negativ ist, 1, wenn a positiv ist, und 0 sonst, wenn a Null ist.
Arbeite mit if, elif und else.

Mit der folgenden Information habe ich vor über 20 Jahren eine Flasche Sekt gewonnen, weil jemand dachte, 2000 sei kein Schaltjahr. :-) (1900 war ja tatsächlich keines.)

Coding Exercise: Schaltjahr?

Schreibe eine Funktion istSchaltjahr(Jahr), die prüft, ob die Integervariable Jahr ein Schaltjahr ist. Ist Jahr ein Schaltjahr, soll sie True zurückgeben, sonst False.

Jahr ist ein Schaltjahr

  • falls Jahr durch 400 teilbar ist, oder
  • falls Jahr durch 4 teilbar ist, aber nicht durch 100

Tipp

Coding Exercise: Lineare Gleichung

Schreibe eine Funktion loeseLG(a, b), die eine lineare Gleichung der Form ax=b löst, wobei a und b Integervariablen sind und a sowie b auch Null sein dürfen. Die Funktion soll entweder die Lösung der Gleichung ausgeben, oder 'keine', wenn die Gleichung keine Lösung hat, bzw. 'viele', wenn sie unendlich viele Lösungen hat..

Beispiele

  • loeseLG(0, 17) gibt 'keine' zurück.
  • loeseLG(2, 1) gibt 0.5 zurück.
  • loeseLG(0, 0) gibt 'viele' zurück.

19.01.2021

Programmierung

Programmierung ist die Algorithmierung eines Problems in ein Programm, d.h. in eine Notation, die von der konkreten Anlage, auf der das Problem behandelt werden soll, „verstanden“ wird.
Die Anlage kann das Programm als eine Anweisungsfolge interpretieren, die die Problemdaten verarbeitet.

Gegenstand der Algorithmierung ist die Erarbeitung der Programmstruktur im Rahmen der durch die Programmumgebung vorgegebenen Bedingungen.

Gegenstand der Codierung, auch Implementierung genannt, ist, eine Programmniederschrift zu schaffen, auf auf dem Computer abgearbeitet werden kann. 

(vgl. Duden Informatik SII: S. 245)

Beispiel eines Algorithmus

Der euklidische Algorithmus zur Ermittlung des größten gemeinsamen Teilers (ggT) zweier natürlicher Zahlen:

  • Teile die größere Zahl durch die kleinere Zahl
  • geht die Division ohne Rest auf, so ist der Divisor der ggT
  • geht die Division nicht auf, wiederholt man das Verfahren mit dem Rest als neuem Divisor, während der alte Divisor zum Dividenden wird
  • Ist der Rest 1, so sind die beiden Ausgangszahlen teilerfremd.

Beispiel: Suche den ggT von 544 und 391

544 : 391 = 1 Rest 153
391 : 153 = 2 Rest 85
153 : 85 = 1 Rest 68
85 : 68 = 1 Rest 17
68 : 17 = 4 Rest 0
Die Division geht auf, ggT(544; 391) = 17

Aufgaben

  1. Bestimme nun selbst den ggT(45; 34) auf Papier
  2. Schreibe ein Programm, das den obigen Algorithmus umsetzt, also als Eingabe zwei natürliche Zahlen erwartet und den ggT dieser beiden Zahlen ausgibt.
    Nutze für die Wiederholung eine  while-Schleife.

Coding Exercise: Euklid
Schreibe ein Programm, das den obigen Algorithmus umsetzt, also als Eingabe zwei natürliche Zahlen erwartet und den ggT dieser beiden Zahlen ausgibt. Nutze für die Wiederholung eine  while-Schleife. Tipp

P5.1b les algorithmes de constructions de liste

retourner une liste par ajout successifs

On veut retourner une liste (c'est à dire ranger ses éléments dans l'ordre inverse) et on va procéder par ajouter successifs (il existe d'autres façons de le faire).
L'algorithme est assez simple :

fonction retourner(lst) :
lstReverse = [ ]
tant que lst non vide :
retirer le dernier elem de lst et l'ajouter à la fin de lstReverse
fin de pour
renvoyer lstReverse
Coder ceci en python ne pose pas de grosse difficulté, mais il faut se souvenir de la méthode pop et de son usage….
Voici un code qui va te servir d'exemple pour l'exercice.

Rappel :
lst = [1,2,3]
a = lst.pop()
-> a=3 et maintenant lst=[1,2]
lst.pop() retire le dernier élément de la liste lst et renvoie sa valeur.
pyBox slug='5.1_reversePOP' solver="def reversePOP(lst: list ) -> list : lstR=[] while len(lst) > 0: e=lst.pop() lstR.append(e) return lstR lst=[3,1,6,7,2] print(reversePOP(lst)) " defaultcode="def reversePOP(lst: list ) -> list : # votre code ici lst=[3,1,6,7,2] print(reversePOP(lst)) " taboo="insert" title='reverse avec pop' ] [/pyBox]

Au lieu de append, on pourrait aussi utiliser une concaténation de liste : lstR = lstR + [val] donnera le même résultat, essaye les deux façons.
(attention : en réalité ces deux façon de procéder ne sont pas équivalentes. Elle donnent le même résultat et pour cette année nous n'entreront pas dans les détails sr la différence de traitement entre les deux)

On pourrait même ne rien ajouter et ne rien concaténer :

def reversePOP(lst: list ) -> list :
lstR=[0] * len(lst) # initialise une liste avec len(lst) 0
idx=0
while len(lst) > 0:
e=lst.pop()
lstR[idx]=e
idx+=1
return lstR
Et là encore, le résultat est le même mais les opérations réalisées ne sont pas les même en réalités. Et ici aussi nous n'entreront pas cette année dans les détails.

Toutefois nous aurions pu écrire aussi bien cet algorithme :

onction retourner(lst) :
lstReverse = [ ]
tant que lst non vide :
retirer le premier elem de lst et l'ajouter au début de lstReverse
fin de pour
renvoyer lstReverse
Tu pourras coder ce second algorithme en utilisant lst.pop(0) qui retire l'élément d'indice 0 et lstR.insert(0,val) qui insère val en tête de liste.

On pourrait aussi utiliser une concaténation de liste : lstR = [val] + lstR donnera le même résultat, essaye les deux façons, et surtout remarque bien :

ajouter en tête : lst.insert(0,val) ou lst=[val] + lst
ajouter en queue : lst.append(val) ou lst=lst+[val]
retirer en tête : val = lst.pop(0)
retirer en queue :val = lst.pop()
Rappel :
lst = [1,2,3]
lst.insert(0,7)
-> Maintenant lst vaut [7,1,2,3]
Coding Exercise: reverse avec insert

Complexité

Pouvez vous estimer la complexité de ces différents codes de retournement ? Sont ils tous équivalent ?

Trier les éléments

Vous aller programmer ici une fonction tri(lst) qui va trier une liste. L'algorithme utilisé, que nous reverrons plus tard dans une autre forme, est le suivant :

fonction triInsertion(lst) :
  listTriee=[]
  Tant que longueur(lst) > 0 :
    rechercher l'indice du min dans lst
    retirer cet élément (avec pop) et l'ajouter (en queue) dans listeTrie
  fin de tant que
  renvoyer listeTriee
(la fonction idxMin(list) est disponible dans cet exercice)
Coding Exercise

Dans ce code, que vous venez de faire, on n'a pas vraiment de curseurs (il y en a cependant un, caché dans la fonction idxMin que vous avez utilisé), d'accumulateur, ou de compteur. En effet ici on ne compte rien, on ne somme rien, et on ne localise rien.

L'ajout successif d'élément dans une liste est un autre outil indispensable que vous serez souvent amenés à utiliser.

Complexité

Estimons la complexité de cet algorithme expérimentalement avec time().

Example

En raison de limitations sur ce site, il n'est pas possible de travailler sur de très grandes listes. Néanmoins, ici, on a pris une séries de valeurs de N allant de 10 à 2560. A chaque fois on multiplie N par 2. Le temps de calcul évolue d'abord linéairement pour les petites valeurs de N mais rapidement on voit que quand N est multiplié par 2, le temps est multiplié par 4 (2² !)
La complexité semble donc plutôt proportionnelle à N² dans cet exemple.

Combien de fois est exécutée la boucle while ?
Combien d'opération sont executées dans cette boucle while ?

La réponse est que la boucle while est exécutée N fois, mais dans la boucle, on appelle idxMin. idxMin a une complexité en O(N), mais comme la liste lst est raccourcie au fur et a mesure, c'est un peu compliqué….

  • Au premier tour, idxMin cherche dans une liste de longueur N
  • A second tour dans une liste de longueur N-1
  • Au troisième tour, dans une liste de longueur N-2
  • etc… jusqu'au dernier tour, ou il ne reste qu'un élément.

si le temps de idxMin est N, alors le temps de tout les appels est :
1 + 2 + … + N = N(N+1)/2 = N² /2 + N/2

pour de grandes valeurs de N, N² >> N, la complexité sera proportionnelle à N². On parle ici de complexité quadratique que l'on note O(N²)

P5.1b premiers algorithmes exercices

sommes et moyenne des valeurs paires

Ecrire l'algorithme d'une fonction sommePaires(lst) qui renvoie la somme des valeurs paires d'une liste.

Multiple Choice Exercise
Dans sommesPaires vous aurez besoin d'un compteur ?
Correct!

Multiple Choice Exercise
Dans sommesPaires vous aurez besoin d'un curseur?
Correct!
Multiple Choice Exercise
Dans sommesPaires vous aurez besoin d'un accumulateur ?
Correct!

Ecrire un second algorithme pour moyPaires qui renvoie la moyenne des valeurs paires d'une liste.

Multiple Choice Exercise
Dans moyPaires vous aurez besoin d'un compteur ?
Correct!
Multiple Choice Exercise
Dans moyPaires vous aurez besoin d'un curseur?
Correct!
Multiple Choice Exercise
Dans moyPaires vous aurez besoin d'un accumulateur ?
Correct!
moyenne pondérée
N'oubliez pas que vous pouvez visualiser l'exécution de votre code pour vous aider à le mettre au point.
Coding Exercise: moyenne coefficientée
Ecrire une fonction moyPondee(notes , coefs) qui renvoie la moyenne coefficientée.

Short Answer Exercise
Combien y'a-t-il d'opération élémentaires avant la boucle ?
Correct!
Short Answer Exercise
Combien y'a-t-il d'opération élémentaires après la boucle (seulement dans la fonction) ?
Correct!
Short Answer Exercise
Combien y'a-t-il d'opération élémentaires en tout (en fonction du nombre N de notes) ?
Correct!
Short Answer Exercise
La complexité est elle linéaire ?
Correct!
un curseur délicat

Nous avons déjà traité la question de la recherche d'un caractère dans un texte. Nous allons ici traiter un problème assez similaire mais un peu plus délicat : chercher une chaine dans une autre. Pour plus de clarté, nous appellerons mot la chaine recherchée, et texte la chaine dans laquelle on effectue la recherche.

Commencez par regarder la vidéo ci-dessous pour comprendre le problème.

Ecrivez le pseudo code sur votre feuille et faites le valider :
Coding Exercise: reverse avec pop

P5.1b premiers algorithmes

Utiliser un compteur, un accumulateur, ou un curseur (le tryptique CAC)

Dans de nombreux cas, on doit :

  • compter le nombre d’occurrence d'une condition, dans ce cas, on utilisera un compteur
  • sommer (ou faire un produit) dans une boucle, dans ce cas, on utilisera un accumulateur
  • mémoriser la position d'un élément particulier, dans ce cas, on utilisera un curseur

Un compteur en action

Les compteurs sont des variables qu'on incrémente quand on trouve un éléments correspondant à un critère. Parfois il n'y a pas vraiment de critère, on compte simplement tout les éléments ou toutes les occurrences, mais la notion de comptage est fréquente en algorithmique. Nous avons déjà vu des utilisations de compteurs.

Multiples de 3

Avant de coder cette fonction, écrit le pseudocode de l'algo au brouillon
quand tu as écrit ton pseudo code, demande à ton professeur de le valider puis
recopie le sur le document papier puis implémente le ci-dessous.

Ecrire une fonction qui prend en argument une liste de nombres et renvoi le nombre de multiples de 3 dans cette liste

📌 Utiliser la syntaxe ne portant pas sur les indices pour parcourir la liste

Coding Exercise: Compte les multiples de 3
Ecrire la fonction compterMult3(lst). Une liste lst sera générée pour tester votre code.

Complexité

L'algorithme contient une boucle sur les éléments de la liste lst.

  • Avant la boucle on a 1 affection → 1 opération élémentaire
  • La boucle est exécutée N fois (nb d’élément dans la liste) et dans cette boucle il y a : 1 opération (%), un test, une addition et une affectation. → 4*N opérations élémentaires
  • Après la boucle il n'y a rien → 0 opération élémentaire

On a donc au total, 1+4N + 0 opérations élémentaires dans ce code.
<br>
4N+1 est une fonction linéaire, on dit qu'on a une complexité linéaire et on note O(N)

Pour appréhender cette complexité "proportionnelle à N" on va mesurer le temps mis par l'algorithme pour donner la réponse
on va mesurer le temps mis pour calculer la moyenne d'une liste de N nombres avec N=10 puis 100 puis 1000 etc … jusqu'à 1 million.
A chaque fois on multiplie N par 10 et on obtient un temps t (on à par exemple le t100 pour n=100, et le t1000 pour N=100 ) et on affichera t1000 / t100 pour voir le rapport entre le deux.
pour le 1er calcul on ne peux pas comparer au t précédent, on le divisera par 1.

Example
Vérifions la complexité de compterMult3()

On observe donc que lorsque le nombre N d'éléments de la liste est multiplié 10, le temps de calcul est multiplié aussi par un facteur du même ordre de grandeur. Nous observons donc encore bien ici une complexité linéaire.

Un accumulateur en action

Pour sommer ou multiplier (ou soustraire ou diviser) dans une boucle, on utilise une variable accumulateur. Nous avons déjà vu des utilisations d'accumulateurs.

Calcul de la moyenne

Avant de coder cette fonction, écrit le pseudocode de l'algo au brouillon
quand tu as écrit ton pseudo code, demande à ton professeur de le valider puis
recopie le sur le document papier puis implémente le ci-dessous.

Coding Exercise: Calcul de moyenne
Ecrire la fonction somme(lst). Une liste lst sera générée pour exécuter votre code.

Complexité

L'algorithme contient une boucle sur les éléments de la liste lst.

  • Avant la boucle on a 1 affection → 1 opération élémentaire
  • La boucle est exécutée N fois (longueur de la liste) et dans cette boucle il y a une addition et une affectation. → 2*N opérations élémentaires
  • Après la boucle il n'y a rien → 0 opération élémentaire

On a donc au total, 1+2N + 0 opérations élémentaires dans ce code.
<br>
2N+1 est une fonction linéaire, la complexité est linéaire soit O(N)

Comme pour les multiples de 3 précédemment évaluons la complexité en executant le programme ci-dessous.

Example
Vérifions la complexité de moyenne()

On observe bien lorsque le nombre N d'éléments de la liste est multiplié 10, le temps de calcul est multiplié aussi par un facteur du même ordre de grandeur. Nous observons donc encore bien ici une complexité linéaire.

Un curseur en action

Les curseurs sont des variables qui retiennent la position (l'index) d'un élément présentant une caractéristique particulière dans une liste. Un bon exemple est la recherche de la position du max des éléments d'une liste.

Indice du maximum

Avant de coder cette fonction, écrit le pseudocode de l'algo au brouillon
quand tu as écrit ton pseudo code, demande à ton professeur de le valider puis
recopie le sur le document papier puis implémente le ci-dessous.

Coding Exercise: Indice du maximum
Ecrire la fonction idxMax(lst). Une liste lst sera générée pour exécuter votre code.

Complexité

L'algorithme contient une boucle sur les éléments de la liste lst de longueur N (en partant du 2ème)

  • Avant la boucle on a 1 affection → 1 opération élémentaire
  • La boucle est exécutée N-1 fois et dans cette boucle il y a une comparaison addition et une affectation. → 2(N-1) opérations élémentaires
  • Après la boucle il n'y a rien → 0 opération élémentaire

il y a donc 1+2N-2 = 2N-1 opérations élémentaires
On a donc une complexité linéaire soit O(N)

Example
Vérifions la complexité de idxMax()

Il existe une variante (qu'on retrouve généralement dans tous les algorithme utilisant un curseur) à l'algorithme que nous venons de voir.

Si, au lieu de l'indice de la valeur maxi, on cherche la valeur elle même, l'algorithme est légèrement différent.:

Écrivez le pseudo-code modifié pour satisfaire cette recherche, faites le valider par votre professeur, recopier le sur votre feuille puis implementer le ci-dessous.

Coding Exercise
Ecrire la fonction valMax(lst) qui renvoie la valeur max d'une liste
ATTENTION : vous ne pouvez pas utiliser range dans cet exercice !

MODELE

pyexample : insérer code court

Example
Texte explicatif

Test avec les sorties consoles :

Coding Exercise
ATTENTION
créer une fonction qui affiche un nombre n et appelez cette fonction pour n=3 AIDE1

avec un precode et repeats

Coding Exercise
Avant d'exécuter votre code, le correcteur définir une variable a
créer une fonction qui affiche un nombre n et appelez cette fonction pour afficher la valeur de a AIDE1

avec autotest : on teste le résultat sur la valeur d'une variable

Coding Exercise
Dans cet exercice le correcteur va vérifier la valeur de la variable a Les sorties consoles sont quand même vérifiées

avec autotest : on teste ce que la fonction renvoie

Coding Exercise
Dans cet exercice le correcteur va vérifier ce que fct renvoie Les sorties consoles sont quand même vérifiées

avec autotest : on teste ce que la fonction renvoie

on peut mettre plusieurs appels dans autotests

on peut appeler avec des variables définies dans precode ou des tests choisis

Coding Exercise
Dans cet exercice le correcteur va vérifier ce que fct renvoie Les sorties consoles sont quand même vérifiées

Exemple d'utilisation de taboo

Coding Exercise
Dans cet exercice le correcteur va vérifier ce que fct renvoie Les sorties consoles sont quand même vérifiées

WARNING: this problem needs a permanent slug to save user data
Multiple Choice Exercise
la question
Correct!

La tarte aux fruits

Vous devez écrire un code qui va produire une recette de cuisine.
Vous devrez écrire les fonction suivantes :

  • cuisson( duree , temp ) :
    Entrées :
    duree (int) : temps de cuisson en minutes
    temp (int) : température du four en degrés
    Sortie :
    cuisson renvoie une chaine de caractères contenant un message tel que :
    "enfourner la tarte 45mn à 180°\n"
    (Le \n est un retour à la ligne).
  • garnir( fruit , surface , tailleTarte )
    Entrées :
    fruit (str) : le type de fruit utilisé
    surface (float) : la surface couverte avec un seul fruit (cm²)
    tailleTarte (int) : le diametre du plat à tarte (6 ou 22 cm)
    Sortie :
    garnir renvoie une chaine de caractère et un entier :
    La chaine est du type :
    "Epluchez les pommes, garnir le plat.\n"
    l'entier indique le nombre de fruits nécessaires.
    Il faudra donc garnir le plat avec un fruit et recommencer jusqu'à ce que le plat soit entièrement garnit.
  • assemble(txt1,txt2,txt3,txt4) : assemblage des 4 lignes de la recette (dans le bon ordre)

La recette que votre code doit produire :

ingredients : 6 pommes et un fond de tarte.
Epluchez les pommes, garnir le plat.
enfourner la tarte 45mn à 180°
servir la tarte aux pommes

Mais attention ! Dans le cas d'une tarte aux fraise, on ne doit pas cuire les fraises... dans ce cas la recette sera :
ingredients : 26 fraises et un fond de tarte.
enfourner la tarte 45mn à 180°
Epluchez les fraises, garnir le plat.
servir la tarte aux fraises

Le nombre de fruits est celui calculé par la fonction garnir.

Partie 1 : Ecrire la fonction cuisson

Coding Exercise: fonction cuisson
cuisson( duree , temp ) :
Entrées :
duree (int) : temps de cuisson en minutes
temp (int) : température du four en degrés
Sortie :
cuisson renvoie une chaine de caractères contenant un message tel que :
"enfourner la tarte 45mn à 180°\n"
(Le \n est un retour à la ligne).

Partie 2 : Ecrire la fonction garnir

Coding Exercise: fonction garnir
garnir( fruit , surface , tailleTarte )
Entrées :
fruit (str) : le type de fruit utilisé
surface (float) : la surface couverte avec un seul fruit (cm²)
tailleTarte (int) : le diametre du plat à tarte (6 ou 22 cm)
Sortie :
garnir renvoie une chaine de caractère et un entier :
La chaine est du type :
Epluchez les pommes, garnir le plat.\n
l'entier indique le nombre de fruits nécessaires.
Il faudra donc garnir le plat avec un fruit et recommencer jusqu'à ce que le plat soit entièrement garnit..