Col·lecció de problemes: Programació en Bash Script i processament amb Awk

Fonaments d'Enginyeria · 1r curs · Grau en Enginyeria Informàtica · Universitat Autònoma de Barcelona (UAB). Exercicis de Fonaments d'Enginyeria amb…

Fonaments d'Enginyeria · Universitat Autònoma de Barcelona · Grau en Enginyeria Informàtica · 1r curs

27 problemes · Marc formal de resolució de problemes en enginyeria · Càlculs en enginyeria: unitats, dimensions i xifres significatives

Exercici 1. Desenvolupeu un programa en shell capaç d'identificar i extreure les línies d'un fitxer de text (ex1_ex.txt)…

Marc formal de resolució de problemes en enginyeria

Exercici 1. Cerca insensible a majúscules de dues paraules

Desenvolupeu un programa en shell capaç d'identificar i extreure les línies d'un fitxer de text (per exemple, ex1_ex.txt) que continguin simultàniament els termes «un» i «dos», sense distingir entre majúscules i minúscules i en qualsevol ordre d'aparició.

Considereu el següent text de prova contingut a l'arxiu:

Aquest és un exemple.

Un dos tres.

Aquest exemple no conté totes les paraules.

Un altre exemple amb dos elements.

Finalment, una línia amb dos paraules: un i dos.

Enunciado: Exercici 1

Exercici 2. Elaboreu un script en Bash que sol·liciti a l'usuari un valor numèric enter a través de l'entrada estàndard i…

Marc formal de resolució de problemes en enginyeria

Exercici 2. Determinació de signe positiu per a un enter

Elaboreu un script en Bash que sol·liciti a l'usuari un valor numèric enter a través de l'entrada estàndard i verifiqui si es tracta d'un nombre estrictament positiu, informant del resultat per pantalla.

Enunciado: Exercici 2

Exercici 3. Programeu un guió de comandes que demani a l'usuari una cadena de text i procedeixi a imprimir-la per la…

Marc formal de resolució de problemes en enginyeria

Exercici 3. Repetició en bucle d'una paraula

Programeu un guió de comandes que demani a l'usuari una cadena de text i procedeixi a imprimir-la per la sortida estàndard un total de 10 vegades de manera iterativa.

Enunciado: Exercici 3

Exercici 4. Creeu un script que sol·liciti paraules de forma continuada per teclat i les vagi afegint a un fitxer de text…

Marc formal de resolució de problemes en enginyeria

Exercici 4. Lectura interactiva, desat i ordenació

Creeu un script que sol·liciti paraules de forma continuada per teclat i les vagi afegint a un fitxer de text fins que l'usuari teclegi el caràcter «q». Un cop finalitzada la recollida, el fitxer ha de quedar ordenat alfabèticament.

Pots comparar el teu script amb la solució oficial a continuació.

Enunciado: Exercici 4

Exercici 5. Programeu un script que rebi per teclat la ruta absoluta d'un element del sistema de fitxers i determini si…

Marc formal de resolució de problemes en enginyeria

Exercici 5. Comprovació de la naturalesa d'una ruta

Programeu un script que rebi per teclat la ruta absoluta d'un element del sistema de fitxers i determini si correspon a un directori o bé a un fitxer ordinari (regular).

Pots comparar el teu codi amb la solució oficial a continuació.

Enunciado: Exercici 5

Exercici 6. Dissenyeu un script capaç de canviar el valor del primer camp d'una fila concreta d'un fitxer delimitat per…

Marc formal de resolució de problemes en enginyeria

Exercici 6. Substitució del primer camp d'un registre delimitat

Dissenyeu un script capaç de canviar el valor del primer camp d'una fila concreta d'un fitxer delimitat per dos punts («:»). El programa ha de demanar per teclat: la ruta de l'arxiu original, el número de fila a editar, el nou text per al primer camp i el nom del fitxer de sortida.

Pots comparar el teu codi amb la solució oficial a continuació.

Enunciado: Exercici 6

Exercici 7. Escriviu un script en què l'usuari introdueixi un dígit de l'1 al 3. Segons l'entrada, cal mostrar un…

Marc formal de resolució de problemes en enginyeria

Exercici 7. Estructura condicional múltiple case per posicions

Escriviu un script en què l'usuari introdueixi un dígit de l'1 al 3. Segons l'entrada, cal mostrar el missatge corresponent:

1: «Ets el primer en arribar»

2: «Subcampió de la temporada»

3: «A la tercera va la vençuda»

En cas de proporcionar qualsevol altre valor, s'haurà d'emetre un advertiment d'error.

Pots comparar el teu codi amb la solució oficial a continuació.

Enunciado: Exercici 7

Exercici 8. Crear un script en Bash que iteri per totes les files del fitxer file1 (format separat per «:») i mostri per…

Marc formal de resolució de problemes en enginyeria

Exercici 8. Processament per files d'un fitxer d'usuaris

Creeu un script que iteri per totes les files del fitxer file1 (amb format tipus /etc/passwd, separat per «:») i mostri per a cadascuna d'elles un missatge amb l'índex de la línia i el contingut del seu primer camp, seguint el format: El camp 1 de la línia XX és YYY.

Enunciado: Exercici 8

Exercici 9. Desenvolupar un programa anomenat taules.sh que calculi les taules de multiplicar de l'1 al 10 i desi…

Marc formal de resolució de problemes en enginyeria

Exercici 9. Generació automatitzada de taules de multiplicar

Desenvolupeu un programa anomenat taules.sh que calculi les taules de multiplicar de l'1 al 10. Cada taula s'ha d'enregistrar en un arxiu independent anomenat taula-del-X, on X sigui el número corresponent (per exemple: taula-del-1, taula-del-2, etc.).

Enunciado: Exercici 9

Exercici 10. Construir l'script calculadora.sh que demani dos operands i un símbol operatiu (+, -, x, /) i mostri el…

Marc formal de resolució de problemes en enginyeria

Exercici 10. Calculadora aritmètica amb menú d'operacions

Construïu l'script calculadora.sh capaç d'executar les quatre operacions bàsiques (suma, resta, multiplicació i divisió amb dos decimals). L'usuari haurà d'introduir dos nombres per teclat i seleccionar el símbol operatiu desitjat entre: «+», «-», «x» o «/». El resultat de la computació s'ha d'imprimir per pantalla.

Enunciado: Exercici 10

Exercici 11. Implementeu l'script nom.sh que demani un nom per teclat i mostri totes les línies senceres d'aquells…

Marc formal de resolució de problemes en enginyeria

Exercici 11. Cerca de registres per coincidència de nom

Donat el fitxer estructurat esportistes amb els camps nom:cognom1:cognom2:edat:club:població, implementeu l'script nom.sh que demani un nom per teclat i mostri totes les línies senceres d'aquells esportistes el nom dels quals coincideixi amb el terme indicat.

Enunciado: Exercici 11

Exercici 12. Programeu l'script FiltrarCognom.sh per dividir el fitxer esportistes en esportistes-AM i esportistes-NZ,…

Marc formal de resolució de problemes en enginyeria

Exercici 12. Classificació alfabètica per primer cognom

Programeu l'script FiltrarCognom.sh per dividir el fitxer esportistes en dos fitxers ordenats pel primer cognom:

esportistes-AM: contindrà els esportistes el primer cognom dels quals comenci per una lletra entre la A i la M (ambdues incloses).

esportistes-NZ: contindrà aquells el primer cognom dels quals comenci per una lletra entre la N i la Z.

Enunciado: Exercici 12

Exercici 13. Escriviu l'script FiltrarClub.sh que demani a l'usuari el nom d'un club esportiu i guardi en un fitxer…

Marc formal de resolució de problemes en enginyeria

Exercici 13. Filtratge de membres d'un club

Escriviu l'script FiltrarClub.sh que demani a l'usuari el nom d'un club esportiu i guardi en un fitxer anomenat Club tots els registres del fitxer esportistes que pertanyin a aquesta entitat.

Enunciado: Exercici 13

Exercici 14. Desenvolupeu el programa interactiu menu.sh que presenti contínuament a l'usuari un ventall de 4 opcions…

Marc formal de resolució de problemes en enginyeria

Exercici 14. Menú cíclic de gestió d'esportistes

Desenvolupeu el programa interactiu menu.sh que presenti contínuament a l'usuari el següent ventall d'opcions fins que es decideixi sortir:

Calcular l'edat mitjana dels esportistes (cridant el programa mitjana.sh).

Llistar tots els integrants d'un club (executant FiltrarClub.sh).

Llistar esportistes segons el rang del cognom (executant FiltrarCognom.sh).

Sortir de l'aplicació.

Enunciado: Exercici 14

Exercici 15. Dissenyeu un script que sol·liciti a l'usuari un enter de tres xifres i indiqui si el valor és o no capicua,…

Marc formal de resolució de problemes en enginyeria

Exercici 15. Verificació de xifra capicua de tres dígits

Dissenyeu un script que sol·liciti a l'usuari un enter de tres xifres i indiqui si el valor és o no capicua, avaluant les posicions dels seus caràcters.

Enunciado: Exercici 15

Exercici 16. Implementeu un script que mostri un menú utilitzant la sentència select amb les quatre opcions: Acudit,…

Marc formal de resolució de problemes en enginyeria

Exercici 16. Menú interactiu amb la instrucció select

Implementeu un script que mostri un menú utilitzant la sentència select amb les quatre opcions: Acudit, Refrany, Poema i Sortir. Els missatges associats seran:

Acudit: «Saben aquel que dice»

Refrany: «Com més serem més riurem»

Poema: «Si parlo dels teus ulls»

Sortir: Finalitza el script.

Enunciado: Exercici 16

Exercici 17. Programeu un script que llegeixi un fitxer compost d'una única línia i determini si les tres primeres…

Marc formal de resolució de problemes en enginyeria

Exercici 17. Comparació lèxica de les tres primeres paraules

Programeu un script que llegeixi un fitxer compost d'una única línia i determini si les tres primeres paraules que el componen són totes idèntiques entre si o bé presenten alguna diferència.

Enunciado: Exercici 17

Exercici II.1. Creeu l'script arg1.sh que requereixi rebre exactament tres paràmetres posicionals per línia d'ordres. Si…

Marc formal de resolució de problemes en enginyeria

Exercici II.1. Control del nombre d'arguments rebuts

Creeu l'script arg1.sh que requereixi rebre exactament tres paràmetres posicionals per línia d'ordres. Si s'executa amb un nombre diferent d'arguments, ha de finalitzar emetent un avís d'error.

Enunciado: Exercici II.1

Exercici II.2. Desenvolupeu el programa arg2.sh que accepti tres paràmetres i els imprimeixi concatenats en una única…

Marc formal de resolució de problemes en enginyeria

Exercici II.2. Concatenació seqüencial d'arguments

Desenvolupeu el programa arg2.sh que accepti tres paràmetres i els imprimeixi concatenats en una única sortida de text, sense espais intermedis.

Enunciado: Exercici II.2

Exercici II.3. Construïu l'script arg3.sh que prengui per paràmetres el número de línia desitjat i el nom d'un arxiu de…

Marc formal de resolució de problemes en enginyeria

Exercici II.3. Extracció d'una línia específica mitjançant arguments

Construïu l'script arg3.sh que prengui per paràmetres el número de línia desitjat i el nom d'un arxiu de text, mostrant per pantalla exclusivament aquesta fila.

Enunciado: Exercici II.3

Exercici II.4. Implementeu factorial.sh per computar el factorial d'un nombre enter positiu passat com a primer argument de…

Marc formal de resolució de problemes en enginyeria

Exercici II.4. Càlcul del factorial a partir de la línia d'ordres

Implementeu factorial.sh per computar el factorial d'un nombre enter positiu passat com a primer argument de l'script.

Enunciado: Exercici II.4

Exercici II.5. Elaboreu l'script combinatori.sh per calcular el coeficient binomial C_n^m definint una funció per calcular…

Marc formal de resolució de problemes en enginyeria

Exercici II.5. Càlcul del nombre combinatori amb subrutina

Elaboreu l'script combinatori.sh per calcular el coeficient binomial Cnm=(mn)=m!n!(m−n)!C_n^m = \binom{m}{n} = \frac{m!}{n!(m-n)!} a partir de dos valors enters mm i nn (on m>nm > n) demanats per pantalla o per paràmetres, definint una funció per calcular els factorials.

Enunciado: Exercici II.5

Exercici Awk 1. Dissenyeu una instrucció amb awk a partir del fitxer esportistes (delimitat per ':') que mostri per a cada…

Marc formal de resolució de problemes en enginyeria

Exercici Awk 1. Recompte de línies i columnes

A partir del fitxer estructurat esportistes (delimitat per «:»), dissenyeu una instrucció amb awk que mostri per a cada registre el número d'ordre de la fila i la quantitat total de camps que posseeix.

Enunciado: Exercici Awk 1

Exercici Awk 2. Implementeu el programa mitjana-awk.sh per computar l'edat mitjana de tots els atletes registrats a…

Càlculs en enginyeria: unitats, dimensions i xifres significatives

Exercici Awk 2. Càlcul de la mitjana aritmètica d'edats

Implementeu el programa mitjana-awk.sh per computar l'edat mitjana de tots els atletes registrats a esportistes (l'edat se situa al quart camp) emprant les capacitats d'Awk.

Enunciado: Exercici Awk 2

Exercici Awk 3. Creeu el guió nom-awk.sh que demani a l'usuari un nom de pila i mostri la totalitat de dades d'aquells…

Marc formal de resolució de problemes en enginyeria

Exercici Awk 3. Cerca parametritzada per nom

Creeu el guió nom-awk.sh que demani a l'usuari un nom de pila i mostri la totalitat de dades d'aquells esportistes que tinguin aquest mateix nom al primer camp, resolent la consulta exclusivament mitjançant awk.

Enunciado: Exercici Awk 3

Exercici Awk 4. Elaboreu l'script FiltrarCognom-awk.sh per generar dos arxius a partir d'esportistes emprant la concordança…

Marc formal de resolució de problemes en enginyeria

Exercici Awk 4. Segmentació de la base de dades per cognom

Elaboreu l'script FiltrarCognom-awk.sh per generar dos arxius a partir d' esportistes emprant la concordança de patrons d'Awk sobre el segon camp:

esportistes-AM: atletes amb primer cognom iniciat entre A i M.

esportistes-NZ: atletes amb primer cognom iniciat entre N i Z.

Enunciado: Exercici Awk 4

Exercici Awk 5. Construïu l'script FiltrarClub.sh que sol·liciti per teclat o per argument el nom d'un club i generi el…

Marc formal de resolució de problemes en enginyeria

Exercici Awk 5. Filtratge per club i selecció de columnes

Construïu l'script FiltrarClub.sh que sol·liciti per teclat o per argument el nom d'un club i generi el fitxer Club contenint exclusivament el nom, el primer cognom i el segon cognom (separats per dos punts) dels esportistes que en formin part (el club és el cinquè camp del fitxer).

Enunciado: Exercici Awk 5

Resuélvelo aquí mismo: corrección automática, pistas y solución paso a paso.

Més apunts de Fonaments d'Enginyeria

Exàmens, temes i apunts de Fonaments d'Enginyeria