sub simb;
sub nome;
sub ope;
sub mem;
sub finaly;
sub mot;
sub volt1;
sub volt;
sub volt2;
sub volt3;
sub volt4;



sub simb{
	    printf(">>> ");  
	    $tok2 = <stdin>;
	    $tok = '^(\-\>)$';
	    if($tok2 =~ m/$tok/){
			nome;
			}else{printf("O Simbolo ->[SETA] Inicializa a Variavel\n\n");
			volt1;
			}
	}
	
sub nome{
	    printf(">>> ");
	    $num = <stdin>;
		$num2 = '^([a-z]{1,100}|[a-z]{1,100}\d{1,100})$';
		if($num =~ m/$num2/){
			ope;
			}else{printf("Nomes de Variaveis sao com letras Minusculas,\nou com letras Minusculas e com digitos Numericos no final do nome da variavel. \nDigite Novamente o Nome ,e continue a operacao\n->\n");
			volt2;
			}
	}	
	
sub ope{
		printf(">>> ");
	    $op = <stdin>;
		$op2 = '^(\=)$';
		if($op =~ m/$op2/){
			mem;
			}else{printf("O Sr. esqueceu do operador de atribuicao [=]\n\n");
			 volt;
			}
	
	
	}
	
sub mem{
		printf(">>> ");
	    $memory = <stdin>;
		$memory2 = '^(\d{1,100}|\w{1,100})$';
		if($memory =~ m/$memory2/){
			finaly;
			}else{printf("Os Valores de Variaveis poderao ser valores inteiros e caracters normais,\nNao especiais.\n");
			volt4;
			}
	}		
	  
sub finaly{
		printf(">>> ");
	    $ss = <stdin>;
		$ss2 = '^(\;)$';
		if($ss =~ m/$ss2/){
			
		   	$memory;#var criada
		   
			}else{printf("O Sr. esqueceu do ponto e virgula [;]\n\n");
			volt3;
			}
	
}	   

sub exib{
			printf(">>> ");
			$pr = <stdin>;
			$pr2 = '^(\*)$';
			if($pr=~m/$pr2/){
				
				
				$pa = $memory;
				printf("\n\n---->");
				printf($pa);
				
		
			}else{
				printf("Informe o Simbolo de asterisco [*] para Exibir o valor da variavel\n\n");
				printf("::\t");
			mot;
			}
	
	}



sub mot{exib;}
sub volt{ope;}
sub volt1{simb;}
sub volt2{nome;}
sub volt3{finaly;}
sub volt4{mem;}



printf("\t\t_______________________________________\n");
printf("\t\tRotina de Inicializacao de uma Variavel\n");
printf("\t\t_______________________________________\n\n\n");
printf("--Basta Digitar a [->] (SETA);\n--nome_da_variavel; \n--[=] (IGUAL);\n--numero_decimal OU carateres simples; \n--[;](PONTO E VIRGULA). \n\n");
printf("***OBS::Digite ENTER depois de cada comando para prosseguir.\n");
printf("________________________________________________________________\n\n");



simb;
exib;

system("pause");

