Ventura Posted January 9, 2016 at 06:41 PM Report Share #591715 Posted January 9, 2016 at 06:41 PM (edited) Boa tarde mais uma vez, eu tenho este código #!/bin/bash #Vamos inserir uma serie de palavras e ele vai inverter a ordem res="" for a in $* #$* uma string que contem todos os argumentos do res="$a $res" #aqui inverte a string done echo -e "\n\nO resultado invertido vai ser: $res \nda palavra $*" Onde eu vou por exemplo escrever nventura@so:~/bin$ t3-inverte ola portugal a programar O resultado invertido vai ser: programar a portugal ola da palavra ola portugal a programar O que vai inverter as palavras que eu escrevi é esta parte do código? res="$a $res" #aqui inverte a string Edited January 9, 2016 at 08:00 PM by pwseo tags code, syntax highlight. Link to comment Share on other sites More sharing options...
pwseo Posted January 9, 2016 at 08:04 PM Report Share #591722 Posted January 9, 2016 at 08:04 PM Ventura, O código parece-me auto-explicativo. Qual é a tua dúvida exactamente? Perceber como acontece a inversão? Link to comment Share on other sites More sharing options...
Ventura Posted January 9, 2016 at 08:19 PM Author Report Share #591725 Posted January 9, 2016 at 08:19 PM Ventura, O código parece-me auto-explicativo. Qual é a tua dúvida exactamente? Perceber como acontece a inversão? Sim, exatamente isso. Aqueles comentários até fui eu que os inseri, mas não consigo perceber como é que aquela linha faz a inversão Link to comment Share on other sites More sharing options...
pwseo Posted January 9, 2016 at 08:20 PM Report Share #591726 Posted January 9, 2016 at 08:20 PM Experimenta fazer isso com papel e caneta. Vai registando o valor de $res em cada iteração do ciclo e perceberás. Link to comment Share on other sites More sharing options...
Ventura Posted January 9, 2016 at 08:29 PM Author Report Share #591728 Posted January 9, 2016 at 08:29 PM Experimenta fazer isso com papel e caneta. Vai registando o valor de $res em cada iteração do ciclo e perceberás. O problema é mesmo esse, não consigo perceber como acontece isso. Link to comment Share on other sites More sharing options...
pwseo Posted January 9, 2016 at 09:29 PM Report Share #591735 Posted January 9, 2016 at 09:29 PM O objectivo é conseguires perceber sem sermos nós a explicar-te isso... até porque é um padrão muito comum em scripts bash Imagina que invocas o script com os argumentos "programar a portugal olá". Diz-me qual é o valor de $res em cada iteração do ciclo. Link to comment Share on other sites More sharing options...
Ventura Posted January 10, 2016 at 03:23 PM Author Report Share #591769 Posted January 10, 2016 at 03:23 PM O objectivo é conseguires perceber sem sermos nós a explicar-te isso... até porque é um padrão muito comum em scripts bash Imagina que invocas o script com os argumentos "programar a portugal olá". Diz-me qual é o valor de $res em cada iteração do ciclo. ciclo 1: olá programar a portugal ciclo 2: olá portugal programar a ciclo 3: olá portugal a programar ciclo 4: olá portugal a programar É isto que ele faz, correto? Chega a fazer o ciclo 4 ou para no 3? Link to comment Share on other sites More sharing options...
pwseo Posted January 10, 2016 at 03:35 PM Report Share #591770 Posted January 10, 2016 at 03:35 PM Não. Repara, a linha em questão é a seguinte: $res="$a $res" Então assume-se que $res inicialmente é "" (está vazio) e que $a é a palavra em questão em cada ciclo: $a $res início: -- "" iteração #1: "programar" "programar " iteração #2: "a" "a programar " iteração #3: "portugal" "portugal a programar " iteração #4: "olá" "olá portugal a programar " Atenção: o facto de não teres compreendido isto correctamente revela uma lacuna grave nos teus conhecimentos, que deverás tentar reparar logo que possível. Link to comment Share on other sites More sharing options...
Ventura Posted January 10, 2016 at 03:53 PM Author Report Share #591774 Posted January 10, 2016 at 03:53 PM Não. Repara, a linha em questão é a seguinte: $res="$a $res" Então assume-se que $res inicialmente é "" (está vazio) e que $a é a palavra em questão em cada ciclo: $a $res início: -- "" iteração #1: "programar" "programar " iteração #2: "a" "a programar " iteração #3: "portugal" "portugal a programar " iteração #4: "olá" "olá portugal a programar " Atenção: o facto de não teres compreendido isto correctamente revela uma lacuna grave nos teus conhecimentos, que deverás tentar reparar logo que possível. Sim, é verdade, tenho grandes dificuldades na linguagem, mas fico muito agradecido pela ajuda. Link to comment Share on other sites More sharing options...
pwseo Posted January 10, 2016 at 04:12 PM Report Share #591776 Posted January 10, 2016 at 04:12 PM É uma questão de ires praticando, especialmente no papel. E de resto estamos cá nós para as dúvidas que persistam. Link to comment Share on other sites More sharing options...
Ventura Posted January 10, 2016 at 04:14 PM Author Report Share #591777 Posted January 10, 2016 at 04:14 PM É uma questão de ires praticando, especialmente no papel. E de resto estamos cá nós para as dúvidas que persistam. Muito obrigado mesmo, se possível uma última ajuda, que meti neste tópico agradecia. https://www.portugal-a-programar.pt/topic/72586-fatorial-de-um-numero/ Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now