Introducció al laboratori de PRO1 - Construcció de programes. … · 2013-09-23 ·...
Transcript of Introducció al laboratori de PRO1 - Construcció de programes. … · 2013-09-23 ·...
Introducció al laboratori de PRO1Construcció de programes. Edició, compilació i prova.
Carlos Andújar
10 de setembre de 2013
Construcció de programes Comandes Workflow Entrada/sortida Organització fitxers Jutge
Outline
1 Construcció de programes
2 Comandes
3 Workflow
4 Entrada/sortida
5 Organització fitxers
6 Jutge
Carlos Andújar | Introducció al laboratori de PRO1 2/45
Construcció de programes Comandes Workflow Entrada/sortida Organització fitxers Jutge
Outline
1 Construcció de programes
2 Comandes
3 Workflow
4 Entrada/sortida
5 Organització fitxers
6 Jutge
Carlos Andújar | Introducció al laboratori de PRO1 3/45
Construcció de programes Comandes Workflow Entrada/sortida Organització fitxers Jutge
Resultat d’executar un programaDonades unes dades d’entrada, calcula unes dades de sortida.
ProgramaEntrada Sortida
Carlos Andújar | Introducció al laboratori de PRO1 4/45
Construcció de programes Comandes Workflow Entrada/sortida Organització fitxers Jutge
Fitxers que us proporcionaremEnunciat i jocs de proves
Enunciat del
problema (.pdf)
sample-2.inp
sample-1.inp
sample-3.inp
sample-1.cor
sample-3.cor
sample-2.cor
Carlos Andújar | Introducció al laboratori de PRO1 5/45
Construcció de programes Comandes Workflow Entrada/sortida Organització fitxers Jutge
Edició del programa fontUtilitzarem el llenguatge C++.
Codi font C++
(.cc)
Editor
Enunciat del
problema (.pdf)
sample-2.inp
sample-1.inp
sample-3.inp
sample-1.cor
sample-3.cor
sample-2.cor
Carlos Andújar | Introducció al laboratori de PRO1 6/45
Construcció de programes Comandes Workflow Entrada/sortida Organització fitxers Jutge
Compilació del programaCrearem l’executable amb p1++
Programa
executable (.x)
Codi font C++
(.cc)
Editor
Compilador (p1++)
Enunciat del
problema (.pdf)
sample-2.inp
sample-1.inp
sample-3.inp
sample-1.cor
sample-3.cor
sample-2.cor
Carlos Andújar | Introducció al laboratori de PRO1 7/45
Construcció de programes Comandes Workflow Entrada/sortida Organització fitxers Jutge
Execució del programaExecutarem el programa amb diferents entrades
Programa
executable (.x)
Codi font C++
(.cc)
Editor
Compilador (p1++)
Enunciat del
problema (.pdf)
sample-2.inp
sample-1.inp
sample-3.inp
sample-1.out
sample-3.out
sample-2.out
sample-1.cor
sample-3.cor
sample-2.cor
Carlos Andújar | Introducció al laboratori de PRO1 8/45
Construcció de programes Comandes Workflow Entrada/sortida Organització fitxers Jutge
Comprovació dels resultatsComprovarem que la sortida coincideix amb l’esperada
Programa
executable (.x)
Codi font C++
(.cc)
Editor
Compilador (p1++)
Enunciat del
problema (.pdf)
sample-2.inp
sample-1.inp
sample-3.inp
sample-1.out
sample-3.out
sample-2.out
sample-1.cor
sample-3.cor
sample-2.cordiff
diff
diff
Carlos Andújar | Introducció al laboratori de PRO1 9/45
Construcció de programes Comandes Workflow Entrada/sortida Organització fitxers Jutge
Outline
1 Construcció de programes
2 Comandes
3 Workflow
4 Entrada/sortida
5 Organització fitxers
6 Jutge
Carlos Andújar | Introducció al laboratori de PRO1 10/45
Construcció de programes Comandes Workflow Entrada/sortida Organització fitxers Jutge
Configuració de l’entorn de PRO1
Només cal fer-ho un cop, al començar el curs.
Passos1 /opt/p1/inip12 Tanqueu totes les consoles.
La comanda anterior configura el compilador de C++.
Carlos Andújar | Introducció al laboratori de PRO1 11/45
Construcció de programes Comandes Workflow Entrada/sortida Organització fitxers Jutge
Treballar amb directoris
Comandesls - llista el contingut d’un directorimkdir nom - crea un directorirmdir nom - esborra un directori (si és buit)cd nom - canvia a un altre directoricd .. - puja al directori parepwd - mostra directori actual
Examplelsmkdir pro1lscd pro1
Carlos Andújar | Introducció al laboratori de PRO1 12/45
Construcció de programes Comandes Workflow Entrada/sortida Organització fitxers Jutge
Treballar amb directoris
Comandesls - llista el contingut d’un directorimkdir nom - crea un directorirmdir nom - esborra un directori (si és buit)cd nom - canvia a un altre directoricd .. - puja al directori parepwd - mostra directori actual
Examplelsmkdir pro1lscd pro1
Carlos Andújar | Introducció al laboratori de PRO1 12/45
Construcció de programes Comandes Workflow Entrada/sortida Organització fitxers Jutge
Editar fitxers de text
Us recomanem l’editor kate. Podeu fer servir altres editors(p.ex., kwrite, gedit, emacs, geany) però respecteu les normesd’indentació de PRO1 (vegeu punt 7.2 de les normes).
Editorskate nom.cc
AtencióCrideu l’editor amb un ’&’ final per tal de poder continuarintroduint comandes sense necessitar de tancar la finestra del’editor
Examplekate hola.cc &
Carlos Andújar | Introducció al laboratori de PRO1 13/45
Construcció de programes Comandes Workflow Entrada/sortida Organització fitxers Jutge
Editar fitxers de text
Us recomanem l’editor kate. Podeu fer servir altres editors(p.ex., kwrite, gedit, emacs, geany) però respecteu les normesd’indentació de PRO1 (vegeu punt 7.2 de les normes).
Editorskate nom.cc
AtencióCrideu l’editor amb un ’&’ final per tal de poder continuarintroduint comandes sense necessitar de tancar la finestra del’editor
Examplekate hola.cc &
Carlos Andújar | Introducció al laboratori de PRO1 13/45
Construcció de programes Comandes Workflow Entrada/sortida Organització fitxers Jutge
Editar fitxers de text
Us recomanem l’editor kate. Podeu fer servir altres editors(p.ex., kwrite, gedit, emacs, geany) però respecteu les normesd’indentació de PRO1 (vegeu punt 7.2 de les normes).
Editorskate nom.cc
AtencióCrideu l’editor amb un ’&’ final per tal de poder continuarintroduint comandes sense necessitar de tancar la finestra del’editor
Examplekate hola.cc &
Carlos Andújar | Introducció al laboratori de PRO1 13/45
Construcció de programes Comandes Workflow Entrada/sortida Organització fitxers Jutge
Copiar i moure fitxers
Comandescp orig còpia - crea còpia d’un fitxermv orig desti - mou un fitxer (canvia nom i/o path)rm nom - esborra el(s) fitxer(s)
Examplecp hola.cc p.ccmv p.cc hola2.ccrm hola2.cc
Carlos Andújar | Introducció al laboratori de PRO1 14/45
Construcció de programes Comandes Workflow Entrada/sortida Organització fitxers Jutge
Copiar i moure fitxers
Comandescp orig còpia - crea còpia d’un fitxermv orig desti - mou un fitxer (canvia nom i/o path)rm nom - esborra el(s) fitxer(s)
Examplecp hola.cc p.ccmv p.cc hola2.ccrm hola2.cc
Carlos Andújar | Introducció al laboratori de PRO1 14/45
Construcció de programes Comandes Workflow Entrada/sortida Organització fitxers Jutge
Comparar fixers
Comandescmp fitxer1 fitxer2 - compara fitxers byte a bytediff fitxer1 fitxer2 - compara fitxers línia a líniaxwdiff antic nou - mostra diferències entre versions
kompare fitxer1 fitxer2 - compara fitxers (entorn gràfic)
Examplediff --side-by-side --left-column hola.cc hola2.cc
kompare hola.cc hola2.cc &
Carlos Andújar | Introducció al laboratori de PRO1 15/45
Construcció de programes Comandes Workflow Entrada/sortida Organització fitxers Jutge
Comparar fixers
Comandescmp fitxer1 fitxer2 - compara fitxers byte a bytediff fitxer1 fitxer2 - compara fitxers línia a líniaxwdiff antic nou - mostra diferències entre versions
kompare fitxer1 fitxer2 - compara fitxers (entorn gràfic)
Examplediff --side-by-side --left-column hola.cc hola2.cc
kompare hola.cc hola2.cc &
Carlos Andújar | Introducció al laboratori de PRO1 15/45
Construcció de programes Comandes Workflow Entrada/sortida Organització fitxers Jutge
Altres comandes
Comandesmore fitxer - mostra contingut d’un fitxerman comanda - mostra l’ajuda (manual) d’una comandahistory - mostra les comandes que hem introduitalias alias text - defineix un alias per una comanda llarga
Examplemore prova.ccman diffalias h history
Carlos Andújar | Introducció al laboratori de PRO1 16/45
Construcció de programes Comandes Workflow Entrada/sortida Organització fitxers Jutge
Altres comandes
Comandesmore fitxer - mostra contingut d’un fitxerman comanda - mostra l’ajuda (manual) d’una comandahistory - mostra les comandes que hem introduitalias alias text - defineix un alias per una comanda llarga
Examplemore prova.ccman diffalias h history
Carlos Andújar | Introducció al laboratori de PRO1 16/45
Construcció de programes Comandes Workflow Entrada/sortida Organització fitxers Jutge
Outline
1 Construcció de programes
2 Comandes
3 Workflow
4 Entrada/sortida
5 Organització fitxers
6 Jutge
Carlos Andújar | Introducció al laboratori de PRO1 17/45
Construcció de programes Comandes Workflow Entrada/sortida Organització fitxers Jutge
Workflow a PRO1
Un cop heu triat un problema del jutge per resoldre, heu deseguir aquests passos (a la consola de Linux):
1 Editar fitxer font amb extensió .cckate prog.cc &
2 Guardar fitxer font3 Provar de compilar el fitxer font i crear l’executablep1++ prog.cc -o prog.x
4 Repetir des del pas 1 fins que compili5 Executar programa./prog.x
6 Repetir des del pas 1 fins que penseu que és correcte7 Comprovar amb el jutge: https://jutge.org/
Carlos Andújar | Introducció al laboratori de PRO1 18/45
Construcció de programes Comandes Workflow Entrada/sortida Organització fitxers Jutge
Exemple 1: quadrats.ccEscriu els quadrats de tres enters
Codi font#include <iostream>using namespace std;int main() {
int a, b, c;cin >> a >> b >> c;cout << a*a << " " << b*b << " " << c*c << endl;
}
Example> ./quadrats.x2 3 44 9 16
Carlos Andújar | Introducció al laboratori de PRO1 19/45
Construcció de programes Comandes Workflow Entrada/sortida Organització fitxers Jutge
Exemple 2: nif.ccEscriu la lletra que li correspon a un DNI donat
Codi font#include <iostream>#include <string>using namespace std;int main() {
int dni;cin >> dni;const string data("TRWAGMYFPDXBNJZSQVHLCKE");cout << "Lletra: " << data[dni%23] << endl;
}
Carlos Andújar | Introducció al laboratori de PRO1 20/45
Construcció de programes Comandes Workflow Entrada/sortida Organització fitxers Jutge
Errors de compilacióCal aprendre a sortir-se’n sense l’ajut del professor
Exemple 1cout << "Hola"cout << "Adeu";
prova.cc:8: error: expected ‘;’ before ’cout’
Exemple 2int a;cin >> b;
prova.cc:8: error: ’b’ was not declared in this scope
Carlos Andújar | Introducció al laboratori de PRO1 21/45
Construcció de programes Comandes Workflow Entrada/sortida Organització fitxers Jutge
Outline
1 Construcció de programes
2 Comandes
3 Workflow
4 Entrada/sortida
5 Organització fitxers
6 Jutge
Carlos Andújar | Introducció al laboratori de PRO1 22/45
Construcció de programes Comandes Workflow Entrada/sortida Organització fitxers Jutge
Entrada/sortida en C++
Lectura de dadesint a, b, c;cin >> a >> b >> c;
Escriptura de dadesint a;cout << "Valor:" << a << endl;
Carlos Andújar | Introducció al laboratori de PRO1 23/45
Construcció de programes Comandes Workflow Entrada/sortida Organització fitxers Jutge
Problemes entrada/sortida manual
Pel que fa a l’entradaNo podem fer correccions un cop apretat l’enterFeixuc quan hi ha moltes dades d’entradaCal fer Ctrl+D per acabar l’entrada
Pel que fa a la sortidaPot ser difícil verificar que la sortida corresponexactament amb la sortida esperada.Recordeu que la sortida ha de coincidir exactamentperquè el programa es consideri correcte!
Carlos Andújar | Introducció al laboratori de PRO1 24/45
Construcció de programes Comandes Workflow Entrada/sortida Organització fitxers Jutge
Entrada/sortida automatitzada
Passos1 Executar el programa llegint les dades d’un fitxer i
escrivint la sortida en un altre:
./prog.x <p.inp >p.out
2 Donar un cop d’ull a la sortida:
more p.out
3 Comparar amb la solució esperada:
cmp p.out p.cordiff --side-by-side --left-column p.out p.cor
Al jutge podreu trobar els fitxers d’entrada (.inp) i sortidacorrecta (.cor).
Carlos Andújar | Introducció al laboratori de PRO1 25/45
Construcció de programes Comandes Workflow Entrada/sortida Organització fitxers Jutge
Outline
1 Construcció de programes
2 Comandes
3 Workflow
4 Entrada/sortida
5 Organització fitxers
6 Jutge
Carlos Andújar | Introducció al laboratori de PRO1 26/45
Construcció de programes Comandes Workflow Entrada/sortida Organització fitxers Jutge
Organitzeu els fitxers en directoris
Fitxers que fareu servirDurant el curs es faran tres controls. Cada control téassociada una llista de problemes.Cada problema té una o més versions del codi font,diversos jocs de prova públics, i una o més versions del’executable.Cada joc de prova consta d’un fitxer d’entrada i un desortida.
Cal una bona organizacióUs recomanem que feu servir un directori per cada problema.També podeu agrupar els problemes per llista o per sessions.
Carlos Andújar | Introducció al laboratori de PRO1 27/45
Construcció de programes Comandes Workflow Entrada/sortida Organització fitxers Jutge
Organitzeu els fitxers en directoris
Fitxers que fareu servirDurant el curs es faran tres controls. Cada control téassociada una llista de problemes.Cada problema té una o més versions del codi font,diversos jocs de prova públics, i una o més versions del’executable.Cada joc de prova consta d’un fitxer d’entrada i un desortida.
Cal una bona organizacióUs recomanem que feu servir un directori per cada problema.També podeu agrupar els problemes per llista o per sessions.
Carlos Andújar | Introducció al laboratori de PRO1 27/45
Construcció de programes Comandes Workflow Entrada/sortida Organització fitxers Jutge
Organitzeu els fitxers en directoris
Exemplepro1/
intro/P68688/
bondia.ccbondia.xsample-1.inpsample-1.outsample-2.corsample-2.inpsample-2.out...
P41221/suma.ccsuma.xsample-1.inpsample-1.out...
Carlos Andújar | Introducció al laboratori de PRO1 28/45
Construcció de programes Comandes Workflow Entrada/sortida Organització fitxers Jutge
Outline
1 Construcció de programes
2 Comandes
3 Workflow
4 Entrada/sortida
5 Organització fitxers
6 Jutge
Carlos Andújar | Introducció al laboratori de PRO1 29/45
Construcció de programes Comandes Workflow Entrada/sortida Organització fitxers Jutge
LoginHeu d’usar una adreça @est.fib.upc.edu
Carlos Andújar | Introducció al laboratori de PRO1 30/45
Construcció de programes Comandes Workflow Entrada/sortida Organització fitxers Jutge
RegistreNomés cal fer-lo un cop
Carlos Andújar | Introducció al laboratori de PRO1 31/45
Construcció de programes Comandes Workflow Entrada/sortida Organització fitxers Jutge
ProblemesFent clic sobre un problema permet accedir a la documentació
Carlos Andújar | Introducció al laboratori de PRO1 32/45
Construcció de programes Comandes Workflow Entrada/sortida Organització fitxers Jutge
EnunciatUs podeu baixar tota la documentació en un fitxer .zip
Carlos Andújar | Introducció al laboratori de PRO1 33/45
Construcció de programes Comandes Workflow Entrada/sortida Organització fitxers Jutge
LliurarRecordeu seleccionar P1++ com a compilador.
Carlos Andújar | Introducció al laboratori de PRO1 34/45
Construcció de programes Comandes Workflow Entrada/sortida Organització fitxers Jutge
Exemple resultatFeu clic sobre un joc de proves per comparar les sortides
Carlos Andújar | Introducció al laboratori de PRO1 35/45
Construcció de programes Comandes Workflow Entrada/sortida Organització fitxers Jutge
Exemple resultatFeu clic sobre un joc de proves per comparar les sortides
Carlos Andújar | Introducció al laboratori de PRO1 35/45
Construcció de programes Comandes Workflow Entrada/sortida Organització fitxers Jutge
Possibles veredictes
Acaba en un SortidaVeredicte Compila temps raonable jocs de prova Conclusió
AC - accepted Sí Sí Exacta Sembla correcte
PE - presentation error Sí Sí Petites errades Quasi correcte
WA - wrong answer Sí Sí No coincideixen És incorrecte
IC - invalid character Sí Sí Caràcters invàlids És incorrecte
EE - execution error Sí No N/A Abortat o massa lent
CE - compilation error No N/A N/A No ha compilat
AC-AcceptedAccepted - El programa sembla correcte. Cal remarcar que el jutge no avalua aspectes com arala documentació del codi, que sí s’avaluen a PRO1.
Carlos Andújar | Introducció al laboratori de PRO1 36/45
Construcció de programes Comandes Workflow Entrada/sortida Organització fitxers Jutge
Possibles veredictes
Acaba en un SortidaVeredicte Compila temps raonable jocs de prova Conclusió
AC - accepted Sí Sí Exacta Sembla correcte
PE - presentation error Sí Sí Petites errades Quasi correcte
WA - wrong answer Sí Sí No coincideixen És incorrecte
IC - invalid character Sí Sí Caràcters invàlids És incorrecte
EE - execution error Sí No N/A Abortat o massa lent
CE - compilation error No N/A N/A No ha compilat
PE-Presentation ErrorPresentation error - El programa sembla quasi correcte. La sortida s’ajusta prou a la sortidaesperada excepte per petites errades com ara línies en blanc, espais, tabuladors (mai no hi hauriad’haver-ne), o majúscules/minúscules. Cal corregir-ho i tornar-ho a enviar.
Carlos Andújar | Introducció al laboratori de PRO1 37/45
Construcció de programes Comandes Workflow Entrada/sortida Organització fitxers Jutge
Possibles veredictes
Acaba en un SortidaVeredicte Compila temps raonable jocs de prova Conclusió
AC - accepted Sí Sí Exacta Sembla correcte
PE - presentation error Sí Sí Petites errades Quasi correcte
WA - wrong answer Sí Sí No coincideixen És incorrecte
IC - invalid character Sí Sí Caràcters invàlids És incorrecte
EE - execution error Sí No N/A Abortat o massa lent
CE - compilation error No N/A N/A No ha compilat
WA-Wrong AnswerWrong Answer - El programa no és correcte. Encara que va acabar en un temps raonable, almenys en algun test la sortida no coincideix amb la correcta.
Carlos Andújar | Introducció al laboratori de PRO1 38/45
Construcció de programes Comandes Workflow Entrada/sortida Organització fitxers Jutge
Possibles veredictes
Acaba en un SortidaVeredicte Compila temps raonable jocs de prova Conclusió
AC - accepted Sí Sí Exacta Sembla correcte
PE - presentation error Sí Sí Petites errades Quasi correcte
WA - wrong answer Sí Sí No coincideixen És incorrecte
IC - invalid character Sí Sí Caràcters invàlids És incorrecte
EE - execution error Sí No N/A Abortat o massa lent
CE - compilation error No N/A N/A No ha compilat
IC-Invalid CharacterInvalid Character - El programa no és correcte. Encara que va acabar en un temps raonable,en algun(s) test(s) la sortida contenia caracters no permesos. Una possible causa és que elvostre programa escrigui amb accents o altres caracters fòra del rang ASCII 32-126.
Carlos Andújar | Introducció al laboratori de PRO1 39/45
Construcció de programes Comandes Workflow Entrada/sortida Organització fitxers Jutge
Possibles veredictes
Acaba en un SortidaVeredicte Compila temps raonable jocs de prova Conclusió
AC - accepted Sí Sí Exacta Sembla correcte
PE - presentation error Sí Sí Petites errades Quasi correcte
WA - wrong answer Sí Sí No coincideixen És incorrecte
IC - invalid character Sí Sí Caràcters invàlids És incorrecte
EE - execution error Sí No N/A Abortat o massa lent
CE - compilation error No N/A N/A No ha compilat
EE-Execution ErrorExecution Error - El vostre programa ha abortat, o bé no ha acabat en un temps raonable.Sovint passa perquè el programa (a) és massa lent, (b) no acaba mai, (c) fa accesos invàlids amemòria, (d) usa massa memòria, o (e) causa excepcions de coma flotant.
Carlos Andújar | Introducció al laboratori de PRO1 40/45
Construcció de programes Comandes Workflow Entrada/sortida Organització fitxers Jutge
Possibles veredictes
Acaba en un SortidaVeredicte Compila temps raonable jocs de prova Conclusió
AC - accepted Sí Sí Exacta Sembla correcte
PE - presentation error Sí Sí Petites errades Quasi correcte
WA - wrong answer Sí Sí No coincideixen És incorrecte
IC - invalid character Sí Sí Caràcters invàlids És incorrecte
EE - execution error Sí No N/A Abortat o massa lent
CE - compilation error No N/A N/A No ha compilat
CE-Compilation ErrorCompilation Error - El vostre programa no ha compilat. Sovint la causa és que no heu triat elcompilador apropiat (p1++), o que no heu respectat les normes de programació.
Carlos Andújar | Introducció al laboratori de PRO1 41/45
Construcció de programes Comandes Workflow Entrada/sortida Organització fitxers Jutge
Possibles veredictes
Acaba en un SortidaVeredicte Compila temps raonable jocs de prova Conclusió
AC - accepted Sí Sí Exacta Sembla correcte
PE - presentation error Sí Sí Petites errades Quasi correcte
WA - wrong answer Sí Sí No coincideixen És incorrecte
IC - invalid character Sí Sí Caràcters invàlids És incorrecte
EE - execution error Sí No N/A Abortat o massa lent
CE - compilation error No N/A N/A No ha compilat
PS - Pending SubmissionPending Submission - El vostre programa encara no s’ha evaluat (per exemple, perquè estàesperant a la cua).
Carlos Andújar | Introducció al laboratori de PRO1 42/45
Construcció de programes Comandes Workflow Entrada/sortida Organització fitxers Jutge
Possibles veredictes
Acaba en un SortidaVeredicte Compila temps raonable jocs de prova Conclusió
AC - accepted Sí Sí Exacta Sembla correcte
PE - presentation error Sí Sí Petites errades Quasi correcte
WA - wrong answer Sí Sí No coincideixen És incorrecte
IC - invalid character Sí Sí Caràcters invàlids És incorrecte
EE - execution error Sí No N/A Abortat o massa lent
CE - compilation error No N/A N/A No ha compilat
IE - Internal ErrorInternal Error - Si mai passa, no és culpa vostra.
Carlos Andújar | Introducció al laboratori de PRO1 43/45
Construcció de programes Comandes Workflow Entrada/sortida Organització fitxers Jutge
ProfileMés endavant us serà útil consultar tot el que heu enviat al jutge
Carlos Andújar | Introducció al laboratori de PRO1 44/45
Construcció de programes Comandes Workflow Entrada/sortida Organització fitxers Jutge
Documentació
Carlos Andújar | Introducció al laboratori de PRO1 45/45