Módulo 1 – Exercício 12

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

Marcado: 

Visualizando 21 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 3 anos, 7 meses atrás por IcaroFilho. Razão: formatando código do aluno
      • Esta resposta foi modificada 3 anos, 7 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, 9 meses 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.

    • #141021
      kauã rafael
      Participante

      pessoal me fiz o desafio de colocar a primeira letra do nome em maiúsculo MAS EU NÃO ESTOU CONSEGUINDO, quando achei que tinha dado certo, não foi . vou mandar o código pra vocês

      programa
      {

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

      escreva(“Digite seu nome completo: “)
      leia(nome)

      inteiro pos = txt.posicao_texto(” “, nome, 0)
      cadeia pnome = txt.extrair_subtexto(nome, 1, pos)
      cadeia ppnome = txt.extrair_subtexto(pnome, 0, 0)

      escreva(“Seu primeiro nome é “+ txt.caixa_alta(ppnome)+ pnome)

      }
      }

      • #141081
        Tutora Jessica
        Moderador

        Olá Kaua, trouxe sua duvida para uma ja existente do mesmo módulo e exercício, acima você encontra ótimas explicações sobre esse mesmo exercício, dê uma olhada em casa um deles para tentar resolver esse exercício, caso não consiga resolver só retornar ao fórum que iremos tentar lhe ajudar melhor 🖖🏼

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