Buscar

INTRODUÇÃO A LÓGICA DE PROGRAMAÇÃO

Prévia do material em texto

Professor Roberto Claudio G. Pinto
Algoritimo
Introdução a Linguagem da Programação
Raciocínio Lógico
Tudo na vida depende de Raciocínio Lógico, por exemplo se o quarto está escuro eu tenho que acender a luz, claro que isto é efetuado de forma rápida.
 
Em Programação é necessário o mesmo raciocínio
Na vida precisamos pensar, se determinada atitude está certa ou errada, antes de tomar decisões em Programação istotambém se aplica.
Conteúdo
Definição de algoritmos
O que é?
Para que serve?
Solução de problemas
Como me organizar?
Que etapas seguir?
Etapas para construção de um algoritmo
Como fazer?
Como descrever?
3
Definição de Algoritmo
É uma sequência de passos para executar uma função exemplo uma calculadora executando uma soma usa o algoritimo para tal, a mesma sistematica usada em uma receita de bolo que usa ingredientes.
4
Algoritmo MDC
Divida A por B e obtenha o resto R1
Se R1=0, MDC é B
Se R1≠0, divida B/R1 e obtenha R2
Se R2=0, MDC é R1
Se R2≠0, divida R2/R2 e obtenha R3
Se R3=0, MDC é R2
Se R3≠0, repita os dois passos anteriores que o resto seja 0. 
5
Lógica
É um ramo da filosofia que estuda e cuida das regras de estruturação do pensamento, do uso do raciocínio no estudo e solução de problemas. 
Apresentas formas e técnicas para estruturação e argumentação utilizadas na solução de problemas.
6
6
Lógica
Problema dos 9 pontos
Torre de Hanói
 É um "quebra- cabeças" que consiste numa base contendo três estacas, no qual são dispostos alguns discos uns sobre os outros numa das estacas, em ordem crescente de diâmetro, de cima para baixo.
 
7
 Tente ligar os 9 pontos com 4 segmentos de reta unidos (consecutivos), passando em cada ponto exatamente uma vez, de modo que nenhum segmento de reta seja traçado duas vezes:
Lógica
Desafios de raciocínio e lógica matemática
Racha Cuca
8
SITES SUGERIDOS
http://www.profcardy.com/desafios/
http://rachacuca.com.br
Resolução de problemas
Geroge Pólya
Entender 
Planejar 
Executar
Verificar
9
Resolução de problemas
1 – ENTENDER
Identifique os dados.
Identifique a incógnita.
Identifique condição.
Verifique se é possível satisfazer a condição com os dados fornecidos. 
10
Resolução de problemas
1 – PLANEJAR
Procure achar alguma semelhança entre esse problema e outro que já resolveu. 
Releia o problema se não tiver conseguido encontrar as etapas necessárias para resolvê-lo.
 Quando tiver conseguido, escreva as etapas sem ser prolixo e impreciso. 
11
Resolução de problemas
1 – EXECUTAR
Acompanhe todas as etapas.
 Verifique se conseguiu atingir o objetivo.
12
Resolução de problemas
1 – VERIFICAR
Consegue justificar todas as etapas?
Consegue visualizar outra solução?
Consegue ver uma outra aplicação para a solução encontrada?
13
14
Entender
Planejar
Executar
Verificar
Interpretação do enunciado do problema e das questões envolvidas. 
Escolha da linguagem e estruturação da solução. 
Construção do algoritmo. 
Execução em um interpretador ou compilador. 
Etapas para construção de um algoritmo
Representação de algoritmos
Linguagem Natural
Linguagem Gráfica
Pseudo linguagem
Construção de um algoritmo
15
Representação de Algoritmos
Linguagem Natural
16
Escrever: Olá, como vai, tudo bem?
Ler: “resposta”
Escrever: Seja bem-vindo, é um prazer conhecê-lo.
Representação de Algoritmos
Linguagem Natural
Depende diretamente de quem está escrevendo e de quem está lendo;
Necessário clareza;
Ambiguidade léxica.
17
Representação de Algoritmos
Linguagem Natural
18
1 – Utilize frases curtas;
2 – Use somente um verbo em cada frase, sempre no infinitivo ou imperativo;
3 – Evite palavras com ambíguas;
4 – Detalhe todas as etapas.
Representação de Algoritmos
Linguagem gráfica
Imagens
Esquemas
Manuais de instrução
19
© Christian Bridgwater | Dreamstime.com
Representação de Algoritmos
Fluxograma ISO 5807
20
INÍCIO
Acordar
Escovar os dentes
Preparar e tomar café
Preparar roupas e lanches para o clube 
Há tarefas a fazer? 
Verificar programação do cinema
Ir ao shopping
Fazer Refeição
Ir ao Cinema
Ir ao clube
Ir à piscina
Fazer refeição
Praticar esportes
Voltar pra casa
Fazer tarefas
Tomar banho
Fazer Refeição
Assistir TV
Dormir
Dia de sol?
FIM
Não
Não
Sim
Sim
Linguagem gráfica
Representação de Algoritmos
Pseudolinguagem
Abstrai os problemas da linguagem natural;
Facilita o aprendizado da lógica de algoritmos;
Focada no aprendizado e não na estrutura.
21
Semântica  definição do comando.
Sintaxe  como se escreve um comando.
Linguagens Algorítmicas
Portugol 
 
Departamento de Engenharia Informática do Instituto Politécnico de Tomar em Portugal 
http://www.dei.estt.ipt.pt/portugol/ 
22
Linguagens Algorítmicas
WEBPortugol 
 
Universidade do Vale do Itajaí (UNIVALI)
http://siaiacad17.univali.br/webportugol/
23
Linguagens Algorítmicas
C++
 http://www.bloodshed.net/devcpp.html
24
O Windows só tem um terminal nativo, que é o interpretador de comandos dele (cmd.exe ou command.com). Pacotes como o Cygwin e o MSys (do mesmo projeto que o MinGW) incluem terminais alternativos que funcionam basicamente à maneira do Linux.
No Linux, além dos terminais de modo texto, há vários emuladores de terminal, entre os quais estão o XTerm, o Konsole (KDE) e o Terminal do Gnome. O uso de todos eles é idêntico.
O Visual Studio inclui um compilador de C++ linha de comando que você pode usar para criar tudo, desde aplicativos de console básicos até plataforma universal do Windows aplicativos, aplicativos de área de trabalho, drivers de dispositivo e componentes .net.
O GCC tem uma versão para Windows que se chama MinGW. É a mesma instalada pelo ambiente Dev-C++ ou pelo CodeBlocks (mais recomendado!).
PARTE 1 
C
Índice C parte 1
CONCEITOS BÁSICOS rf
Estruturas Condicionais rf
Matrizes rf
Ponteiros JULIANA DANELETI
Funções saulo
Tipos de Dados do usuário rf 
Entrada e Saída ju
Arquivos selma
Diretivas de pré-processadores saulo
Comentários saulo
Units selma
Visão Geral de C
 C é uma linguagem de médio nível.
 C é uma linguagem estruturada.
 C é uma linguagem compilada.
 C pode ser compilada em separada.
Tipos de Dados 
Char 
Int ( Integer )
Float ( Real )
Double 
Void
Identificadores
Os identificadores em C devem começar com uma letra ou _ ( sublinhado )
Os identificadores podem conter letras, números ou _ ( sublinhado)
As primeiras 31 letras são significativas
Variáveis
 Forma geral da declaração de uma variável
 tipo ListaDeVariáveis 
 As variáveis podem ser inicializadas na definição
 Variáveis globais
 Variáveis locais
Especificadores de tipo de classe de armazenamento
Extern - Referenciar variáveis globais em módulos compilados separadamente.
Static - Mantém o valor de uma variável entre chamadas
Register - Acesso mais rápido possível ( usando registradores em vez da memória ) 
EspDeArmazenamento tipo NomeDaVariável
Operadores e Atribuição
= comando de atribuição
- Menos
+ Mais
* Multiplicação
/ Divisão
% Resto da Divisão
-- Decremento
++ Incremento
Operadores Relacionais
> Maior
< Menor
>= Maior igual
<= Menor igual
= = Igual
!= Diferente
Operadores Lógicos
&& And
|| Or
! Not
Conversão de tipos
 Quando duas variáveis de tipos diferentes são misturadas, o compilador converte todos os operandos no tipo do maior operando.
Índice C parte 1
Conceitos Básicos 
ESTRUTURAS CONDICIONAIS
Matrizes
Ponteiros
Funções
Tipos de Dados do usuário 
Entrada e Saída
Arquivos
Diretivas de pré-processadores
Comentários
Units
Comando If
		If ( expressão ) comando;
 		 Else comando;
 ex: if (x > y) x = y;
 else x = 0;
Comando Switch
Switch ( expressão ){
 Case Comando1:
 seqüência de comandos
 	 Break
 .....
 Defaultseqüência de comandos
}
Exemplo
Switch ( x ){
 Case 1: escreve(x);
 break;
 Case 2: Registra(x);
 	 break;
 Default
	 	apaga(x);
}
Comando For
For( inicialização; condição; Incremento) comando;
For( i = 0;i < 100; i++) j += i;
Comando while
While ( condição ) comando;
 ex: while (x<12) {
y += x 
y = y*y }
Comando do-while
Do {
 comando;
} while ( condição );
Do {
 y += x;
} while (x < 12);
Índice C parte 1
Conceitos Básicos 
Estruturas Condicionais 
MATRIZES
Ponteiros
Funções
Tipos de Dados do usuário 
Entrada e Saída
Arquivos
Diretivas de pré-processadores
Comentários
Units
Matrizes Unidimensionais 	
 Matrizes unidimensionais 
 Tipo NomeVar[tamanho]
Ponteiros para matrizes 
 Apenas o nome leva ao 1º elemento
	 var == &var[0]
Matrizes como parâmetros 
Como ponteiro 
 ex: func1(int* x)
Como matriz dimensionada
 ex: func1(int x[10] 
Como matriz adimensional
 ex: func1(int x[]) 
Mesmo resultado pois a função recebe apenas um ponteiro e não cria de fato a matriz
Strings 
Matriz de caracteres terminados com o caractere nulo “/0” 
Constantes strings são declarados entre aspas duplas 
 ex: “Olha eu aqui!”
Matrizes Bidimensionais 		
 tipo NomeVar [tamanho][tamanho]
Matrizes multidimensionais
 tipo NomeVar[tamanho][tamanho]...[tamanho]
Índice C parte 1
Conceitos Básicos 
Estruturas Condicionais
Matrizes
PONTEIROS
Funções
Tipos de Dados do usuário 
Entrada e Saída
Arquivos
Diretivas de pré-processadores
Comentários
Units
Ponteiros
Forma Geral de Declaração:
				tipo *nome;
Operadores:
		&: devolve o endereço na memória do seu operando – “recebe o endereço de”
		*: devolve o valor da variável localizada no endereço que o segue – “recebe o valor que está no endereço de”
Ponteiros – Continuação
Operações:
Adição
Subtração
	Não limitado a apenas incremento e decremento. Pode-se somar ou subtrair inteiros de ponteiros.
Comparação:
Em expressões relacionais
Ponteiros – Continuação
Ponteiros e Matrizes:
	Para acessar elementos de matrizes usa–se aritmética de ponteiros ou indexação de matrizes
Matrizes de Ponteiros:
		tipo *nome[num];
Ponteiros - Continuação
Inicialização de Ponteiros: é necessário para evitar erros
Alocação Dinâmica
Malloc(): aloca memória
Free(): libera memória
Índice C parte 1
Conceitos Básicos 
Estruturas Condicionais
Matrizes
Ponteiros
FUNÇÕES
Tipos de Dados do usuário 
Entrada e Saída
Arquivos
Diretivas de pré-processadores
Comentários
Units
Funções
 EspTipo Nome ( ListaParâmetros ) {
 corpo da função
}
C não aceita funções dentro de funções
Parâmetros Formais
Chamadas por valor
 ex: func1(int x)
Chamadas por referência
 ex: func1(int *x) 
Funções
Programa principal
Arquivo separado
Biblioteca
Índice C parte 1
Conceitos Básicos 
Estruturas Condicionais 
Matrizes
Ponteiros
Funções
TIPOS DE DADOS DO USUÁRIO 
Entrada e Saída
Arquivos
Diretivas de pré-processadores
Comentários
Units
Tipos de dados do usuário
Estrutura (Struct)
Campo de bit
União (Union)
Enumeração
typedef
Struct 
 Forma geral
 		NomeVar {
 tipo NomeVar
		 tipo NomeVar
} ListaDeVariáveis
 Declaração de variáveis
 Struct NomeStruct NomeVar
 Struct podem ser passadas inteiras como argumentos
Ponteiros para estruturas Struct também podem ser usados
Campos de Bit
 Usado para acessar um único bit dentro de um byte
 Forma Geral
 Struct nome {
			 tipo nome1: comprimento;
			 tipo nome2: comprimento;
 ...
} Lista de variáveis 
 
Uniões
 Posição de memória que é compartilhada por duas ou mais variáveis em momentos diferentes.
Forma Geral
 Union nome {
 tipo NomeDaVariável;
 ...
} ListaVariáveis
Enumerações
 enum Nome {ListaEnumeração} NomeVar
É possível atribuir valores a seqüência criada
Typedef
Typedef tipo nome
Onde nome é o novo nome do tipo
Índice C parte 1
Conceitos Básicos 
Estruturas Condicionais
Matrizes
Ponteiros
Funções
Tipos de Dados do usuário 
ENTRADA E SAÍDA
Arquivos
Diretivas de pré-processadores
Comentários
Units
E/S pelo Console
	Lendo:
 Getch();
 ch=getch();
 Gets();
 gets(str);
 Scanf();
scanf(“%t”,&variável);	Escrevendo:
 Putchar();
 putchar(ch);
 Puts();
 puts(“alo”);
 Printf();
printf(“texto %t texto”, variável);
E/S pelo Console - Continuação
	%c
%d
%i
%e
%E
%f
%g
%G	Caractere
Inteiros decimais com sinal
Inteiros decimais com sinal
Notação Científica
Notação Científica
Ponto flutuante decimal
Usa %e ou %f, o que for mais curto
Usa %E ou %F, o que for mais curto
E/S pelo Console - Continuação
	%o
%s
%u
%x
%X
%p
%n
%%	Octal sem sinal
String de caracteres
Inteiros decimais sem sinal
Hexadecimal sem sinal (letras minúsculas)
Hexadecimal sem sinal (letras maiúsculas)
Apresenta um ponteiro
Escreve o símbolo %
Índice C parte 1
Conceitos Básicos 
Estruturas Condicionais
Matrizes
Ponteiros
Funções
Tipos de Dados do usuário 
Entrada e Saída
ARQUIVOS
Diretivas de pré-processadores
Comentários
Units
E/S com Arquivos
	Para se iniciar a utilização das funções de arquivos em C é necessário saber a diferença entre Streams e Arquivo.
		Arquivo é um dispositivo real, que pode ser desde de um arquivo em disco até um terminal ou impressora.
	Streams é um dispositivo lógico criado pelo sistema de arquivos, sendo associada a um arquivo para que possamos trabalhar com diferentes tipos de dispositivos de uma mesma maneira.Existem dois tipos de Streams: texto e binária.
Considerações iniciais
Para se utilizar as funções de E/S com arquivos é necessário que o cabeçalho STDIO.H esteja presente no programa.
O arquivo de cabeçalho STDIO.H fornece protótipos para as funções e define três tipos: size_t, ftpos_t e FILE, onde size_t e ftpos_t são do tipo unsigned e FILE é um ponteiro para arquivo.
A macro EOF definida em STDIO.H indica fim de arquivo e é definida como –1.
Ponteiro de Arquivo
 Um ponteiro de arquivo é um ponteiro para informações que definem várias coisas sobre o arquivo como o nome, status e a posição atual. Um ponteiro de arquivo é do tipo FILE. 
		FILE *fp;
Funções
Fopen() – abre arquivo
	
 FILE *fopen(const *char nomearq, const *char modo);
Fclose() – fecha arquivo
		int fclose(FILE *fp); 
	
Modos de abertura
r – Abre arquivo texto para leitura
w – Cria arquivo texto para escrita
a – Anexa a um arquivo texto
rb – Abre um arquivo binário para leitura
wb – Cria um arquivo binário para escrita
ab – Anexa a um arquivo binário
OBS: Acrescentando + nos modos anteriores o arquivo trabalha tanto com leitura como com escrita.
Funções de caractere
putc() ou fputc()
		int putc( int ch, FILE *fp);
getc() ou fgetc()
		int getc( FILE *fp);
feof(), rewind() e ferror()
Testa fim de arquivo
			int feof (FILE *fp);
Reposiciona indicador de posição no início do arquivo
			void rewind (FILE *fp);
Determina se operação de arquivo produziu erro
			int ferror (FILE *fp)
Funções de string
fputs()
		int fputs (const char *str, FILE *fp);
fgets()
		char *fgets (char *str, int lenght,FILE *fp);
remove() e fflush()
remove() – apaga arquivo
			int remove (char *filename);
fflush() – esvazia stream
			int fflush (FILE *fp);
fread() e fwrite()
fread()
			size_t fread (void *buffer, size_t numbytes, size_t count, FILE *fp);
fwrite()
			size_t fwrite (void *buffer, size_t numbytes, size_t count, FILE *fp);
fprintf() e fscanf()
fprintf()
			int fprintf (FILE *fp, const char *control_string,...);
fscanf()
			int fscanf (FILE *fp, const char *control_string,...);
fseek()
fseek()
			int fseek (FILE *fp, long numbytes, int origin);
Origin			Nomeda macro
Inicío do arquivo		SEEK_SET	
Posição atual		SEEK_CUR
Final do arquivo		SEEK_END
Índice C parte 1
Conceitos Básicos 
Estruturas Condicionais
Matrizes
Ponteiros
Funções
Tipos de Dados do usuário 
Entrada e Saída
Arquivos
DIRETIVAS DE PRÉ-PROCESSADORES
Comentários
Units
Diretivas de pré-processador
#define
#include
#error
#undef
Índice C parte 1
Conceitos Básicos 
Estruturas Condicionais 
Matrizes
Ponteiros
Funções
Tipos de Dados do usuário 
Entrada e Saída
Arquivos
Diretivas de pré-processadores
COMENTÁRIOS
Units
Comentários
 /* ... */
 ex: /* Isto é um comentário! */
Obs: Todos os comentários são ignorados pelo compilador C.
Índice C parte 1
Conceitos Básicos 
Estruturas Condicionais 
Matrizes
Ponteiros
Funções
Tipos de Dados do usuário 
Entrada e Saída
Arquivos
Diretivas de pré-processadores
Comentários
UNITS
Protótipo de função
TipoDeRetorno NomeDaFunção (DeclaraçãoDeParâmetros);
Arquivos-cabeçalho
Cabeçalho = header ; arquivos “.h”
Contêm protótipos de funções
Código em outro programa
Compilação conjunta (projeto)
Ex: stdio.h, conio.h
PARTE 2
C ++
Índice C++ parte 2
CLASSES 
Dados Privados e Públicos	
Função Construtora e Destrutora
Sobrecarga de Operador
Funções e Dados-membro estáticos 
Herança
Classe Amiga
Classes de C++
Ferramenta principal para Programação Orientada a Objetos
Similar a Struct no sentido de agrupar membros (dados do objeto + funções)
Permite definir atributos (características) ao objeto
Simplifica programação e amplia reutilização do código
Classes de C++
Objeto, em um sentido mais simples, é um objeto mesmo, uma “coisa”, como por exemplo, um telefone, um arquivo
Num sentido de programação, objeto é uma variável do tipo classe
 Classe dados n° fone, tipo
 métodos discar, atender
 Objeto		 telefone
Classes de C++ - Estrutura
Class nome_classe {
	tipo dado_membro; 	// Dados do Objeto
	void exibe_membro;	// Métodos
};
// No programa principal
Nome_classe objeto_um, objeto_dois;
Classes de C++ - Métodos
A medida que os métodos se tornarem maiores, defini-los dentro da classe poderá congestionar a definição de classe
Solução: colocar o protótipo dentro da classe e definir o método fora dela
Classes de C++ - Métodos
Ex: class funcionario {
		
		 void exibe_func(void);	//Protótipo
	 };
	 void funcionario::exibe_func(void)
	 {
	 };	
Nome da classe
Nome do método
Índice C++ parte 2
Classes 
DADOS PRIVADOS E PÚBLICOS	
Função Construtora e Destrutora
Sobrecarga de Operador
Funções e Dados-membro estáticos 
Herança
Classe Amiga
Dados Públicos e Privados
Se não colocar o rótulo public, pressupõe-se que todos os membros são privados
Sendo privados, os programas não podem acessar os membros da classe usando o operador ponto
objeto.alguma_variável = valor
Somente as funções (métodos) de membro da classe podem acessar os membros de classe privados
Dados Públicos e Privados
Ex: 
		class funcionario {
		 public:
			int atribui_valores(char*, long, float);
			void exibe_funcinario(void);
		 private:
			char nome[64];
			long func_id;
			float salario;
		};
Índice C++ parte 2
Classes 
Dados Privados e Públicos	
FUNÇÃO CONSTRUTORA E DESTRUTORA
Sobrecarga de Operador
Funções e Dados-membro estáticos 
Herança
Classe Amiga
Função Construtora
Métodos que facilitam aos programadores a inicialização dos dados-membro da classe
Tem o mesmo nome da classe, porém, não precede o nome dela com a palavra-chave void
Não retorna tipo
É chamada quando se cria um objeto
Função Destrutora
É chamada para descartar um objeto, liberando a memória que estava sendo usada
Tem o mesmo nome da classe, porém, precedido do caractere til (~)
Não retorna tipo, nem precede o nome dela com a palavra-chave void
Índice C++ parte 2
Classes 
Dados Privados e Públicos	
Função Construtora e Destrutora
SOBRECARGA DE OPERADOR
Funções e Dados-membro estáticos 
Herança
Classe Amiga
Sobrecarga de operador
 
 Ao sobrecarregar um operador para uma classe, especifica-se uma função que C++ chama toda vez que a classe usa o operador sobrecarregado. O significado do operador muda somente para a classe, não para o programa todo. 
Sobrecarga de operador
 Exemplo:
 void operator +(char *str) //na classe string
 { strcpy(data, str); }
 string titulo(“aprendendo ”); //func. constr.
 titulo + “C++”;
Índice C++ parte 2
Classes 
Dados Privados e Públicos	
Função Construtora e Destrutora
Sobrecarga de Operador
FUNÇÕES E DADOS –MEMBRO ESTÁTICOS 
Herança
Classe Amiga
Funções e dados-membro estáticos
 Para objetos de uma mesma classe compartilharem um ou mais dados-membro:
 public ou private:
 static tipo membro_compartilhado;
 Então, definir o membro como uma variável global, fora da classe:
 tipo nome_classe membro_compartilhado;
Funções e dados-membro estáticos
 Se a classe define, por exemplo:
 public:
 static int conta-pagina; /*definido depois como variável global*/
 static void limpa_tela(void);
 os membros declarados podem ser usados pelo programa mesmo que não existam objetos da classe.
Índice C++ parte 2
Classes 
Dados Privados e Públicos	
Função Construtora e Destrutora
Sobrecarga de Operador
Funções e Dados-membro estáticos 
HERANÇA
Classe Amiga
Herança
 É a capacidade de uma classe derivada
 herdar as características de uma classe-base existente.
 A classe derivada acessa membros public (todo o programa acessa) e membros protected (só ela acessa) da classe-base.
Herança múltipla
 Acontece quando uma classe deriva de mais de uma classe-base.
 Exemplo:
 class computador : public tela_computador, public placa_mae
 Na derivação de uma classe por herança múltipla, a construtora da classe derivada precisa chamar funções construtoras para cada uma das classes-base. 
Cadeia de herança
 Acontece quando uma classe é derivada de uma classe-base que já foi derivada de uma ou mais outras classes. Exemplo:
 
Tela_computador
Placa_mae
Computador
Estacao_trabalho
Neste caso, a classe estacao_trabalho herda as 
características das três classes.
Índice C++ parte 2
Classes 
Dados Privados e Públicos	
Função Construtora e Destrutora
Sobrecarga de Operador
Funções e Dados-membro estáticos 
Herança
CLASSE AMIGA
Classe amiga
Permite o acesso aos membros privados entre classes não-relacionadas
A classe cujos membros privados terão o acesso permitido declara uma outra classe como amiga na sua definição através do comando friend 
Restringindo o acesso de uma amiga
		
		friend ProtótipoDaFunção
Onde ProtótipoDaFunção define que funções a classe amiga terá acesso.
Apresentação da Disciplina
Sistemas Embarcados
O aluno identificará os conceitos básicos de um sistema embarcado onde a análise e estudo requerem do projetista um conhecimento não apenas de programação clássica, mas também noções de controle de processos, sistemas de tempo real, tecnologias de aquisição de dados (conversores analógico-digitais e sensores de um modo geral) e de atuadores (conversores digital-analógicos, PWM, etc.), além de um cuidado especial no que se refere à eficiência (estruturação, tamanho e velocidade) do código produzido!
Ementa
Ao final da disciplina, o aluno deve ser capaz de:
Identificar as diferenças e aplicabilidades de sistemas embarcados
Analisar projetos de sistemas embarcados sugerindo melhorias utilizando os conceitos aprendidos.
Realizar simulações e testes em sistemas embarcados dentro das especificações requiridas e focando em objetivosde livre escolha.
Objetivos Específicos
Apresentação da Disciplina
Micro Controladores
Identificar as principais características e funcionalidades das arquiteturas de um microcontrolador típico avaliando suas limitações e aplicabilidade em projetos. 
O aluno desenvolverá a habilidade de criar e simular os códigos. 
O aluno terá a oportunidade de utilizar kit de microcontrolador.
Todo esse processo será baseado em aulas expositivas, aulas práticas em laboratório, simulações e projetos de circuitos.
Ementa
Ao final da disciplina, o aluno deve ser capaz de:
Interpretar o funcionamento de um microprocessador baseado nos fundamentos aprendidos com a finalidade de indicar aplicações de microcontrolador.
Analisar projetos de microcontrolados sugerindo melhorias utilizando os conceitos aprendidos.
Projetar e realizar simulações e testes de projetos microcontrolados os conceitos/comandos/instruções aprendidos.
Objetivos Específicos
Conceitos Básicos de ARDUINO
ARDUINO é uma plataforma open-source de software e hardware para prototipagem flexível, fácil de usar e multiplataforma!
www.arduino.cc
O microcontrolador pode ser programado utilizando a linguagem de programação C para Arduino
Linguagem baseada em Wiring (www.wiring.org.co)
O desenvolvimento dos aplicativos é feito no ambiente de programação próprio do arduino
Desenvolvido em Processing (www.processing.org)
Software
Arduino UNO
Arduino UNO
	Arduino UNO 	
	Entradas e saídas digitais (I/O)	14 (6 com saída PWM)
	Entradas analógicas	6
	Clock de operação	16MHz
	Processador	Atmega328 – Atmel
Microcontrolador de 8bits
RISC com 131 instruções
2 timers de 8 bits
4 timers de 16 bits
	Portas de comunicação	Gravação via USB; 
1 porta RS-232 disponivel
	Alimentação recomendada	7-12V (pode ser alimentado pela USB)
	Corrente DC máxima por pino de I/O	40mA
	Memória Flash	32kB (armazenar código)
	Memória SRAM	2kB (rodar programa)
	Memória EEPROM	1 kB (gravar dados)
Unidade no SI: Hertz[Hz] = 1ciclo/seg
Frequência
	Múltiplo	Nome	Símbolo		Múltiplo	Nome	Símbolo
	100	-hertz	Hz				
	101	deca-hertz	daHz		10–1	deci-hertz	dHz
	102	hecto-hertz	hHz		10–2	centi-hertz	cHz
	103	quilo-hertz	kHz		10–3	mili-hertz	mHz
	106	mega-hertz	MHz		10–6	micro-hertz	µHz
	109	giga-hertz	GHz		10–9	nano-hertz	nHz
	1012	tera-hertz	THz		10–12	pico-hertz	pHz
	1015	peta-hertz	PHz		10–15	femto-hertz	fHz
	1018	exa-hertz	EHz		10–18	atto-hertz	aHz
	1021	zetta-hertz	ZHz		10–21	zepto-hertz	zHz
	1024	yotta-hertz	YHz		10–24	yocto-hertz	yHz
Em eletrônica e especialmente em circuitos digitais síncronos, o clock é um sinal usado para coordenar as ações de dois ou mais circuitos eletrônicos. 
Um sinal de clock oscila entre os estados alto e baixo, normalmente usando um duty cycle de 50%, e gerando uma onda quadrada.
Unidade de frequência no SI: Hertz[Hz] = 1ciclo/seg
Clock de 16MHz
www.atmel.com
datasheet
131 instruções Assembler... 
a maioria de um único ciclo!
Arduino MEGA
Arduino UNO
	Arduino MEGA	
	Entradas e saídas digitais (I/O)	54 (15 com saída PWM)
	Entradas analógicas	16
	Clock de operação	16MHz
	Processador	Atmega2560 – Atmel
Microcontrolador de 8bits
RISC com 131 instruções
2 timers de 8 bits
1 timer de 16 bits
	Portas de comunicação	Gravação via USB; 
4 portas RS-232 disponiveis
	Alimentação recomendada	7-12V (pode ser alimentado pela USB)
	Corrente DC máxima por pino de I/O	40mA
	Memória Flash	256kB (armazenar código)
	Memória SRAM	8kB (rodar programa)
	Memória EEPROM	4kB (gravar dados)
Memória do tipo EEPROM, re-gravável que, ao contrário de uma memória RAM convencional, preserva o seu conteúdo sem a necessidade de fonte de alimentação.
Armazena o código do programa que gravamos no Arduino, assim ao retirar a alimentação da placa o código continua gravado e não é perdido!
Memória Flash
Static Random Access Memory, memória estática de acesso aleatório, mantém dados armazenados enquanto alimentação é mantida mas ao contrário da DRAM, não requer refresh.
Utilizada para executar o programa que gravamos no Arduino, assim ao retirar a alimentação da placa qualquer status de variáveis de execução do código é perdido!
Memória SRAM
Electrically-Erasable Programmable Read-Only Memory, memória não volátil, que ao contrário de uma EPROM, uma EEPROM pode ser programada e apagada eletricamente várias vezes. 
Utilizada para que seu programa grave dados que deseje recuperar posteriormente caso a alimentção seja perdida a exemplo de status de variáveis de execução do código!
Memória EEPROM
Onde comprar?
No Brasil...
No Brasil...
No Exterior...
No Exterior...
Arduino Shields
O conceito de shields permite empilhar placas com diferentes funcionalidades. 
Dá flexibilidade ao Arduino para se adequar a diferentes projetos de forma rápida, basta comprar o shield desejado e empilhar.
Não encontrou um shield?! Você pode construir o seu e pessoas do mundo todo poderão comprar e será sempre compatível!
Arduino Shields
shieldlist.org
GPS
GSM-GPRS
Display colorido
Display 16x2
Display de 7 segmentos
Controle de Motor
Ponte H – 1A
Controle de Motor
Ponte H – 2A
GameDuino
Saida VGA
Audio Stereo
joystick
Ethernet
Wi-Fi
microSD
SDCard logger
ZigBee
CanBus
ZigBee
Saídas a Relé
Arduino MINI
Arduino UNO
	Arduino MINI	
	Entradas e saídas digitais (I/O)	14 (6 com saída PWM)
	Entradas analógicas	8
	Clock de operação	16MHz
	Processador	Atmega168 – Atmel
Microcontrolador de 8bits
RISC com 131 instruções
2 timers de 8 bits
1 timer de 16 bits
	Portas de comunicação	Gravação via RS-232
	Alimentação recomendada	7-9V (pode ser alimentado pela USB)
	Corrente DC máxima por pino de I/O	40mA
	Memória Flash	32kB
	Memória SRAM	2kB
	Memória EEPROM	1 kB
		
Arduino NANO
Arduino UNO
	Arduino NANO	
	Entradas e saídas digitais (I/O)	14 (6 com saída PWM)
	Entradas analógicas	8
	Clock de operação	16MHz
	Processador	Atmega328 – Atmel
Microcontrolador de 8bits
RISC com 131 instruções
2 timers de 8 bits
1 timer de 16 bits
	Portas de comunicação	USB e RS-232
	Alimentação recomendada	7-12V (pode ser alimentado pela USB)
	Corrente DC máxima por pino de I/O	40mA
	Memória Flash	16kB
	Memória SRAM	1kB
	Memória EEPROM	512 B
	Dimensão	
Miniaturização Simplificada!
Arduino LilyPad
Arduino UNO
	Arduino Lilypad	
	Entradas e saídas digitais (I/O)	14 (6 com saída PWM)
	Entradas analógicas	6
	Clock de operação	16MHz
	Processador	Atmega328 – Atmel
Microcontrolador de 8bits
RISC com 131 instruções
2 timers de 8 bits
1 timer de 16 bits
	Portas de comunicação	USB e RS-232
	Alimentação recomendada	7-12V (pode ser alimentado pela USB)
	Corrente DC máxima por pino de I/O	40mA
	Memória Flash	32kB
	Memória SRAM	2kB
	Memória EEPROM	1 kB
		
Wearable Devices
Funcional
Estética
Diversão
Software
Software
Software
Tutoriais
Tutoriais
Tutoriais
Tutoriais
Tutoriais
Tutoriais
Tutoriais
Software
Software
Tutoriais
Tutoriais
Resumo – Este artigo apresenta uma proposta diferenciada de uma nova metodologia de ensino, apoiada por ferramentas computacionais que podem contribuir para a melhoria do aprendizado dos alunos.
Metodologia: Os Alunos deverão por tanto seguir os seguintes critérios
 
Na primeira etapa, conhecer os recursos da Plataforma Arduino. Para isso, um dos autores participou do curso de “Arduino”, ofertado pelo UFG(Universidade Federal de Goiás), com carga horária de 8 horas. Neste curso foi possível familiarizar-se com a Plataforma Arduino. 
Na segunda, o professor da disciplina e os autores deste projeto realizaram a divisão da turma em 5 grupos de 6 alunos, cada grupo tem um líder eleito porvotação do grupo. Todos os grupos tem um acompanhamento dos autores do 
projeto.
A terceirapreparar o desenvolvimento. Eaborar projetos que abordem a utilização de uma grande variedade de recursos do Arduino . De acordo com Bennet et al (2012), o processo de implantação e uso deste modelo pode ser algo não tão fácil de realizar, uma vez que não existem modelos definidos para tal.
Porém, em sua experiência, a efetiva utilização do modelo deve possuir várias das seguintes características: as discussões são levadas pelos alunos para a sala de aula; essas discussões geralmente atingem ordens superiores de pensamento crítico; o trabalho colaborativo ocorre entre os alunos em função de várias discussões simultâneas; estudantes desafiam uns aos outros durante a aula, em função do conhecimento adquirido; os estudantes têm a posse do material; os estudantes transformam-se de ouvintes passivos para os alunos ativos no processo de ensino-aprendizagem, terá um tempo maior para desenvolver atividades práticas com os alunos, em forma de projetos ou listas de exercícios direcionadas. Com essa abordagem, pretende-se motivar o aluno em atividades de auto estudo com base em livros, materiais em hipertextos e hiperlinks, vídeos e outros recursos midiáticos. Consequentemente, como afirma Schneider (2013), espera-se que o aluno, dedique-se,a aquisição de seu próprio conhecimento e ao tempo necessário a atividade de acordo com suas características de aprendizagem , estimulando sempre o aluno a pesquisa e a interação com os colegas.
A terceira preparar o desenvolvimento. Eaborar projetos que abordem a utilização de uma grande variedade de recursos do Arduino . De acordo com Bennet et al (2012), o processo de implantação e uso deste modelo pode ser algo não tão fácil de realizar, uma vez que não existem modelos definidos para tal.
Porém, em sua experiência, a efetiva utilização do modelo deve possuir várias das seguintes características: as discussões são levadas pelos alunos para a sala de aula; essas discussões geralmente atingem ordens superiores de pensamento crítico; o trabalho colaborativo ocorre entre os alunos em função de várias discussões simultâneas; estudantes desafiam uns aos outros durante a aula, em função do conhecimento adquirido; os estudantes têm a posse do material; os estudantes transformam-se de ouvintes passivos para os alunos ativos no processo de ensino-aprendizagem, terá um tempo maior para desenvolver atividades práticas com os alunos, em forma de projetos ou listas de exercícios direcionadas. Com essa abordagem, pretende-se motivar o aluno em atividades de auto estudo com base em livros, materiais em hipertextos e hiperlinks, vídeos e outros recursos midiáticos. Consequentemente, como afirma Schneider (2013), espera-se que o aluno, dedique-se,a aquisição de seu próprio conhecimento e ao tempo necessário a atividade de acordo com suas características de aprendizagem , estimulando sempre o aluno a pesquisa e a interação com os colegas.
Avaliação
A avaliação será formada pelos seguintes itens:
Auto avaliação do aluno: Serão constituídas do conhecimento adquirido, habilidades, reconhecimento de responsabilidades. Avaliação por pares: Os membros dos grupos avaliarão seus colegas para verificar o desempenho e compromisso ao final de cada projeto. Avaliação do professor: Identificar participação, atitudes, habilidades, conhecimento e progressos de cada aluno e grupo. A nota será formada pelos resultados da avaliação e da Exercícios da
disciplina. A prova prática será o resultado dos problemas devidamente registrados e apresentados.

Continue navegando