Author Archive

Segundo VideoCast – Continuação de Ponteiros

Nesse segundo videocast mostro um pouco mais sobre a Continuação de Ponteiros, Ponteiros de Ponteiros, Passagem de Valor por referencia e algo sobre o argc, argv[].

Preparem-se. 30 minutos ;)

Ponteiros (2a parte) from Carlos Eduardo Silva on Vimeo.

Entendando o que é um “loop infinito”

O exemplo abaixo mostra de maneira clara como um programa de computador pode entrar em um loop infinito, apesar de ser apenas uma piada… isso acontece!

Piadex:

Para quem não conhece o conceito de loop, aqui fica claro o que
significa quando se diz que um programa de computador “entrou em
looping”:

O diretor disse à secretária:
- Vamos viajar para o exterior por uma semana, para um Seminário. Faça os preparativos da viagem!

A secretária faz uma chamada para o marido:
- Vou viajar para o exterior com o diretor por uma semana. Cuide-se, querido.

O marido liga para a amante:
- Minha mulher vai viajar para o exterior por uma semana, então nós vamos poder passar a semana juntos, meu docinho!

A amante liga para um menino a quem dá aulas particulares:
- Tenho muito trabalho, na próxima semana não precisa vir às aulas.

O menino liga para o seu avô:
- Vô, na próxima semana não tenho aulas, a minha professora estará ocupada. Vamos passar a semana juntos?!

O avô (que é o diretor desta história) liga para a secretária:
- Vou passar a próxima semana com o meu neto, então não vou participar daquele Seminário. Pode cancelar a viagem.

A secretária liga para o marido:
- O diretor da empresa mudou de idéia e acabou cancelando a viagem.

O marido liga para a amante:
- Não poderemos passar a próxima semana juntos, a viagem da minha mulher foi cancelada.

A amante liga para o menino das aulas particulares:
- Mudança de planos: esta semana vamos ter aulas como normalmente.

O menino liga para o avô:
- Vô, a minha professora disse que esta semana tenho aulas. Desculpe-me, não vai dar para fazer-lhe companhia.

O avô liga para a sua secretária:
- Meu neto acabou de dizer que não vai poder ficar comigo essa semana.
Continue com os preparativos da viagem ao seminário!

Dessa maneira fica mais fácil entender o que é um loop ;)

Dica enviada por Ricardo

[e-books] Livros de programação Grátis

2516367469_0aedf352e2_o.jpg

Acabo de achar uma lista grande com diversos e-books, todos de Programação, em inglês, vale a visita!!!

Varias linguagens de programação, desde o mais simples, C e Bash até algumas coisas “estranhas” como Haskel, Objective-C (mac) e x86 assembly.

Alguns títulos interesantes:

Site: Stack Overflow – List of Freely avalable programming books

“Fica a dica ;)

Obs: Ganha um doce quem desvendar o que está escrito no Outdoor! ;)

Fluxogramas

Abaixo um pdf de fluxogramas, uma ferramenta poderosa para o aprendizado e a compreensão de como “as coisas” (programas) funcionam dentro da CPU do computador.

O livro abaixo é feito para se trabalhar com microcontroladores, ou seja, para o pessoal de eletrônica, porém a lógica e os fluxos são os mesmos, a leitura dessas páginas com certeza ajudaram a compreender melhor como os programas são executados.

[Livro] Algoritimos – Programação para Iniciantes

Aqui vai a indicação do livro do Gilvan Vilarim, futuramente criarei uma sessão com dicas de leitura, de momento, segue abaixo o livro Algoritmos – Programação para Iniciantes

Não tenho o livro em mãos, mais pelo que pesquisei na internet, são ótimos livros!

239193.jpg
link do submarino

Um bate papo sobre a “velharia” da informática

300-podcast-ctap-smallOla pessoas, gostaria de apresentar a vocês um bate-papo sobre as antigüidades da informática, gravados no formato de podcast(conhecem podcast???) aonde Eu e o Guto conversamos sobre a informática de antigamente, até chegando aos dias de hoje!

Para os que não viveram a época dos XT, Cartão perfurado e outras coisas, vale a pena, para os que conheceram tudo isso… fica como nostalgia.
Espero que gostem.

O Link para quem se interessar, Podser Podcast

Exemplos: Funções e Vetores

Sistema de Controle de Livros

Um aluno do Curso de TADS resolveu ajudar seus familiares e desenvolver um sistema para fazer o controle de livros de sua biblioteca particular, antes de começar ele fez um levantamento do que seria necessário ter no sistema, o encontrado foi:

Cadastrar livros
- Numero do Registro
- Título
- Autor
- Numero da estante
- Numero da prateleira

Tendo essa estrutura, o aluno colocou como características para que o sistema tornasse utilizável, são elas:

- Um menu de opções aonde seria escolhido as operações disponíveis:

  • Cadastrar uma Obra
  • Consultar uma Obra
  • Consultar todas as obras

Abaixo um programa simples para mostrar a resolução do problema proposto, utilizando menus, arrays e funções:

#include <stdio.h>
#define MAX 10

// Variaveis Globais
struct estante {
	int estante;
	int prateleira;
};

struct livro {
	int reg;
	char titulo[80];
	char autor[100];
	struct estante posicao;
};

struct livro livros[MAX];
int    livre;  // Variavel auxiliar, responsavel por saber quantos livros ja foram cadastrados

int menu(void) {
	// variaveis locais
	int retorno;

    // Menu
	printf("\n\n\n");
	printf("****************************************************\n");
	printf("**              Controle de Livros                  \n");
	printf("****************************************************\n");
	printf("** Escolha a opcao desejada:                        \n");
	printf("**                                                  \n");
	printf("** 1 ) Cadastrar uma obra                           \n");
	printf("** 2 ) Consultar uma obra                           \n");
	printf("** 3 ) Listar todas as obras                        \n");
	printf("** 0 ) SAIR                                         \n");
	printf("**                                                  \n");
	printf("** Entre com a opcao desejada : ");
	scanf("%d",&retorno);

	return retorno;
}

void cadastrar(void) {
	printf("\n\n\n");
	printf("****************************************************\n");
	printf("**              CADASTRO DE OBRAS (%d/%d)           \n",livre,MAX);
	printf("****************************************************\n");
	printf("**\n");
	if (livre != MAX) {
		printf("** Numero do Registro...: "); scanf("%d",&livros[livre].reg);
		fgetc(stdin); // Limpando o buffer de teclado
		printf("** Titulo da Obra.......: "); fgets(livros[livre].titulo, 80, stdin);
		printf("** Autor da Obra........: "); fgets(livros[livre].autor, 100, stdin);
		printf("** Numero da Estante....: "); scanf("%d",&livros[livre].posicao.estante);
		printf("** Numero da Prateleira.: "); scanf("%d",&livros[livre].posicao.prateleira);
		printf("**\n");
		printf("**\n");
		printf("**  Registro %d cadastrado com sucesso!               ",livros[livre].reg);
		livre++;
	} else {
		printf("**             ESPACO INSUFICIENTE                  \n");
	}
}

void listar_todos(int registro) {
	int i;
	int imprime;
	int controle = 0;
	printf("\n\n\n");
	printf("****************************************************\n");
	printf("**                 Listando OBRAS                   \n");
	printf("****************************************************\n");
	printf("**\n");
	if(livre > 0) {
		for(i = 0; i < livre; i++) {
			if(registro != 0) {
				imprime = (livros[i].reg == registro);
			}
			if(imprime) {
				printf("** Numero do Registro...: %d\n",livros[i].reg);
				printf("** Titulo da Obra.......: %s",livros[i].titulo);
				printf("** Autor da Obra........: %s",livros[i].autor);
				printf("** Numero da Estante....: %d\n",livros[i].posicao.estante);
				printf("** Numero da Prateleira.: %d\n",livros[i].posicao.prateleira);
				printf("**\n");
				controle++;
			}
		}	

		if((registro != 0) && (controle == 0))
			printf("** REGISTRO NAO ENCONTRADO \n");
	} else {
		printf("**             ESTANTES VAZIAS                  \n");
	}
	printf("\n\n");
}

void lista_especifica(void) {
	int reg;
	printf("\n\n\n");
	printf("****************************************************\n");
	printf("**                 Listando OBRAS                   \n");
	printf("****************************************************\n");
	printf("**\n");
	printf("** Entre com o numero do registro....: "); scanf("%d",&reg);
	listar_todos(reg);
}

int main (void) {
	// variaveis locais
	int opcao = 1;

	// Inicializacao das variaveis
	livre = 0;

	while(opcao != 0) {
		opcao = menu();
		switch(opcao) {
			case 1 : {
				// chamada da funcao cadastrar obra
				cadastrar();
				break;
			}
			case 2 : {
				// chamada da funcao consultar obra
				lista_especifica();
				break;
			}
			case 3 : {
				// chamada da funcao listar todos
				listar_todos(0);
				break;
			}
			case 0 : {
				printf("\n\n");
				printf("** Obrigado por utilizar o sistema...               \n\n\n");
				opcao = 0;
				break;
			} // Fim case
		} // Fim Switch
	} // Fim While

	return 0;
} // Fim main

Primeiro post

Só pra fazer a apresentação, pretendo disponibilizar nesse espaço, informações úteis sobre as disciplinas que estou lecionando.

Para começar – Programação Estruturada II, linguagem C.

#include <stdio.h>

void main(int argc, char *argv[]) {
    printf("Bem vindos!!!");
}