Tutorial de Linguagem C – Introdução

Bom quem acompanha (quem acompanharia?) meu blog, deve estar ciente que comecei o primeiro periodo de Engenharia Mecânica, parece ser de praxe, que nas engenharias haja a matéria de algoritmo.

Motivado por alguns alunos que estavam em dificuldade em minha classe, eu desenvolvi um mini tutorial, ele e bem simples mesmo, e parece ate bobo.

Observem que antes que venham os troll flamers, eu desenvolvi um tutorial básico, para permitir que meus amigos solucionasse problemas matemáticos em linguagem C.

Parte 1: http://amcollucci.com.br/2011/05/13/linguagem-c-parte-1-printf/ ?

Parte 2: http://amcollucci.com.br/2011/05/13/linguagem-c-parte-2-variaveis/

Parte 3:

Parte 4:

Continua …

Linguagem C – Parte 1 – printf().

Para acompanhar o tutorial é necessario um compilador da linguagem C/C++ sugiro o Dev c++ que é gratuito e pode ser baixado no link abaixo:

http://sourceforge.net/projects/dev-cpp/files/Binaries/Dev-C%2B%2B%204.9.9.2/devcpp-4.9.9.2_setup.exe/download

No site da PUC, há um bom tutorial ensinando a utilizar a ferramenta.

http://www.inf.pucrs.br/~pinho/LaproI/DevC/Dev.html

Começando pelo começo!

1- Fazendo um programa que escreve qualquer coisa na tela….

 

#include <stdio.h>

int main(){

printf (“OI TURMA”);

}

Esse programinha vai imprimir uma msg na tela e vai fechar igual um relâmpago, por isso vamos ter de acrescentar mais algumas linhas…

#include <stdio.h>
#include <stdlib.h>

int main(){

printf (“OI TURMA”);

system(“pause”);
return 0;
}

Agora sim! Vamos a explicação

#include <stdio.h> Essa linha significa que estamos incluindo (#include<>) um arquivo em anexo com nosso programa.

Esse arquivo e o stdio.h esse arquivo e o responsável por “ensinar” ao
compilador como ele deve proceder para escrever um texto na tela, como ele deve proceder para ler uma letra no teclado, sem ele o comando PRINTF não poderia ser executado. Tente compilar o programa acima sem utilizar o #include <stdio.h> e você verá um erro.

No exemplo acima eu usei duas bibliotecas são elas:

stdio.h

std = standart – em português, padrão
i = input – em português entrada
o = output – em português saída

stdlib.h
std = standart – em português padrão
lib = library – em português biblioteca, essa biblioteca permite que você use
comandos do DOS, para quem não conhece o dos ele e um sistema operacional de linha de comando predecessor do Windows.

Depois de escolher as bibliotecas eu chamei a função main, ela e a principal função do programa e deve estar presente nele obrigatoriamente.( Até onde eu conheço a main só e obrigatória na linguagem C utilizada para PCS, ou tecnicamente no C para X86)

int main(){

Comandos

}

Reparem que essa declaração não tem ponto e virgula, pois ela delimita o inicio e o fim de um bloco de instruções. O “}” no final do bloco faz as vezes do ponto e virgula

O int usado na definição da função main significa que a função main espera um resultado “inteiro” por isso que no final do programa nos enviamos um return 0; como zero é um numero inteiro a função termina sem erros!

Dentro da função main eu escrevi outros comandos um deles e o “printf”, o printf vem do inglês também conforme explicação abaixo.

printf – comando de saída formatada
– print – em português significa imprimir. Historicamente servia para imprimir na stdout (std = standart que é padrão, out saída, ou seja na saída padrão.). Hoje em dia a saída padrão de todos os PCs e o monitor, mas antigamente era a impressora.
– f – vem de format que significa formatado. Isso e porque os tipos de dados que saem impressos através dessa função vão formatados de acordo com os caracteres de controle que você usa.

Inicialmente pense no printf como o comando que vc usa para escrever na tela

Abaixo vou mostrar o uso do comando printf, o que ta de vermelho e obrigatório;

printf (“ Aqui você pode digitar qualquer texto “);

No caso se eu usasse esse comando ele imprimiria na tela:

Aqui você pode digitar qualquer texto

A frente eu vou falar mais sobre esse comando.

Por ultimo o comando system (“pause”).

Esse comando serve para paralizar o sistema até que alguma tecla seja pressionada. Ele só e possível usar se vc usar a biblioteca stdlib.h do c ou a biblioteca iostream do c++.

O comando system(“”) envia uma msg ao sistema operacional, se você retirar por exemplo o “pause” e no lugar colocar “notepad”, ele vai abrir o bloco de notas para você.

Abaixo segue alguns exemplos para fixar esses comandos.

 

#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;

int main(){

printf (“OI \n TURMA \n COMO VAI \n ”);

system(“pause”);
return 0;
}

 

#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;

int main(){

printf (“OI \t TURMA \t COMO VAI \t ”);

system(“pause”);
return 0;
}

 

#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;

int main(){

printf (“OI TURMA COMO VAI ”);

system(“pause”);
return 0;
}

 

#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;

int main()
printf (“OI TURMA COMO VAI ”);
printf (“OI TURMA COMO VAI ”);
printf (“OI TURMA COMO VAI ”);
printf (“OI TURMA COMO VAI ”);
system(“pause”);
return 0;
}

 

#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;

int main(){

printf (“OI TURMA COMO VAI \t”);
printf (“OI TURMA COMO VAI \n”);
printf (“OI TURMA COMO VAI \t”);
printf (“OI TURMA COMO VAI \n”);

system(“pause”);
return 0;
}

Até a parte 2!

6 Meses do Blog Entre um Byte e Outro

E com grande prazer que eu anuncio a sobrevivência desse blog pessoal por 6 meses. Em seu anivesário de 6 meses gostaria de fazer uma retrospectiva de tudo o que ja rolou aqui.

6 Meses do Blog

Hoje o Blog recebe uma média de 10 visitas por dia, o que não é lá grandes coisas, o que começou como um projeto para melhorar meus conhecimentos com linguagens web e cms, mais precisamente o PHP com o Word Press, acabou virando uma forma de lazer. Desde o Marco Zero do blog, já foram feitos 34 posts com esse, já tivemos 2 templates, e sua primeira reestruturação que vou falar logo adiante.

Esse blog poderia se chamar tambem ” Essa metamorfose ambulante” visto que sobreviveu a minha pretensão de mudar de carreira dentro de ti, depois de mudar de profissão, e até a ultima de me divorciar. Devido a isso criei um carinho especial com esse cantinho do mundo que tão pouca gente conhece mas onde eu exponho as minhas idéias sem vergonha, mesmo aquelas que são sem nexo, como o meu post mais sem noção do planeta sobre Mortes Naturais ou não.

A medida que o tempo foi passando o assunto desse blog se diversificou a ponto de eu tratar de tecnologia, como nos posts sobre o arduino, de ética e combate ao imperialismo, como no post sobre Julian Assange  e o Wikileaks, e até discorreu sobre aspectos de minha vida pessoal, resultado de jogos que eu curto etc. Pois o blog agora começa a seguir outro rumo, pois não sendo um organismo de vida própria esta atrelado a mim, e os temas deverão tratar mais de assuntos relacionados a Engenharia, principalmente engenharia mecânica.

Como estou sempre em constante mutação, deixei espaços abertos para que eu pudesse falar sobre outros temas como informática, eletrônica, entre outros que ainda ocupam parte da minha vida, mas esses temas deverão escassear a medida que eu mesmo for me dedicando menos a essas coisas.

Bom o Blog tambem precisa evoluir, resolvi que quero uma média de 100 visitas diárias daqui a três meses, por isso vou ter que trabalhar bastante nele daqui por diante. As experiências que eu fizer eu irei ir postando também para que outros blogueiros possam se orientar quando precisarem.

E o logotipo, essa é uma otima pergunta, com uma irmã Publicitária, com um cunhado que é designe, um ex-mulher que era desenhista porque cargas d’água esse blog ainda não tem um logotipo? Sinceramente não sei. Vou providenciar um e espero colocar ele ainda essa semana.

Bom um blog como qualquer organismo precisa de crescer, e esse será o objetivo desse blog nos próximos meses.

att,
Anthony Collucci

Biblioteca Pública de Belo Horizonte

Hoje fiz a minha carteira na Biblioteca Pública de Belo Horizonte, eu imaginei algo como um sebo, mas não a biblioteca e bem modernizada, com 5 minutos fiz minha carteirinha com código de barras. E com mais 5 achei o livro que queria em um terminal de auto atendimento eletrônico.

O Acervo da Biblioteca também e generoso, contive o desejo de pegar um livro de literatura, pois precisava estudar álgebra. O site da secretaria de cultura de MG descreve o horário de funcionamento e o que o leitor cadastrado tem direito, o que vai desde alugar livros a pesquisar na internet.

Para quem quiser fazer o cadastro é bem simples, é só levar:

Identidade

Comprovante de Residencia

R$3,00

Até mais!

Anthony Collucci

Engenharia Mecânica Primeiras impressões

Olá, quem acompanha meu blog (se é que alguém em sã consciência faz isso), deve estar sabendo que eu resolvi mudar de área e estudar engenharia mecânica, estou inscrito no curso da Faculdade Anhanguera de Belo Horizonte, essa instituição comprou a Fabrae, e passou esse ano a lecionar o curso de Engenharia Mecânica aqui em belo horizonte, portanto faço parte da primeira turma de Bacharel de Engenharia Mecânica da instituição.

Como já sou veterano em “fazer cursos” esperava aquela mesmice de apresentações, e enrolação na 1º semana, ou mesmo confusão generalizada, onde os organizadores das instituições ficam perdidos por não preverem muito das duvidas dos alunos ou então não planejarem corretamente certa demada. Mas fiquei feliz em ver que foi diferente, logo no primeiro dia o Professor Paulo Roberto da matéria de Álgebra Linear, quebrou o protocolo e disse ” Não tenho o costume de fazer os alunos se apresentarem pois, ninguém decora o nome mesmo e dentro de poucos dias ou semanas vocês ja se conhecerão bem, portanto vou começar com essa lista de exercício…” e que lista, não consegui fazer nenhum sozinho, só pra se ter noção olha esse:

” Eu tenho o dobro da idade que você tinha quando eu tinha a idade que você tem. Quando você tiver a idade que eu tenho,  a soma das nossas idades será igual a 81, qual a minha idade?”

Ótimo não? Me de um computador e um compilador, e eu resolvo em 5 minutos ou menos, mas na mão com folhas de papel e lápis foi tenso.

Ontem o Professor de Algoritmos e Programação, também muito capacitado, dá aulas a 25 anos na PUC e Eng. Eletrico por profissão, fez uma exposição simples mas eficiente do conteúdo que será trabalhado e de sua carreira. Além de dar uma pincelada na matéria. E o coordenador e a equipe de Staff, fizeram uma exposição de uns 40 minutos sobre o curso e a instituição.

Achei interessante a proposta deles, pois mesmo sendo uma faculdade privada investem em iniciação científica, que é um dos meus objetivos a curto prazo. Outro ponto positivo e o PLT, programa do livro texto, onde a faculdade compra grandes quantidades de livros edita, e vendem bem mais baratos para os alunos, isso tudo dividido, nas mensalidades.

Ponto negativo ficou para a cantina, muito pequena, e com o atendimento muito lento, (não pelos funcionários, mas pela estrutura).

Bom é isso, hoje e o 3º dia de aula e eu to empolgado!

att,

Anthony Collucci

2011 – Novos Rumos – Engenharia Mecânica

Quem acompanha meu Blog, certamente deve ter percebido uma mudança nos ultimos Posts, sim, eu finalmente me decidi a Abandonar a TI.

Não que seja uma profissão ruim ou que pague mal, até que não. Poderia ser que eu não fosse reconhecido na minha profissão, mas até que não, então porquê?

Também não sei ao certo, mas desde que entrei na faculdade, eu comecei a ver que aquilo ali não era pra mim,  e quanto mais me envolvia mais eu desgostava. Não entendam mal adoro programa, adoro redes, mas não como profissão.

Dai me vi as voltas com a construção de meu próprio Telescópio, e pensei a sim Astronomia será minha nova profissão, depois me vi a volta com Desenvolvimento de sites, e queria migrar de Network, para develop, mas ainda sim não me encontrei.

Apesar de esse ser um relato retórico ja que ninguém vai querer saber da minha vida ruim. Eu me peguei gostando da área de Engenharia Mecanica/Mecatrônica, quem já foi na minha casa, ou quem mora comigo no caso a Dona Onça, (oops Samira). Já notou a quantidade de ferramentas “delicadas” que eu possuia, são morças, limas, marretas, martelos, um sem número de chaves, oléos, graxas, abrasivos… etc… E nunca me veio na cabeça trabalhar na área de Mecânica/Mecatrônica, a não ser quando eu era um estudante a muitooo tempo atrás…

Lá e de volta outra vez, terminei do curso de Mecânica de Autos, comecei o curso de mecânica de aeronaves, e agora o bom filho a casa torna, Farei o Curso de Bacharel em Engenharia Mecânica. E nessa metamorfose ambulante, esse blog, vai tratar de assuntos relacionados a esse ultimo, principalmente na área de Robótica. Daí alguém me pergunta porque seu blog pessoal de lazer tem de ser Nerd… Gente ser Nerd e um estado de espírito, e como um Nirvana…

A e se você pensa que Mecânica é aquele negocio imundo ali do lado de sua casa, com um cara meio Pesado, cheio de graxa com uma calça que ele ganhou a 10 anos atrás e acha que continua nova! Olhem para a imagem abaixo e pensem de novo…

Servo Motores novamente…

A pouco tempo escrevi sobre como controlar servos na unha, bom agora eu quero e montar uma library, para isso tive de melhorar o código, a intenção era usar millis() para controlar o lapso de tempo entre os pulsos, mas a verdade e que estou apanhando para as funções micros() e millis() do arduino.

Fora isso, eu vou postar um código bem melhorado em relação a última versão!


// define o pino em que o servo esta conectado

const unsigned int pinservo = 9;

// definem o maximo e o minimo em Microsegundos, da largura do pulso
unsigned int maximo = 2400;
unsigned int minimo = 70;

//Armazena o ultimo passo enviado para o servo, evitando que ele receba um comando para permanecer onde esta, evitando assim trepidação
unsigned int ultimopasso = 0;

// intervalo em Milisegundos entre um pulso e outro
unsigned int interval = 15;

//velocidade com que o servo movimenta
unsigned int velocidade = 10;

void setup(){
 pinMode (pinservo, OUTPUT);
}

void loop(){

//executa diversos passos e da um delay de 1 segundo entre um e outro.

passo (90);
delay (1000);
passo (45);
delay (1000);
passo (120);
delay (1000);

}

void passo (int _grau){
 unsigned int _passo= minimo + (maximo/180)*_grau;
 if (ultimopasso != _passo){ //impede a repetição do mesmo passo senao fosse assim causaria  trepidação
 if (ultimopasso &lt; _passo){ //se o servo estiver antes da proxima posição ele avança
 for (int i=ultimopasso;i&lt;_passo;i= i + velocidade){
 digitalWrite (pinservo, 1);
 delayMicroseconds(i);
 digitalWrite (pinservo, 0);
 delay(15);
 }
 }else{ //caso contrario ele recua
 for (int i=ultimopasso;i&gt;_passo;i= i - velocidade){
 digitalWrite (pinservo, 1);
 delayMicroseconds(i);
 digitalWrite (pinservo, 0);
 delay(15);
 }
 }
 }

ultimopasso = _passo; //grava o ultimo passo
}

Bom e simples assim! Agora estou seguindo os passos deste tutorial, e desenvolvendo uma library própria.

Até a próxima nerdeza!!

Arduino Blink

Bom estive testando meu primeiro programa com Arduíno, e ele faz uma coisa muito útil, ele faz um led piscar isso mesmo! Não e fantastico?

Bom o exemplo acima e de uma alma feliz como a minha que fez o mesmo teste.
O codigo fonte para isso é encontrado no próprio site do Projeto e segue abaixo:

int ledPin = 13;                 // define o pino onde esta conectado o led
void setup(){
pinMode(ledPin, OUTPUT);      // configura ledppin como saida digital
}
void loop(){

digitalWrite(ledPin, HIGH);   // coloca o led como ligado
delay(1000);                  // aguarda um segundo
digitalWrite(ledPin, LOW);    // desliga o led
delay(1000);
}

O negócio e que eu não gostei, ele ocupa 1026 bytes de programação no windows, isso é muito ainda mais se considerarmos que ele só tem 30000 bytes disponíveis.

Mas com uma pequena alteração ele passa a ocupar 1018 bytes.

Substitua essa linha:


int ledPin = 13;

Por:


const unsigned int ledPin = 13;

Nesse simples exemplo eliminou espaço reservado ao sinal do int e ainda impediu que o LedPin pudesse ser alterado, isso diminui a complexidade do código binário, já que ele só precisará referenciar a posição da memória da constante ao invés de procurar pelo valor atual da variavél. Mas ta aí eu não gostei…  Agora alterando mais algumas coisinhas a gente consegue reduzir para 1014 bytes


const unsigned int ledPin = 13;

boolean dado=1;

void setup(){

pinMode(ledPin, OUTPUT);

}

void loop() {

dado=!dado;

digitalWrite(ledPin, dado);   // sets the LED on

delay(1000);                  // waits for a second

}

Bom isso é só para mostrar que com um pouco de tempo da pra diminuir o tamanho do executável, ainda não li quantos ciclos são necessários para cada instrução, ainda não estou me preocupando com isso, só estou me preocupando com o tamanho do executavel.
Agora e continuar a fuçar!

Arduino! É eu também me rendi…

Bom eu havia prometido algumas surpresas, quando fiz o post “Férias“, pois bem estou eu aqui a anunciar algumas mudanças no meio de um post sobre arduíno! Foda… :s

Primeiro eu vou me inscrever numa faculdade de engenharia eletrônica, segundo vou continuar programando, só que agora além de sites vão ter outras coisas mais excêntricas!

Pow!!! E o Arduíno??

Bom aí que tá, sempre gostei de robótica e sei até brincar com o PIC, porém um amigo começou a animar a comprar o Arduíno e fuça-lo! Como bom fução que sou, resolvi brincar também. O Arduíno usa uma filosofia estilo “can be easily” (podia ser fácil), ao contrário da família PIC da Microchip, para você programa-lo pode usar o C, como cita no site oficial do projeto:

Looking for something else? See the libraries page for interfacing with particular types of hardware. Try the list of community-contributed code. The Arduino language is based on C/C++. It links against AVR Libc and allows the use of any of its functions; see its user manual for details.”

A tradução fica por conta de cada um, mas basicamente diz que a linguagem do Arduíno e baseada em C/C++, e você pode usar a AVR libc para poder aumentar a lista de instruções que ele disponibiliza.

E porque o Arduíno?

Bom, o “Can Be easily” (note que isso e um termo que eu inventei), tem seus atrativos, uma curva de aprendizado menor, um investimento menor em livros/curso/auto-ajuda/psicologo… E ele e Open Source, ou seja tudo que é produzido por ele e liberado na internet, veja esse hexapode com cérebro de arduino!

Pois bem e aí e só isso isso o PIC faz, na verdade não e só isso o PIC tradicionalmente executa menos MIPS que o AVR, isso eu achei incrivel! para mim o PIC era o melhor microcontrolador do mundo…rs…

Brincadeiras a parte, no site da Arnerobotics você pode ver mais sobre a arquitetura dos microcontroladore AVR Atmel.

Beleza! Então Sr Anthony vou comprar um Arduino e virar um Asimov!!!

Calma lá, lembre – se que eu disse curva de aprendizado.. rs, eu ainda to la embaixo, estou fazendo apenas um led piscar… Mas vai a dica no Brasil o Arduíno e os Shields (extensões), são bem caros, por isso compre no Ebay! o Arduino Mega chega a R$300 e eu comprei por $19 mais $9 de frete.

Bom então tá to indo embora brincar com meu “DUDUÍ”…

Ps.: Nerd e foda…

Novo Supercomputador do INPE

Para começar um ano uma boa notícia, o Brasil, tem um novo supercomputador, o briquedinho e do INPE, segue  abaixo a nota oficial:

Imagem Ilustrativa

Para aprimorar a qualidade das previsões meteorológicas e o desenvolvimento de cenários climáticos futuros globais e regionais, será inaugurado no dia 28 de dezembro (terça-feira) o novo supercomputador do Instituto Nacional de Pesquisas Espaciais (INPE).

Batizado de Tupã, o supercomputador é um modelo XT6 da Cray capaz de realizar 258 trilhões de cálculos por segundo. Adquirido com recursos do Ministério da Ciência e Tecnologia (MCT) e da Fundação de Amparo à Pesquisa do Estado de São Paulo (FAPESP), o Tupã está entre os mais poderosos supercomputadores do mundo para previsão de tempo e estudos em mudanças climáticas.

Instalado no INPE de Cachoeira Paulista (SP), atenderá aos centros de Previsão de Tempo e Estudos Climáticos (CPTEC) e de Ciência do Sistema Terrestre (CCST) do próprio instituto, além dos grupos de pesquisa, instituições e universidades integrantes da Rede Brasileira de Pesquisa sobre Mudanças Climáticas (Rede CLIMA) do MCT, do Programa FAPESP de Pesquisa em Mudanças Climáticas Globais e do Instituto Nacional de Ciência e Tecnologia (INCT) para Mudanças Climáticas.

Cerimônia
Estarão presentes à cerimônia de inauguração, que começa às 11 horas em Cachoeira Paulista, o diretor do INPE, Gilberto Câmara; o secretário executivo do Ministério da Ciência e Tecnologia (MCT), Luiz Antonio Rodrigues Elias, representando o ministro Sergio Rezende; e o diretor científico da Fundação de Amparo à Pesquisa do Estado de São Paulo (FAPESP), Carlos Henrique de Brito Cruz.

Também comparecerão, entre outras autoridades e pesquisadores, Carlos Nobre, chefe do Centro de Ciência do Sistema Terrestre (CCST) do INPE e coordenador do Programa FAPESP de Pesquisa sobre Mudanças Climáticas; Marcelo Enrique Seluchi, coordenador substituto do Centro de Previsão do Tempo e Estudos Climáticos (CPTEC) do INPE, e Osvaldo Luiz Leal de Moraes, recentemente anunciado como próximo coordenador do CPTEC/INPE.

Tupã
O supercomputador Tupã entrará em plena operação no início de 2011 e permitirá ao INPE gerar previsões de tempo mais confiáveis, com maior prazo de antecedência e de melhor qualidade, ampliando o nível de detalhamento para 5 km na América do Sul e 20 km para todo o globo. Será possível prever ainda eventos extremos com boa confiabilidade, como chuvas intensas, secas, geadas, ondas de calor, entre outros. As previsões ambientais e de qualidade do ar também serão beneficiadas, gerando prognósticos de maior resolução, de 15 quilômetros, com até seis dias de antecedência.

A nova máquina também será fundamental para o desenvolvimento e implementação do Modelo Brasileiro do Sistema Climático Global, que incorporará todos os elementos do Sistema Terrestre (atmosfera, oceanos, criosfera, vegetação, ciclos biogeoquímicos, etc), suas interações e como este sistema está sendo perturbado por ações antropogênicas (por exemplo, emissões de gases de efeito estufa, mudanças na vegetação, urbanização, etc.). Este esforço envolve um grande número de pesquisadores do Brasil e do exterior, provenientes de diversas instituições, o que se constitui num projeto interdisciplinar de desenvolvimento de modelagem climática sem precedentes entre países em desenvolvimento.

Segue Link: http://www.inpe.br/noticias/noticia.php?Cod_Noticia=2403