Ir ao conteúdo

C linguagem portugol para c


Ir à solução Resolvido por Midori,

Posts recomendados

Postado

Galera, preciso de transformar um código em portugol para C.

Alguém poderia me dar uma luz?

algoritmo L6P03;
var
 literal : X;

procedimento CAB( literal : NOME );
início
 imprima("=============================================");
 imprima(" UFMG - Universidade Federal de Minas Gerais");
 imprima(" ICEx - Instituto de Ciencias Exatas");
 imprima(" Disciplina de Programacao de Computadores");
 imprima(" NOME: ",NOME);
 imprima("=============================================");
fim

início
 leia(X);
 CAB(X);
fim
program L6P03;
var
 X : string;
procedure CAB(NOME : string);
begin
 writeLn('=============================================');
 writeLn(' UFMG - Universidade Federal de Minas Gerais');
 writeLn(' ICEx - Instituto de Ciencias Exatas');
 writeLn(' Disciplina de Programacao de Computadores');
 writeLn(' NOME: ',NOME);
 writeLn('=============================================');
end;
begin
 write('Informe o nome: ');
 readLn(X);
 CAB(X);
end.
function L6P03;
X = input('Entre com um nome: ','s');
CAB(X);
function CAB(NOME);
fprintf(1,'=============================================\n');
fprintf(1,' UFMG - Universidade Federal de Minas Gerais\n');
fprintf(1,' ICEx - Instituto de Ciencias Exatas\n');
fprintf(1,' Disciplina de Programacao de Computadores\n');
fprintf(1,' Nome: %s\n',NOME);
fprintf(1,'=============================================\n');

 

Postado

@Eder Neumann

Eu sei algumas coisas, mas tem algumas linguagem em portugol ai que não estou conseguindo mudar.

#include<stdio.h>
int main()
{
 int nome;


 printf("=============================================");
 printf(" UFMG - Universidade Federal de Minas Gerais");
 printf(" ICEx - Instituto de Ciencias Exatas");
 printf(" Disciplina de Programacao de Computadores");
 printf(" NOME: ",NOME);
 printf("=============================================");
getch();
}

início
 leia(X);
 CAB(X);
fim
program L6P03;
char nome_cliente[] = "Fulano";
procedure CAB(NOME : string);
begin
 printf('=============================================');
 printf(' UFMG - Universidade Federal de Minas Gerais');
 printf(' ICEx - Instituto de Ciencias Exatas');
 printf(' Disciplina de Programacao de Computadores');
 printf(' NOME: ',NOME);
 printf('=============================================');
getch();
}
begin
 write('Informe o nome: ');
 readLn(X);
 CAB(X);
end.
function L6P03;
X = input('Entre com um nome: ','s');
CAB(X);
function CAB(NOME);
printf('=============================================\n');
printf(' UFMG - Universidade Federal de Minas Gerais\n');
printf(' ICEx - Instituto de Ciencias Exatas\n');
printf(' Disciplina de Programacao de Computadores\n');
printf(' Nome: %s\n',NOME);
printf('=============================================\n');v

 

  • Membro VIP
Postado

Olás. Agradeço por me mencionar. Esta tal linguagem portugol (que nem sabia que exista) me soa como algo caipira mas não no sentido de desmerecer claro. Afinal sou caipira também e com muito orgulho 😁. Mas infelizmente mesmo com isso em comum não me atraí a ela. 😪

 

Sobre teu desafio, o pouco que senti é:

-begin e end não fazem parte do c e sim do pascal ou algo assim. Portanto eles estão a confundir o meio de campo que já está confuso.

-leia(X); CAB(X); são funções externas ao main() que devem ser confeccionadas - não estão presentes

-CAB(NOME : string): me parece ser nativa de c++ ou de outra linguagem que me é estranha.

Ou seja, há confusões generalizadas.

Sugiro dar uma olhadela nos fundamentos da linguagem c e não queimar a etapa do hello world. Tente usar um compilador c online qualquer. A maioria deles te dá boas dicas. Depois disso, deves saber exatamente o que queres fazer. Minha bola de cristal supõe que você (ou seu professor) quer cadastrar nomes num sistema qualquer ou algo assim. Um ponto de partida pra isso seria um scanf() printf() do c ou cin cout do c++.

Gravar isso num arquivo banco de dados é outra história.

É o máximo que consigo te alcançar, ok?

 

  • Curtir 2
  • Haha 1
Postado

@Laryssa Silva

O que você postou, parte é Portugol, parte é Pascal.

Perceba que os códigos são visualmente semelhantes, até porque essa pseudo linguagem, o Portugol, surgiu como uma tradução da linguagem Pascal para a língua portuguesa.

 

59 minutos atrás, Laryssa Silva disse:

início leia(X); CAB(X);

Isso é meio autoexplicativo, ele está efetuando a leitura da variável X, que é do tipo literal, e imagino que corresponda à uma string em C.

CAB() é um procedimento, acho que corresponde à uma função em C, e o que ele faz é descrito entre início e fim no código.

 

59 minutos atrás, Laryssa Silva disse:

procedure CAB(NOME : string); begin

Mesma coisa, mas em Pascal.

 

59 minutos atrás, Laryssa Silva disse:

readLn(X); CAB(X);

Pascal também. Acho que a diferença de read() e readLn() é que esta segunda lê os espaços digitados também.

  • Curtir 3
Postado

Esse programa está com algum problema, ele começa em portugol e depois passa para Pascal, o começo e o procedimento CAB se repetem em portugol e Pascal, e a função leia está ausente.

 

Se fosse uma questão de vestibular ou concurso público, seria anulada por erro crasso da banca.

Postado

O exercícios é escrever um procedimento que gere um cabeçalho para um relatório. Esse
procedimento deve receber um literal (string, ou cadeia de caracteres) como parâmetro.

Eu fiz desse jeito, mas conforme a foto anexada, aparece uma mensagem no e o código não roda. @JorgeGus @Lucca Rodrigues @.if

 

#include<stdio.h>
#include<conio.h>

int main(void)
{
  char nome[100];
  
  printf("============================================ ");
  printf("UFOP – Universidade Federal de Ouro Preto");
  printf("ICEA – Instituto de Ciências Exatas e Aplicadas");
  printf("Disciplina de Programação de Computadores I");
  printf("Nome: Fulano de Tal:%s ", nome);
  printf("============================================ ");
  
  
getch();
return 0;
  
}

image.png.79a72d40a8bb08e465ffcf53509c92db.png

Postado

@Laryssa Silva

3 minutos atrás, Laryssa Silva disse:

O exercícios é escrever um procedimento que gere um cabeçalho para um relatório.

Você não fez isso, colocou tudo dentro da main().

 

4 minutos atrás, Laryssa Silva disse:

o código não roda.

Roda. Mas você não inicializou a string nome com nada.

E usou getch() pra que? Não faz sentido usar nesse caso.

image.thumb.png.f948b7c15df11589e0df2e813767899a.png

  • Curtir 1
Postado

'Portugol' faz os exercícios introdutórios à lógica de programação mais simples, amistoso porque os comandos são fáceis, de algoritmo estruturado ou quase códigos em Português. Logo tem isto:

algoritmo "L6P03";
//
//
var
 literal : X;

procedimento CAB( literal : NOME );
inicio
 imprima("=============================================");
 imprima(" UFMG - Universidade Federal de Minas Gerais");
 imprima(" ICEx - Instituto de Ciencias Exatas");
 imprima(" Disciplina de Programacao de Computadores");
 imprima(" NOME: ",NOME);
 imprima("=============================================");
fim

início
 leia(X);
 CAB(X);
fim

fimalgoritmo

Todo resto está fora do espectro d'Portugol e fica melhor se deixar em outra discussão. Agora... responda às perguntas diante disso: quais são os comandos, o que fazem? E com isso encontrar seus correspondentes na linguagem C.

  • Curtir 2
Postado

O que eu entendi desse código foi o seguinte:

  1. Ler uma string.
  2. Passar essa string para uma função.
  3. Imprimir um monte de coisa nessa função.

Seguindo esse fluxo, comece com o simples:

  1. Declare uma string dentro de main.
  2. Leia essa string do teclado.
  3. Crie uma função que receba uma string como parâmetro.
  4. De volta ao main, chame a função criada e passe a string como argumento.
  5. Dentro da função criada, você imprime esse monte de coisa aí que o exercício pede.

Procure no Google: "c passar string para funcao".

 

Logo nos primeiros resultados, você encontrará um código bem simples de como passar uma string para dentro de uma função.

Spoiler: Você vai ter que usar ponteiros.

 

Procure também: "c ler string do teclado".

 

O código será simplesinho, você vai ver.

Dica: Se você achar um código usando scanf, beleza. Mas se encontrar um usando fgets, melhor ainda.

 

Outra dica: sempre que usar o printf, termine a string com um '\n', isso vai passar o cursor para a linha de baixo, impedindo as frases de ficarem uma na frente da outra.

  • Curtir 2
Postado

Meu código ficou assim:

 

#include<stdio.h>
#include<conio.h>

int main(void)
{
  char nome[13]="Fulano de tal";
  
  printf("============================================ \n");
  printf("UFOP – Universidade Federal de Ouro Preto\n");
  printf("ICEA – Instituto de Ciências Exatas e Aplicadas\n");
  printf("Disciplina de Programação de Computadores I\n");
  printf("Nome:%s \n", nome);
  printf("============================================ ");
  
  
getch();
return 0;
  
}

 

  • Triste 1
Postado

@Laryssa Silva    seu código corrigido , poderia ser assim ,

#define _CRT_SECURE_NO_WARNINGS                                       // para usar scanf no visual studio
#include<stdio.h>
#include<conio.h>
#define getch() _getch()                                              // para usar getch no visual studio
char procedimento_com_LiteraL(char *nom)                              // o procedimento
{
	printf("\n\n");
	printf("============================================\n");         //  o cabecalho
	printf("UFOP - Universidade Federal de Ouro Preto\n");
	printf("ICEA - Instituto de Ci%cncias Exatas e Aplicadas\n",136); // para escrever com acentos
	printf("Disciplina de Programa%c%Co de Computadores I\n",135,198);// para escrever com acentos
	printf("Nome: Fulano de Tal : %s\n", nom);
	printf("============================================\n");
	return *nom;                                                      // aqui não vai retornar nada , por que é um vetor de char
}
int main()
{
	char nome[100];
	printf("Nome Literal para enviar por par%Cmetro ao procedimento ",131);
	scanf("%s", nome);                                                //  string não precisa do &

	procedimento_com_LiteraL( nome );                                 // chama e envia um literal ou string 
    	                                                                   
	printf("\t\tTecle !\n\n\n");
	getch();
	return 0;
}

 

  • Curtir 3
Postado

@devair1010 

59 minutos atrás, devair1010 disse:


#define _CRT_SECURE_NO_WARNINGS // para usar scanf no visual studio

Não só scanf(), definimos a macro de pré-processador _CRT_SECURE_NO_WARNINGS para desativar a reprovação de funções as quais possuem "versões seguras", havendo problemas relacionados a portabilidade ou compatibilidade destas. De qualquer forma, neste caso é só pra evitar a reprovação da scanf() mesmo.

 

59 minutos atrás, devair1010 disse:


return *nom; // aqui não vai retornar nada , por que é um vetor de char

Como não precisa retornar nada, poderia deixar a função do tipo void.

 

59 minutos atrás, devair1010 disse:


printf("\t\tTecle !\n\n\n");
getch();

Se for só pra fazer o programa pausar ali, então pode chamar WaitForSingleObject() sem precisar ler nada, a menos que esteja esperando por uma entrada específica como um Enter, daí poderia usar PeekConsoleInput() e ver o que tem pra ler, sem retirar do buffer.

  • Curtir 2
  • Solução
Postado

Você pode criar o procedimento void já que ele só é usado para imprimir a mensagem com o nome passado como argumento.

 

Para pegar a string acho melhor usar fgets que já limita a quantidade de caractere e prevê espaço entre as palavras. O programa poderia ser algo assim,

 

#include <stdio.h>

void cab(char *nome){
    printf(
        "=============================================\n"
        " UFMG - Universidade Federal de Minas Gerais\n"
        " ICEx - Instituto de Ciencias Exatas\n"
        " Disciplina de Programacao de Computadores\n"
        " NOME: %s"
        "=============================================\n",
        nome
    );
}

int main(){
    char nome[100];
    
    printf("Informe o nome: ");
    fgets(nome, 100, stdin);
    cab(nome);

    return 0;
}

 

  • Curtir 2
Postado

@Laryssa Silva Esqueça a getch() e o cabeçalho conio.

Por vezes, vejo pessoas usando fgetc(), getchar(), etc, para pausar, sendo que o propósito dessas funções é ler... Por isso tinha dito isso:

Em 23/02/2021 às 15:02, Lucca Rodrigues disse:

Se for só pra fazer o programa pausar ali, então pode chamar WaitForSingleObject() sem precisar ler nada

Se quiser usar, ok.

  • Curtir 2
Postado

@Laryssa Silva    nesses compiladores online costumam se dar muitos erros que não se dariam em um compilador real instalado fisicamente  no pc , pois neles geralmente faltam algumas bibliotecas , como a conio ,  e dai é que vem esse erro ,  então use um compilador real , ou  então não use certas bibliotecas  que eles não tem .

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!