Ir ao conteúdo
  • Cadastre-se

C Passar de Visualg para linguagem C


GUSTAVO MELLO10

Posts recomendados

Preciso passar o código abaixo para a linguagem C :

Algoritmo "simulaçao de disputa da thread"

Var

// Seção de Declarações das variáveis   

        randon: vetor[0..2] de inteiro

inst1, inst2, inst3: inteiro

i: inteiro

 

Inicio

// Seção de Comandos, procedimento, funções, operadores, etc... 

 

i <- 1

enquanto i < 20 faca

randon[0] <- 1

randon[1] <- 2

randon[2] <- 3

inst1 <- Randi (3)

inst2 <- Randi (3)

inst3 <- Randi (3)

 

escreval (randon[inst1])

escreval (randon[inst2])

escreval (randon[inst3])

i <- i+1

fimenquanto

fimalgoritmo

 

  • Amei 1
Link para o comentário
Compartilhar em outros sites

Olá... Olha, no tempo que fiz faculdade eu vi Portugol. Não conhecia esse visualg. E não cheguei a ver threads em portugol. Pra mim é novidade. Mas olha o que eu entendi ai acima...

 

// aqui as libs que o compilador acusar falta

int main()
{
  	int inst1;
  	int inst2;
  	int inst3;
    // sem isso aqui, o programa vai 
	// iniciar escolhendo sempre a mesma sequencia.
	// comente e descomente para ver o que acontece.
	// gerador de aleatoriedade ou simplesmente semente:
	srand ( time(NULL) );
  
  
  	int i=1; // i recebe 1// mesmo que i<-1
	while(i<20)
    {
      randon[0]=1;
      randon[1]=2;
      randon[2]=3;
      inst1=rand()%2;
      inst2=rand()%2;
      inst3=rand()%2;
      printf("%i\n", randon[inst1] );
      printf("%i\n", randon[inst2] );
      printf("%i\n", randon[inst3] );
      i++;
    }
	return 0;
}


Se instN é inteiro, então não pode ser thread... na verdade isso deve significar outra coisa, mas thread, como em C, não é.
Agora, se está procurando um exemplo simples de thread, isso pode te dar uma ideia:


#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <pthread.h>
#include <string.h>
  
typedef struct
{
	int *isRunning;
	int numero;
	
} Data;

// The function to be executed by all threads
void *myTh(void *vargp)
{
	// Store the value argument passed to this thread
	Data *myid = (Data *)vargp;
  
	for(int j=0; j<3; j++)
	{
		char sh = *myid->isRunning;
			
		if( sh=='q' ) //printf("\n=Saindo... Foi digitado: %c\n", sh );
		{
			printf("\n=Parando thread... \nFoi digitado: %c",  *myid->isRunning );
			break;
		}

		// Print the argument, static and global variab
		printf("\n\nThread %i linha %i", myid->numero, j );
		printf("\nisRunning : %c",  *myid->isRunning );
		sleep(rand()%10);
	}
	printf("\n" );
}

  
int main()
{
	pthread_t tid;
	char ch='s';

	Data *data;
	for (int i=0; i<3; i++)
	{
		data[i].isRunning = &ch;
		data[i].numero = i;
		pthread_create(&tid, NULL, myTh, (void *)&data[i]);
	}
	printf("iniciado! Esperando o comando para para-lo:\n");

	while(ch!='q')
	{
		//sleep(5);
		printf("\nDigite 'q' quando quiser sair...\n" );
		scanf("%c", &ch);
		//fgets(ch, sizeof(char*), stdin);
	}


	// call this when you are not ready to cancel the thread 
	//pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, NULL);

	// call this when you are ready to cancel the thread 
	pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL);

	// Waiting for the created thread to terminate
	//pthread_join(tid, NULL);
  
	printf("\nDesligando tudo. \nTerminando threads e devolvendo comando.\n");
  
	pthread_exit(NULL);
	return 0;
}






 

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

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!