Módulo 1 – Exercício 12

Home Fóruns Programação Básica Módulo 1 – Exercício 12

Marcado: 

Visualizando 20 respostas da discussão
  • Autor
    Posts
    • #63987

      Boa tarde, não estou conseguindo concluir o exercício 12 do módulo 1, poderia me ajudar por favor??
      Muito Obrigado!!

    • #64047
      Tutora Mayla
      Mestre

      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ção extrair_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.

    • #67080

      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.
      • #67139
        Tutora Mayla
        Mestre

        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!

    • #67110
      IcaroFilho
      Moderador

      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 !!

    • #70007

      Boa Noite!

      Como seria para pegar o último nome?

      Obrigada.

      • #70071
        Tutora Mayla
        Mestre

        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 em Biblioteca>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.

    • #88452
      Douglas Silva
      Participante

      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.
      • #88459
        IcaroFilho
        Moderador

        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)

    • #89007

      Boa tarde, tudo bem?
      Gostaria de saber se a minha lógica está correta?
      programa
      {

      inclua biblioteca Texto –> txt
      funcao inicio()
      {
      cadeia nome_completo

      escreva(“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)))

      }
      }

      • #89114
        IcaroFilho
        Moderador

        Bom dia,
        Está correto sim. Parabéns
        Só cuidado ao escrever métodos dentro de métodos pois pode dificultar a leitura.

    • #94798

      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)
      	}
      }
      
    • #102011

      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))
      	//
      		
      	}
      }
      
    • #106048
      Pâmela Oliveira
      Participante

      gostaria de entender onde esta meu erro já fiz varias vezes e o retorno é vazio

      inclua biblioteca Texto
      –> txt

      funcao 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))
      }

    • #106055
      Tutora Jessica
      Moderador

      Ola Pâmela,
      Toda vez que for nos enviar seu código, selecione ele por completo e clique em CODE, 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.

    • #108139

      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.

    • #108175
      Tutora Jessica
      Moderador

      Ola Rondineli , nos envie seu código por favor.

    • #108213

      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”)

    • #108219
      Tutora Jessica
      Moderador

      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.

    • #108227

      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 –> txt

      funcao 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”)

      }
      }

    • #108241
      Tutora Jessica
      Moderador

      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 .

    • #108247

      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.

    • #108315
      Tutora Jessica
      Moderador

      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?

    • #108399

      Boa tarde, Jéssica!
      Obrigado pelo retorno. Consegui compreender.

    • #125468
      Wesley Pita
      Participante

      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.

Visualizando 20 respostas da discussão
  • Você deve fazer login para responder a este tópico.