God of Games – Sistema Interno de Estoque e Vendas (2)

Bom, esse sistema inicialmente não foi criado para uma loja, tive que fazer várias adaptações no mysql e json. Consegui terminar o estoque, porém ainda estou com um problema pois não acho mascara em jquery para campos input, existe, mas não estou conseguindo implementar nesse sistema, talvez até a noite eu tenha concertado isso, para quem estiver com o mesmo problema tem uma solução simples e feia é o placeholder, procure no google, é em html5 junto com a tag do input.

Teoricamente, a parte de estoque foi a mais complicada, vendas copia estoque e adiciona pouco informações, agora estou em busca de um plugin bem legal para implementar relatórios online e pdf.

Lembrado que o sistema está usando ajax, ou seja, se você tiver algum problema… reload na página e está tudo novo. Até agora eu utilize as “linguagens”: HTML5, JavaScript, Mysql, Json, CSS3 e bibliotecas : Jquery, Datatables , MASK (ARRRGHHH),AJAX(jquery)…

 

 

Um print, por enquando …

[]´s

Inverter Letras – Assembly x86

Para começar bem de vagar, trouxe esse exemplo para inverter 3 letras  com input do usuário.

 

 

; Programa para inverter caracteres
; Por: Eduardo Bertin
; www.eduardobertin.com.br
;
; Esse é um modelo simples para adicionar três caracteres no DADOS
; já préviamente invertida, e depois só imprimi
; Com esse código pode fazer input de quantos caracteres necessário
; basta setar nas variáveis 
TITLE exec1

.MODEL SMALL
.STACK 100h

.DATA
	
	MSGINI_1	DB	0Ah,0Dh,"----------------------------by edubertin---------------$"
	MSGINI_2	DB	0Ah,0Dh,"Inverter 3 caracteres$"
	MSGINI_3	DB	0Ah,0Dh,"-------------------------------------------------------$"
	MSGENT_1	DB	0Ah,0Dh,"Digite o $"
	MSGENT_2	DB	" caracter:$"
	MSGFIM_1	DB	0Ah,0Dh,"Invertida:$"
	DADOS		DB	4 DUP("$")
	
.CODE

MAIN:

MOV	AX,@DATA
MOV	DS,AX

INICIO:

MOV CX,3

MOV	DI,3

MOV BL,48

MOV	AH,9
LEA	DX,MSGINI_1
INT	21h

MOV	AH,9
LEA	DX,MSGINI_2
INT	21h

MOV	AH,9
LEA	DX,MSGINI_3
INT	21h

LOOPENTRADA:

DEC DI
INC BL

MOV	AH,9
LEA DX,MSGENT_1
INT 21h

MOV AH,2
MOV DL,BL
INT	21h

MOV AH,9
LEA DX,MSGENT_2
INT 21h

MOV AH,1
INT 21h
MOV	DADOS[DI],AL
INT 21h

loop LOOPENTRADA

MOV AH,9
LEA DX,MSGINI_3
INT 21h

MOV	AH,9
LEA DX,MSGFIM_1
INT	21h

MOV	AH,9
LEA DX,DADOS
INT	21h

MOV	AH, 4Ch
INT	21h

END

Assembly x86 – Introdução

Saudações,

Irei começar uns pots sobre assembly, é uma matéria que estou revendo e vou aproveitar para chegar em alguns pontos importantes sobre ela. É uma linguagem de maquina, portanto, para programadores acostumados a linguagem de alto nível, ela pode ser um pouco mais confusa.

 

Para você começar a escrever um código em Assembly x86 os requisitos são:

Windows 7 32bits (quem tiver o 64 bits, faça o download do dosbox).

TASM – Turbo Assembly

TLINK – Linkar o Objeto

Lembrando que em qualquer outro OS você poderá codificar com assembly, mas será necessária o uso do DOSBOX.

1- Escreva seu código em assembly no notpad por exemplo e salve como: “meuprojeto.asm”.

2- Coloque tanto o tasm quanto o tlink dentro da pasta onde você salvou seu projeto.

3- Em executar, cmd, procure o diretório onde está os 3 itens acima mencionados.

4- Dentro do diretório digite: tasm meuprojeto.asm (irá criar o objeto).

5- No mesmo diretório digite: tlink meuprojeto.obj (Linkando seu objeto).

6- Pronto, se não ter erros de expressão eu seu código ele irá executar.

7- Para executar digite apenas o nome do seu projeto como : meuprojeto.

 

Criei um rar com o tasm o tlink para download aqui.

Por enquanto é só, em breve postarei alguns programas para teste.

[]´s

Ordenação de Matrizes em C

Devido a frustração em uma prova de c, sobre matrizes, trouxe a solução, esse programinha faz ordenação crescente e decrescente em uma matriz, por linha, coluna e diagonal (1 e 2).

Em breve estarei trazendo um programa no qual esse conceito é funcional:

 

// Eduardo Bertin
// www.eduardobertin.com.br
// Esse código foi feito inteiro do 0, sem nenhum script como base
//
// 1- Inserir matriz dinamica
// 2- Ordernar crescente e decrescente uma linha
// 3- Ordernar crescente e decrescente uma coluna
// 4- Ordernar crescente e decrescente a diagonal 1
// 5- Ordernar crescente e decrescente a diagonal 2
//
//

#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
#include "windows.h"

void inserir_matriz(int, int);
void interfacem(int);
void ordena_matriz(int, int);

int matriz[50][50];
int imax_global = 0;
int jmax_global = 0;


void ordena_matriz(int ord,int ij){

int aux_matr = 0;

ij--;

		switch(ord){
			case 1:

				for(int i=0;i<imax_global;i++){

				for(int j=0;j<jmax_global;j++){
				
					if(matriz[ij][j] > matriz[ij][j+1] && matriz[ij][j+1] != 0){
					
						aux_matr = matriz[ij][j+1];
						matriz[ij][j+1] = matriz[ij][j];
						matriz[ij][j] = aux_matr;
					
					}
												
				}
			}

			interfacem(1);
			break;
			case 2:

				for(int i=0;i<imax_global;i++){

				for(int j=0;j<jmax_global;j++){
				
					if(matriz[ij][j] < matriz[ij][j+1] && matriz[ij][j+1] != 0){
					
						aux_matr = matriz[ij][j+1];
						matriz[ij][j+1] = matriz[ij][j];
						matriz[ij][j] = aux_matr;
					
					}
												
				}
			}

			interfacem(1);
			break;
			case 3:

				for(int i=0;i<imax_global;i++){

				for(int j=0;j<jmax_global;j++){
				
					if(matriz[j][ij] > matriz[j+1][ij] && matriz[j+1][ij] != 0){
					
						aux_matr = matriz[j][ij];
						matriz[j][ij] = matriz[j+1][ij];
						matriz[j+1][ij] = aux_matr;
					
					}
												
				}
			}

			interfacem(1);
			break;
			case 4:
				for(int i=0;i<imax_global;i++){

				for(int j=0;j<jmax_global;j++){
				
					if(matriz[j][ij] < matriz[j+1][ij] && matriz[j+1][ij] != 0){
					
						aux_matr = matriz[j][ij];
						matriz[j][ij] = matriz[j+1][ij];
						matriz[j+1][ij] = aux_matr;
					
					}
												
				}
			}

			interfacem(1);
			break;
			case 5:
				ij++;
				for(int teste=0;teste<imax_global;teste++){
				
					for(int i=0;i<imax_global;i++){

						for(int j=0;j<jmax_global;j++){
							if(ij == 1){
								if(matriz[i][j] > matriz[i+1][j+1] && matriz[i+1][j+1] != 0){
									if(i==j){
							
										aux_matr = matriz[i+1][j+1];
										matriz[i+1][j+1] = matriz[i][j];
										matriz[i][j] = aux_matr;
									}						
								}
							}		
							if(ij == 2){
								if(matriz[i][j] < matriz[i+1][j-1] && matriz[i+1][j-1] != 0){
										if((i+j)==(imax_global-1)){											
											aux_matr = matriz[i+1][j-1];
											matriz[i+1][j-1] = matriz[i][j];
											matriz[i][j] = aux_matr;
										}
														
								}
							}
						}
					}
				}
			interfacem(1);
			break;
			case 6:
				ij++;
				for(int teste=0;teste<imax_global;teste++){
				
					for(int i=0;i<imax_global;i++){

						for(int j=0;j<jmax_global;j++){
							if(ij == 1){
								if(matriz[i][j] < matriz[i+1][j+1] && matriz[i+1][j+1] != 0){
									if(i==j){
							
										aux_matr = matriz[i+1][j+1];
										matriz[i+1][j+1] = matriz[i][j];
										matriz[i][j] = aux_matr;
									}						
								}
							}		
							if(ij == 2){
								if(matriz[i][j] > matriz[i+1][j-1] && matriz[i+1][j-1] != 0){
										if((i+j)==(imax_global-1)){											
											aux_matr = matriz[i+1][j-1];
											matriz[i+1][j-1] = matriz[i][j];
											matriz[i][j] = aux_matr;
										}
														
								}
							}
						}
					}
				}
			interfacem(1);
			break;
		default:
			printf("Opcao errada\n");
			Sleep(2000);
			interfacem(1);
		break;
	
		}
}

void inserir_matriz(int imax, int jmax){

	imax_global = imax;
	jmax_global = jmax;
	
	fflush(stdin);
	system("cls");
	printf("--------------------------------------------------------------------\n");
	printf("Digite os numeros da matriz:\n");

	for(int i=0;i<imax;i++){
		
		for(int j=0;j<jmax;j++){

			printf("Digite a posicao [%d][%d]:", i, j);
			scanf("%d", &matriz[i][j]);
			
		
		}
		printf("\n");
	
	}

	interfacem(0);

}

void interfacem(int opc){
	
	fflush(stdin);
	system("cls");
	int opc_case0;
	int opc_case1;
	int opc_fc;

	switch(opc){
	
	case 0:
		printf("-----------------------------------by edubertin-------------\n");
		printf("Matrizes 5x5\n\n");
		printf("1- Inserir Matriz\n");
		printf("2- Ordenar Matriz\n");
		printf("Digite a opcao desejada:\n");
		scanf("%d", &opc_case0);

			switch(opc_case0){
				case 1:
				inserir_matriz(5,5);
				break;
				case 2:
				if(imax_global != 0){
				interfacem(1);
				} else {
				printf("Voce necessita inserir a matriz\n");
				Sleep(2000);
				interfacem(0);				
				}
				break;
				default:
					interfacem(0);
				break;
			}
	break;	
	case 1:
		printf("------------------------------------------------\n");
		for(int i=0;i<imax_global;i++){
			
			
			for(int j=0;j<jmax_global;j++){
			
				printf("|  %d  |", matriz[i][j]);
			
			}
		
			printf("\n");
				
		}
		
		printf("------------------------------------------------\n");
		printf("1- Ordernar crescente uma linha\n");
		printf("2- Ordernar decrescente uma linha\n");
		printf("3- Ordernar crescente uma coluna\n");
		printf("4- Ordernar decrescente uma coluna\n");
		printf("5- Ordernar crescente diagonal\n");
		printf("6- Ordernar decrescente diagonal\n");
		printf("Escolha sua opcao:");
		scanf("%d", &opc_case1);
		
		switch(opc_case1){
		
			case 1:
				printf("Qual linha?:\n");
				scanf("%d", &opc_fc);
				ordena_matriz(1,opc_fc);
			break;
			case 2:
				printf("Qual linha ?:\n");
				scanf("%d", &opc_fc);
				ordena_matriz(2,opc_fc);
			break;
			case 3:
				printf("Qual coluna?\n");
				scanf("%d", &opc_fc);
				ordena_matriz(3,opc_fc);
			break;
			case 4:
				printf("Qual coluna?\n");
				scanf("%d", &opc_fc);
				ordena_matriz(4,opc_fc);
			break;
			case 5:
				printf("Qual diagonal?\n");
				scanf("%d", &opc_fc);
				ordena_matriz(5,opc_fc);
			break;
			case 6:
				printf("Qual diagonal?\n");
				scanf("%d", &opc_fc);
				ordena_matriz(6,opc_fc);
			break;
			default:
				interfacem(1);
				printf("Opcao errado\n");
			break;

		
		}

		system("pause");


	break;
	default:
		system("cls");
		printf("Opcao errada\n");
		Sleep(1000);
		interfacem(1);
	break;
		
	}

}

int main()
{

	interfacem(0);


	return 0;
}

Strings e Moda

Um programinha em c que fiz para estudar a manipulação de string e moda

 

 

// Eduardo Bertin
// http:\\www.eduardobertin.com.br
// Contador de Strings: Iniciando com o basico.
// 1- fase: Fazer User interface. (pronto)
// 2- fase: implementar contagem de letras. (pronto)
// 3- fase: implementar contagem de palavras. (pronto)
// 4- fase: implementar moda exibindo qual do char mais exibido. (pronto)
// 5- fase: implementar moda com estastistica em ordem alfabeticas utilizando um array dentro de struct. (pronto)
// 6- fase: implementar moda com estastistica em ordem de vezes.(implementando)
// 7- fase: Criar painel com informações de menor e maior numero de vezes por letra e palvras.(implementando)
//----------------------------------------------------------------------------------------------------------------
// Versão Beta
// Estudos sobre Strings e Moda
//----------------------------------------------------------------------------------------------------------------
#include "stdafx.h"
#include "stdlib.h"
#include "string.h"
#include "stdio.h"


// Definindo funções

void interf();
void contadorLetra();
void contadorPalavra();
void modaLetras();
void modaStat();


// Variaveis globais
char texto[200];


// Moda entre letras com estatistica
// Irá exibir quais letras foram usadas no texto e quantas vezes ela
// foi repetida. eu usei 256 para poder conver int em char e char em int
// ou seja na posição que eu guardar as vezes essa posicao convertida em
// em char será a própria letra, evitando o uso de 2 array.
void modaStat(){

	struct letras{
		int vezes[256];   // 256 posições
	} letr;

	int modaCont = 0, modaRef= 0;
	char rtn;
	
	system("cls");
	fflush(stdin);

	for(int i = 0;i<256;i++)
	{
		letr.vezes[i] = 0;  // zerando todas posições
	}

	printf("-----------------------------------------------------\n");
	printf("Digite o texto de no maximo 200 letras:\n(Enter para terminar)\n");
	gets(&texto[0]);


	for (int i=0;i<strlen(texto);i++)
	{
		
		for(int j=0;j<strlen(texto); j++)
		{

				if(texto[i] == texto[j]){
					modaCont++;
		     }
		}
		
		letr.vezes[(int)texto[i]] = modaCont;   // Ficará letr.vezes[numerodaletraemascii] = modaCont
		modaCont = 0;
		
	}
	printf("\n");
	printf("-----------------------------------------------------\n");

	for (int i = 0;i<256; i++){
		
		if(letr.vezes[i] != 0){
		printf("Letra \"%c\" , %d vezes.\n", (char)i, letr.vezes[i]);  // Ficará Letra convertida pelo char i e a posicao de i.
		}
	}
	printf("-----------------------------------------------------\n");
	printf("\n(Deseja denovo ? s/n)");
	gets(&rtn);
	
	switch (rtn){

	case 's':
		modaStat();
	case 'S':
		modaStat();
	default:
	    interf();
		
	}
}


// Moda entre as letras
// Moda e qual letra mais se repetiu no texto
// São dois for com um contador, lembrando que essa função ainda
// não funciona empate, provavelmente ficará o ultimo como maior
void modaLetras()
{
	int modaCont = 0, modaRef= 0;
	char modaLetra[20] = "";
	char rtn;
	
	system("cls");
	fflush(stdin);

	printf("-----------------------------------------------------\n");
	printf("Digite o texto de no maximo 200 letras:\n(Enter para terminar)\n");
	gets(&texto[0]);


	for (int i=0;i<strlen(texto);i++)             // Para pegar todas as strings
	{
		
		for(int j=0;j<strlen(texto); j++)         // Para comparar todas as strings
		{
			if(texto[i] == texto[j]){             // Se ambos for igual guarda o numero
					modaCont++;
		     }
		}
		
		if(modaCont > modaRef){
		modaRef = modaCont;	                      // Se for a maior guarda ou vai para outra
		modaLetra[0] = texto[i];

		}
		modaCont = 0;
		
	}
	printf("\n");
	printf("-----------------------------------------------------\n");
	printf("Repetiu %d vezes a letra \"%c\".(Deseja denovo ? s/n)", modaRef, modaLetra[0]);
	gets(&rtn);
	
	switch (rtn){

	case 's':
		modaLetras();
	case 'S':
		modaLetras();
	default:
	    interf();
		
	}

}

// Contador de palavras
// Essa função procura todos os espaços se supõe quantas palavras são.
// No final incremento a contaPalavra para ficar o mais realistico.
void contadorPalavra(){

	int contaPalavra = 0;
	char rtn;
	system("cls");
	fflush(stdin);

	printf("-----------------------------------------------------\n");
	printf("Digite o texto de no maximo 200 letras:\n(Enter para terminar)\n");
	gets(&texto[0]);
	
	for (int i=0;i<strlen(texto);i++)
	{
		if(texto[i] == ' '){      // a cada espaço, incrementa a variável
			contaPalavra++;		 
		}

	}
	
	contaPalavra++; // faz mais um incremento para a palavra do final.
	
	printf("\n");
	printf("-----------------------------------------------------\n");
	printf("Seu texto possui %d palavras. (Deseja denovo ? s/n)", contaPalavra);
	gets(&rtn);
	
	switch (rtn){  // switch para voltar
	case 's':
		contadorPalavra();
	case 'S':
		contadorPalavra();
	default:
	    interf();
		
	}
}

// Contador de Letra 
// Função que le todos os caracteres digitados, retira os espaços
// e conta quantas letras tem
void contadorLetra(){

	int contaLetra = 0;
	char rtn;
	system("cls");
	fflush(stdin);

	printf("-----------------------------------------------------\n");
	printf("Digite o texto de no maximo 200 letras:\n(Enter para terminar)\n");
	gets(&texto[0]);
	
	for (int i=0;i<strlen(texto);i++)
	{
		if(texto[i] != ' '){   // Para não contar os espaços
			contaLetra++;
		}
	}
	
	printf("\n");
	printf("-----------------------------------------------------\n");
	printf("Seu texto possui %d letras. (Deseja denovo ? s/n)", contaLetra);
	gets(&rtn);
	
	switch (rtn){  // switch para voltar

	case 's':
		contadorLetra();
	case 'S':
		contadorLetra();
	default:
	    interf();
		
	}

}

// interf - User interface do programa
void interf()
{
		int opc = 0;
		system("cls");
		fflush(stdin);

		// Interface
		printf("-----------------------------------------------------\n");
		printf("-                                                   -\n");
		printf("-                                                   -\n");
		printf("-  1- Contador de Letra                             -\n");
		printf("-  2- Contador de Palavras                          -\n");
		printf("-  3- Moda Entre as Letras                          -\n");
		printf("-  4- Moda com estatistica                          -\n");
		printf("-                                                   -\n");
		printf("-                                                   -\n");
		printf("------------------------------------by edubertin-----\n");
		printf("Selecione a opcao desejada:");
		scanf("%d", &opc);

		// Switch para chamar as funções
		switch(opc){

		case 1:
			contadorLetra();
			break;
		case 2:
			contadorPalavra();
			break;
		case 3:
			modaLetras();
			break;
		case 4:
			modaStat();
		default:
			interf();
		}
}

// Main - inicialização do programa
int main()
{
		system("cls");
		fflush(stdin);
		interf();  // chama interface
		return 0;
}

// Eduardo Bertin - www.eduardobertin.com.br