Vous pouvez copier (copy & paste) les algos en Language Machine et les faire fonctioner dans l'Applet Java du simulateur de LMC donne sur la page Web du cours; soit celle de Petter Higginson ou soit celle de 101computing. Dans les deux applets il faut remplacer: IN par INP BR par BRA BZ par BRZ BP par BRP STO par STA ATTENTION : l'instruction STA (telle qu'elle a ete definie dans le cours) n'EXISTE PAS dans ces deux applets (ni les instructions MUL ET DIV) ! ================= Final IFT1215 H05 ================= ATTENTION : On ne peut simuler ce programme machine sur les deux applets donne dans la page Web de ce cours; soit celle de Petter Higginson ou soit celle de 101computing) car elle utilise l'instruction DIV qui est une instruction supplementaire ajoute au jeux d'instructions du LMC. ------------ Question I.1 ------------ INP SUB un STO nbt loop LDA un DIV cpt MUL inc STO inc ADD res STO res LDA cpt ADD un STO cpt SUB nbt BRZ end BRA loop end LDA res OUT HLT un DAT 1 nbt DAT 0 cpt DAT 1 res DAT 1 inc DAT 1 ------------ Question I.2 ------------ On peut par contre simuler les deux programmes suivants qui n'ont pas d'insteruction STA (telle que definie dans le cours) ou d'instructions MULT et DIV. INP STA value loop LDA trinum SUB value BRP endloop LDA n ADD one STA n ADD trinum STA trinum BRA loop endloop LDA value SUB trinum BRZ equal LDA zero OUT BRA done equal LDA n OUT done HLT value DAT 0 trinum DAT 0 n DAT 0 zero DAT 0 one DAT 1 ------------ Question I.3 ------------ INP STA small INP STA big LDA big SUB small BRP ok LDA small STA temp LDA big STA small LDA temp STA big ok LDA small ADD one STA small loop LDA small SUB big BRP end LDA small OUT ADD one STA small BRA loop end HLT one DAT 1 small DAT 0 big DAT 0 temp DAT 0 ------------- Question II.1 ------------- #! /bin/bash # ListOrd.sh script # Recuperation Nom du fichier passe en parametre InputFilename=$1 # Calcul du Nombre d'étudiants NbEtudiants=`cat $InputFilename | wc -l` let NbEtudiants=NbEtudiants-1 # Efface tmp.dat si existe if [ -f tmp.dat ] then rm tmp.dat fi # Sauve les moyennes dans tmp.dat cpt=1 while [ $cpt -le $NbEtudiants ] do let cpt=cpt+1 line=`head -n $cpt $InputFilename | tail -n 1` Moyenne=`echo $line | cut -d: -f10` echo $Moyenne >> tmp.dat done # Trie/affiche/sauvegarde liste des moyenne cat tmp.dat | sort -r > file.tmp cat file.tmp #! /bin/bash # ListOrd2.sh script cat LISTE | cut -d : -f 10 | tr ".Moy" " " | sort -r > file.tmp -------------- Question II.2 -------------- #! /bin/bash # Rang.bash script # Input/Output InputFilename=$1 OutputFile=${1}-RANG # Calcul Nb d'etudiants NbEtudiants=`cat $InputFilename | wc -l` let NbEtudiants=NbEtudiants-1 # Ecriture 1ere ligne head -n 1 $InputFilename > $OutputFile # Appel ListOrd.sh ListOrd.sh $1 # Afichage du Rang cpt=1 while [ $cpt -le $NbEtudiants ] do let cpt=cpt+1 line=`head -n $cpt $InputFilename | tail -n 1` Moyenne=`echo $line | cut -d: -f10` Rang=`grep -n $Moyenne file.tmp | cut -d: -f1` echo $line ${Rang}/${NbEtudiants}: >> $OutputFile done #! /bin/bash # Spy.sh script find -name \*.mp3 -exec ls -al \{\} \; > ListeMp3.dat #! /bin/bash # Spy2.sh script find -name \*.mp3 -exec ls -al \{\} \; > ListeMp3.dat mignotte@actarus:cat Spy2.sh find -name \*.mp3 | xargs ls -al > ListeMp3.dat #! /bin/bash # MMoy.sh script # Resuperation Nom du fichier passe en parametre InputFilename=$1 # Calcul du Nombre d'etudiants NbEtudiants=`cat $InputFilename | wc -l` let NbEtudiants=NbEtudiants-2 nb=1 cpt=2 Result=0 while [ $nb -le $NbEtudiants ] do # Extraction de chaque moy dans var. moy line=`head -n $cpt $InputFilename | tail -n 1` moy=`echo $line | cut -d: -f10` # Somme partielle Result=`echo $Result + $moy | bc` let cpt=cpt+1 let nb=nb+1 done # Calcul Moyenne Moyenne=`echo $Result/$NbEtudiants | bc -l` # Affichage echo Moyenne de ${InputFilename}=$Moyenne pour $NbEtudiants etudiants