Home › Fóruns › Programação Básica › Módulo 1 – Exercício 12
Marcado: Md1 - Ex012
- Este tópico contém 25 respostas, 13 vozes e foi atualizado pela última vez 6 meses atrás por Wesley Pita.
-
AutorPosts
-
-
28 de março de 2021 às 18:03 #63987Paulo Roberto CarneiroParticipante
Boa tarde, não estou conseguindo concluir o exercício 12 do módulo 1, poderia me ajudar por favor??
Muito Obrigado!! -
29 de março de 2021 às 22:36 #64047Tutora MaylaMestre
Paulo, o exercício pede para pegar o primeiro nome a partir do nome completo digitado.
Como sabemos diferenciar o primeiro nome dos demais? “Paulo Roberto” vemos aqui que há um espaço entre os dois nomes, então sabemos que o que está antes do espaço é o primeiro nome e o que está depois é o segundo nome.
A função
posicao_texto
procura dentro de uma cadeia qual a primeira aparição de um determinado caractere. Enquanto a funçãoextrair_subtexto
permite escrever uma cadeia até determinada posição.Sabendo qual função utilizar e o que deve ser encontrado, tente pensar numa lógica onde seja possível escrever apenas o primeiro nome.
Caso a dúvida persista volte a entrar em contato que lhe ajudaremos. -
13 de maio de 2021 às 23:33 #67080MARCOS TADEU DE PAULA LIMAParticipante
olá,
não consigo fazer o exercicio, pode me ensinar como fazeR? já tentei diversas vezes.
programa { inclua biblioteca Texto -->txt funcao inicio() { cadeia nome escreva("Digite seu nome completo: ") leia (nome) //cadeia n1 = txt.posicao_texto(" ", nome,0) //cadeia n2 = txt.extrair_subtexto(nome, 0, 10) escreva("Seu primeiro nome é: " + txt.posicao_texto(" " , nome ,5) ) } }
- Esta resposta foi modificada 2 anos, 11 meses atrás por IcaroFilho. Razão: formatando código do aluno
- Esta resposta foi modificada 2 anos, 11 meses atrás por Tutora Mayla.
-
14 de maio de 2021 às 20:01 #67139Tutora MaylaMestre
Marcos, mesclei o seu tópico com o já existente sobre o assunto.
Aqui há uma explicação minha sobre a questão também, pode vir a lhe ajudar em algo mais apesar da resposta do Icaro já estar bem completa.
Se houver quaisquer outras dúvidas basta entrar em contato que lhe ajudaremos.
Bons estudos!
-
14 de maio de 2021 às 11:23 #67110IcaroFilhoModerador
Bom dia Marcos,
Primeiramente, antes de postar suas duvidas, tente procurar no fórum se a mesma duvida já não foi perguntada. Se houver e ainda continuar com duvidas, poste dentro do mesmo. Isto evita que o fórum fique poluído com muitas postagem do mesmo assunto | exercício.
LINK do mesmo exercício.Referente a sua duvida.
Tem-se que traçar mentalmente o passo-a-passo do que é necessário para realizar.
A questão te pede para exibir apenas o primeiro nome, ou seja, ele te pede para extrair parte de string.
Ao pesquisar na biblioteca encontramos um metodo de extração:
funcao cadeia extrair_subtexto(cadeia cad, inteiro posicao_inicial, inteiro posicao_final)
sabemos que: cad => nome | posicao_inicial ==> 0 | posicao_final => índice final da string
Então nos falta saber qual é este índice. Para descobrirmos temos que saber a posição da ultima letra do primeiro nome.
e como sabemos como separar? simples, toda separação vem com uma coisa em comum, o espaço.
faremos uma busca para encontrarmos onde se tem o primeiro espaçamento pelo metodo:
funcao inteiro posicao_texto(cadeia texto, cadeia cad, inteiro posicao_incial)
sabemos que: texto => ” “ | cad => nome | posicao_inicial => 0
isto nos retornará o índice do espaçamento. Este índice que teremos que informar na extração do texto.
Segue abaixo o código refeito. Tente fazer antes de replica-lo.
programa { inclua biblioteca Texto --> txt funcao inicio() { inteiro pos cadeia nome escreva("Digite seu nome completo: ") leia (nome) pos = txt.posicao_texto(" " , nome ,0) escreva("Seu primeiro nome é: " + txt.extrair_subtexto(nome,0,pos) ) } }
Bons estudos !!
-
24 de junho de 2021 às 18:03 #70007Cristiane Barauna de SouzaParticipante
Boa Noite!
Como seria para pegar o último nome?
Obrigada.
-
25 de junho de 2021 às 18:39 #70071Tutora MaylaMestre
Cristiane, com conhecimento de laço (Programação Básica – Módulo 03: Repetições) é possível escrever um código para que ache todas as vezes que o caractere espaço aparece, sabendo então qual é a ultima vez e conseguindo escrever a cadeia a partir do ultimo caractere espaço, sendo assim o ultimo nome.
Procure no PortugolStudio emBiblioteca>Texto>Pesquisar Texto
o último exemplo do código que é sobre como encontrar o caractere A em todas as posições na palavra, a partir desse exemplo e tendo o conhecimento de laço é possível criar um código para achar o último nome.
Espero ter ajudado, quaisquer dúvidas estamos a disposição.
-
-
12 de março de 2022 às 19:19 #88452Douglas SilvaParticipante
Boa Noite, o meu ficou assim:
( ME CORRIJAM SE ESTIVER ERRADO POR FAVOR)programa { inclua biblioteca Texto --> txt funcao inicio() { cadeia nome escreva("Digite seu nome completo: ") leia(nome) escreva("Seu primeiro nome é " + txt.extrair_subtexto(nome,0,7)) } }
- Esta resposta foi modificada 2 anos, 1 mês atrás por IcaroFilho.
-
13 de março de 2022 às 00:11 #88459IcaroFilhoModerador
Boa noite.
O exercício esta incorreto.
Sempre quanto testar seu código, tente algumas possibilidades.
O seu código só retorna corretamente quando o nome possui 7 letras. No meu caso que possuo 5, ele retorna o nome + espaço + 1 letra do sobrenome.
O botei uma explicação da resolução deste exercício mais acima. de uma lida e tente refazer seu código.
E ao testa-lo. teste com tamanhos de nomes diferentes.
Ex.:
Cidália Trigueiro Marins
Tomás Quinzeiro Bicalho
Yu Mainha Guimarães
Elisabeth Caiado Sanches(todos estes nomes foram obtidos por um gerador de nomes. e todos , com exceção do primeiro, apresentam falha no seu código)
-
19 de março de 2022 às 12:07 #89007Rodrigo Romero Lopes SilveiraParticipante
Boa tarde, tudo bem?
Gostaria de saber se a minha lógica está correta?
programa
{inclua biblioteca Texto –> txt
funcao inicio()
{
cadeia nome_completoescreva(“Digite seu nome completo?”)
leia(nome_completo)
//pos = txt.posicao_texto(” “, nome_completo, 0)escreva(“Seu primeiro nome é: ” + txt.extrair_subtexto(nome_completo, 0 , txt.posicao_texto(” “, nome_completo, 0)))
}
}-
21 de março de 2022 às 09:17 #89114IcaroFilhoModerador
Bom dia,
Está correto sim. Parabéns
Só cuidado ao escrever métodos dentro de métodos pois pode dificultar a leitura.
-
-
4 de junho de 2022 às 23:52 #94798Matheus Vidal TenórioParticipante
FOI UM DIA, QUASE DOIS PARA FINALIZAR. TAVA QUASE NA LÓGICA, SABIA QUE TINHA COMO CONSIDERAR O ESPAÇO UM TEXTO, SÓ QUE ESTAVA ME TRAVANDO. NÃO CONSEGUIA LIGAR AS COISAS, VI O MODO DE FAZER E ENTENDI, MAS TAMBÉM FIZ OUTRO MÉTODO KKKKK.
programa
{inclua biblioteca Texto –> t
funcao inicio()
{
cadeia nome
inteiro ind
escreva(“Digite seu nome completo: “)
leia(nome)ind = t.posicao_texto(” “, nome, 0)
escreva(“Seu primeiro nome é “+ t.extrair_subtexto(nome, 0, ind))
}
}programa { inclua biblioteca Texto --> t funcao inicio() { cadeia nome, sobrenome escreva("Digite seu nome completo: ") leia(nome, sobrenome) escreva("Seu primeiro nome é "+ nome) } }
-
5 de junho de 2022 às 00:08 #94799Matheus Vidal TenórioParticipante
Desculpa ai guanabara, vacilo doido, tava quase lá.
-
-
22 de setembro de 2022 às 17:59 #102011DIEGO D AVILA DE MENEZESParticipante
EXERCÍCIO 012 – SEU NOME
programa { inclua biblioteca Texto --> txt funcao inicio() { // cadeia nome_comp inteiro pos // escreva (" {Exercício 012 - Seu nome }\n") // escreva ("Digite seu nome completo: ") leia (nome_comp) pos = txt.posicao_texto(" " , nome_comp ,0) // escreva ("Seu primeiro nome é: " + txt.extrair_subtexto(nome_comp,0,pos)) // } }
-
29 de novembro de 2022 às 11:16 #106048Pâmela OliveiraParticipante
gostaria de entender onde esta meu erro já fiz varias vezes e o retorno é vazio
inclua biblioteca Texto
–> txtfuncao inicio()
{
inteiro pos
cadeia nome
escreva(“Qual o seu nome? “)
leia (nome)
pos = txt.posicao_texto(“”,nome,0)
escreva(“Seu primeiro nome é: “+ txt.extrair_subtexto(nome,0,pos))
} -
29 de novembro de 2022 às 11:54 #106055Tutora JessicaModerador
Ola Pâmela,
Toda vez que for nos enviar seu código, selecione ele por completo e clique emCODE
, assim seu código já vem identado e mais fácil para visualização.No seu código, você precisa incluir a biblioteca e ao lado da palavra Texto, você deve colocar dessa forma: –> txt, veja abaixo:
inclua biblioteca Texto --> txt
Mesmo assim seu código vai retornar em branco, o que você vai precisar fazer é dar um espaço entre as aspas na variável pos, dessa forma:
pos = txt.posicao_texto(" ",nome,0)
Se atente sempre a esses pequenos detalhes que fazem toda a diferença.
-
2 de janeiro de 2023 às 16:40 #108139RONDINELI CONSONI DA SILVAParticipante
Boa tarde! Uma pequena dúvida. Na correção da aula Portugol ex12, o professor Guanabara comentou sobre colocar um nome entre as aspas.
Exemplo: pos = txt.posicao_texto(“Silva”, nome, 0)Fazendo alguns testes, apareceu as seguintes respostas:
1 – digitando o nome: 123 da Silva 4. Aparece a seguinte resposta: Seu nome é 123 da.
Observação: o nome Silva não aparece
1.1 digitando o nome Julia Tereza Silva. Aparece a seguinte resposta: Seu nome é Julia Tereza.
Observação: o nome Silva não aparece.2 – digitando o nome; Silva Romero. A resposta fica em branco.
Fiquei com a seguinte dúvida: o nome que está entre as aspas devem ou não aparecer?
Obrigado.
-
3 de janeiro de 2023 às 09:24 #108175Tutora JessicaModerador
Ola Rondineli , nos envie seu código por favor.
-
4 de janeiro de 2023 às 08:50 #108213RONDINELI CONSONI DA SILVAParticipante
Bom dia, Jéssica!
Segue abaixo o código solicitado:cadeia nome
escreva(“Digite seu nome competo: “)
leia (nome)
escreva (“\n”)inteiro pos = txt.posicao_texto (” “, nome, 0)
cadeia pnome = txt.extrair_subtexto(nome, 0, pos)escreva (“—–ANALISANDO—–\n”)
escreva (“Seu primeiro nome é: ” +pnome+ “\n”)
escreva (“Seu primeiro nome em letra maiúscula é: ” +txt.caixa_alta(pnome)+ “\n”) -
4 de janeiro de 2023 às 11:08 #108219Tutora JessicaModerador
Ola Rondineli,
Testei todos os seus exemplos e todos foram certinhos, pegando somente o primeiro nome, inclusive no (123 silva 4).
Você não me enviou seu código completo..
Você incluiu a biblioteca Texto?
No teste que fiz, coloquei todos os seus exemplos e outros tambem e todos deram correto. -
4 de janeiro de 2023 às 13:34 #108227RONDINELI CONSONI DA SILVAParticipante
Oi, Jéssica!
Coloquei a biblioteca Texto.
O programa funciona. Entendi a lógica do programa.
A minha dúvida é a seguinte: o nome que está entre ” ” (no caso eu usei o Silva), deve aparecer ou não (p/ mim não aparece)?Segue abaixo o programa completo:
programa
{
inclua biblioteca Texto –> txtfuncao inicio()
{
cadeia nome
escreva(“Digite seu nome competo: “)
leia (nome)
escreva (“\n”)inteiro pos = txt.posicao_texto (“Silva”, nome, 0)
cadeia pnome = txt.extrair_subtexto(nome, 0, pos)escreva (“—–ANALISANDO—–\n”)
escreva (“Seu primeiro nome é: ” +pnome+ “\n”)
escreva (“Seu primeiro nome em letra maiúscula é: ” +txt.caixa_alta(pnome)+ “\n”)}
} -
4 de janeiro de 2023 às 15:44 #108241Tutora JessicaModerador
Ola Rondineli, deixa eu ver se eu entendi.. Ali fica em branco para entrar no caso o primeiro nome que o usuário digitar, ali é para aparecer somente o que o usuário digitar.
Consegui explicar ? Senão tento uma melhor forma. Mas no vídeo o professor Guanabara também dá uma explicação boa . -
4 de janeiro de 2023 às 18:10 #108247RONDINELI CONSONI DA SILVAParticipante
Boa tarde, Jéssica! Dentro das aspas em branco, eu compreendi a explicação. Minha dúvida é com relação quando é colocado um nome dentro das aspas.
Exemplo: com aspas em branco
cadeia nome
inteiro pos
escreva (” { EXERCÍCIO 012 – Seu nome } \n”)
escreva (“Digite seu nome: “)
leia (nome) – JÉSSICA TUTORA
pos = txt.posicao_texto(” “, nome, 0)escreva (“Seu primeiro nome é: ” +txt.extrair_subtexto(nome, 0, pos)+ “\n”)
escreva (“Qual é a primeira letra do seu nome ” +txt.obter_caracter (nome, 0)+ “\n”)
escreva (“Quantos caracteres têm seu nome ” +txt.numero_caracteres (nome)+ “\n”)Resposta: Seu nome é Jéssica – ele me trouxe o seu primeiro nome. Esse eu entendi a explicação do professor.
Exemplo 2: nome dentro das ASPAS.
cadeia nome
inteiro pos
escreva (” { EXERCÍCIO 012 – Seu nome } \n”)
escreva (“Digite seu nome: “)
leia (nome)
pos = txt.posicao_texto(“Jessica”, nome, 0)escreva (“Seu primeiro nome é: ” +txt.extrair_subtexto(nome, 0, pos)+ “\n”)
escreva (“Qual é a primeira letra do seu nome ” +txt.obter_caracter (nome, 0)+ “\n”)
escreva (“Quantos caracteres têm seu nome ” +txt.numero_caracteres (nome)+ “\n”)RESPOSTA: Seu nome é:
– O nome preenchido dentro das aspas não aparece na tela para mim. Daí surge minha dúvida: o nome preenchido dentro das ASPAS deve aparecer ou não? Obrigado.
-
6 de janeiro de 2023 às 11:37 #108315Tutora JessicaModerador
Ola Rondinelli, acho que entendi.
Quando você coloca o nome dentro das aspas, você esta ditando que o nome terá que ser somente JESSICA(como no seu exemplo). Ele não vai aparecer pois você não colocou um escreva para ele.
Dentro dessas aspas, só podem ficar o nome que o usuário digitar, por isso fica em branco (você não dita um nome, o usuário que coloca) e com isso aparece o nome na tela, a partir do seu escreva.
Consegui te explicar? -
8 de janeiro de 2023 às 12:37 #108399RONDINELI CONSONI DA SILVAParticipante
Boa tarde, Jéssica!
Obrigado pelo retorno. Consegui compreender. -
21 de outubro de 2023 às 13:48 #125468Wesley PitaParticipante
Me ajudou muito!
Eu estava com o pensamento de criar um inteiro e cadeia diferentes, no final estava usando a biblioteca errada e sempre dava erro.
Crei o pos acima como sobrenome e deixei aberto, coloquei o Texto a esquerda certo, mas na hora de colocar nos lugares estava no local errado.
-
-
AutorPosts
- Você deve fazer login para responder a este tópico.