apostila introducao a logica de programacao.compressed

of 22 /22
Introdução à Lógica de Programação 2º ENCONTRO

Author: tulymar-costa

Post on 30-Sep-2015

9 views

Category:

Documents


1 download

Embed Size (px)

DESCRIPTION

Introdução a logica de programação

TRANSCRIPT

  • Introduo

    Lgica de Programao

    2 ENCONTRO

  • 2

    Introduo A lgica est presente em nossa vida sempre que pensa-mos, falamos e escrevemos, pois para realizar essas aes ne-cessitamos que os pensamentos estejam ordenados de modo a alcanar o resultado esperado. Na verdade a lgica consiste simplesmente na organizao e explicao de um pensamento. Poderemos identificar a utilizao da lgica no nosso dia-a-dia quando analisamos situaes como:

    Analisando estes argumentos em uma sequencia lgica po-demos chegar a uma concluso, como demonstrado acima.

    (Retirado do livro Lgica de programao, de Camila Ceccatto da Silva e Everaldo Antonio de Paula, adaptado)

    Todo mamfero bebe leite; O homem bebe leite.

    Por tanto conclusse que: O homem um mamfero.

  • 3

    Linguagem de Programao Podemos imaginar o computador como uma super cal-culadora capaz de fazer clculos muito mais rpido que ns, mas para isso devemos dizer para o computador o que deve ser calculado e como deve ser calculado. A funo das lin-guagens de programao exatamente essa, ou seja, servir de um meio de comunicao entre computadores e huma-nos, assim como os humanos fazem com os humanos: usam

    da linguagem para poder conversar. Quando progra-mamos em uma lin-guagem de progra-mao primeiramen-te criamos um arqui-vo de texto comum contendo a lgica do que deve ser feito, ou seja, onde fala-mos ao computador,

    o que queremos. Este arquivo de texto chamado de programa, cada palavra de ordem dentro do programa chamada de instruo. Aps criarmos o programa, este deve ser traduzido para linguagem entendida pelo computador a partir da linguagem que estamos utilizando. Um segundo ar-quivo que chamamos de executvel ou programa, ser gera-do e interpretado diretamente pelo computador.

    (Retirado de www.infoescola.com, adaptado)

  • 4

    Algoritmo Algoritmo uma sequencia lgica de passos que levam a um determinado objetivo. Apesar de a palavra algoritmo pa-recer estranha e desconhecida, claro que todos ns sabe-mos construir algoritmos. Se isto no fosse verdade, no conseguiramos sair de casa pela manh, ir escola, decidir qual o melhor caminho para chegar a um lugar, voltar para casa, etc. Para que tudo isto seja feito necessrio uma srie de entradas do tipo: a que hora acordar, a que horas sair de casa, qual o melhor meio de transporte, etc. Um fator importante que pode haver mais de um algoritmo para resolver um problema. Por exemplo, pa-ra ir de casa at o colgio, podemos escolher diversos meios de transportes em funo do preo, conforto, rapidez, etc. A escolha ser feita em funo do critrio que melhor se adequar as nossas necessidades.

    (Retirado do livro Lgica de programao, de Camila Ceccatto da Silva e Everaldo Antonio de Paula, adaptado).

  • 5

    Veja e analise a soluo necessria para o exemplo abaixo:

    Retirado do Curso de Programao Computadores, Prof. Anbal Tavares e Profa. Cassilda Ribeiro, disponvel em

  • 6

    Os algoritmos, portanto, podem ser divididos em partes, que so elas:

    Incio; Entrada: dados que devem ser lidos, ou forneci-

    dos pelo usurio; Processamento: onde acontecem os clculos em

    si, os dados de entrada so manipulados a fim de se gerar uma resposta (um resultado);

    Sada: so os resultados de seu processamento.;

    Fim.

  • 7

    A Lgica e a Informtica Para o desenvolvimento de programas de computador neces-

    srio o desenvolvimento de uma lgica bem estruturada para que o

    computador possa realizar com sucesso os procedimentos deseja-

    dos para a soluo do problema proposto. Portanto, a partir de um

    problema proposto, temos:

    Como exemplo, iremos usar uma receita que um algoritmo

    descrito em linguagem natural. Passos para o desenvolvimento de

    uma lgica de programao:

    1 - Analise o que deve ser realizado; 2 - Imagine como o seu crebro processa esta ao; 3 - Divida isto em passos distintos e muito especficos; 4 - Estruture estes passos em uma sequncia lgica; 5 - Verifique o funcionamento e exatido da sua lgica.

  • 8

    Podemos desenvolver a lgica de simples atividades de nosso cotidiano, como fritar um ovo:

    1- necessrio fritar um ovo; 2- Para fritar um ovo deve-se ir at a cozinha, ter um ovo,

    uma frigideira, leo, um fogo e gs. O fogo deve ser ligado, a frigideira aquecida, e o leo aquecido na frigideira, posteri-ormente o ovo deve ser frito no leo quente;

    Passo 1 - Adquirir: 1- Obtenha um ovo, caso no tenha obtido um ovo, obte-nha um ovo, faa isso at obter um ovo; 2- Obtenha uma frigideira, caso no tenha obtido uma fri-gideira, obtenha uma frigideira, faa isso at obter uma frigideira; 3- Obtenha o leo, caso no tenha obtido o leo, obtenha o leo, faa isso at obter o leo; 4- Obtenha um fogo, caso no tenha obtido um fogo, obtenha um fogo, faa isso at obter um fogo; 5- Obtenha o gs, caso no tenha obtido o gs, obtenha o gs, faa isso at obter o gs; Passo 2 - Preparar: 1- Ligue o fogo, caso o fogo no tenha ligado, ligue o fogo, 2- faa isso at ligar o fogo; 3- Coloque a frigideira no fogo; 4- Aquea a frigideira, caso a frigideira no esteja aqueci-da, aquea a frigideira, faa isso at a frigideira aquecer; 5- Coloque o leo na frigideira; 6- Aquea o leo, caso o leo no esteja aquecido, aquea o leo, faa isso at o leo aquecer; 7- Quebre a casca do ovo; 8- Retire o ovo, se o ovo no estiver bom obtenha outro ovo, quebre a casca do ovo e retire o ovo.

  • 9

    Passo 3 - Cozinhar: 1- Coloque o ovo no leo que est na frigideira; 2- Verifique se o ovo est pronto, se o ovo est pronto, se no, verifique se o ovo est pronto, faa isso at o ovo ficar pronto; 3- Retire o ovo da frigideira; Passo 4 - Consumir: 1- Coloque o ovo em um prato; 2- Coma o ovo.

  • 10

    Varivel Quase todos os algoritmos que apresentamos at este ponto foram escritos em linguagem natural, ou seja, no nosso caso, habitantes do Brasil, o portugus. O algoritmo em linguagem humana deve ser traduzido em uma linguagem de programao de computadores. De-pois que gerado um programa, a linguagem outra vez traduzida para a linguagem de mquina (computador, no nosso caso) para que o computador possa entender as ins-trues fornecidas. Os algoritmos iro obter os dados necessrios para que a mquina possa manipular estes dados, que normalmente so fornecidos pelos usurios, e entregar resultados para os mesmos. Uma pergunta importante neste momento : como poderemos manipular estes dados? A resposta que po-demos manipul-los por meio das variveis. Imagine uma varivel

    como uma caixinha que

    pode ser nomeada e esta

    pode guardar um valor,

    como no desenho ao lado.

  • 11

    Portanto, a varivel um recurso que pode servir para ex-plorar uma infinidade de valores em uma situao em que h medi-das desconhecidas assim como na matemtica. Embora uma mesma varivel possa assumir diferentes valores, ela s pode ar-mazenar um valor a cada instante. Existem trs tipos bsicos de dados que iremos manipular nos algoritmos que iremos criar:

    Dados como nmeros - numricos; Dados como letras - literria; Dados lgicos.

    Num programa, em cada instante, cada varivel possui seu tipo, seu nome e seu contedo como exemplificado na figura, onde a varivel chamada NOME que do tipo LITERRIA tem como contedo a palavra Maria e a varivel nomeada IDADE que do tipo NUMRICA possui o nmero 26 armazenado enquanto as outras variveis no tem nem contedo nem tipo definido:

  • 12

    Arduino uma plataforma de desenvolvi-

    mento de hardware, microcontrola-

    da de cdigo aberto.

    Em termos prticos o Arduino

    um pequeno computador em que

    possvel se interagir com o ambiente.

    Estrutura bsica e princpio de funcionamento:

  • 13

    Entrada de dados Como en-

    trada de dados,

    podemos ter os

    dispositivos de-

    monstrados ao

    lado.

    Sada de dados Como sada de dados,

    podemos ter os dis-

    positivos demonstra-

    dos ao lado.

  • 14

    Alguns conceitos prvios Antes de comearmos a trabalhar com o Arduino preci-samos aprender alguns conceitos de eletrnica e programa-o que sero importantes ao decorrer do curso.

    LED (Diodo Emissor de Luz) Pode-se compreender o LED como uma pequena lmpada que consome baixa energia, mas que fornece uma luminosidade comparvel a uma lm-pada do mesmo porte.

    Push-button - (Boto ou chave) Uma chave, ou se preferir chamar de boto, tem o mesmo princpio de funcionamento de um interruptor (liga, desliga), quando ele pressionado o seus contatos entram em curto.

    Buzzer Emite som quando acionado.

    LDR O LDR um sensor de luz, que varia sua resistncia el-trica de acordo com a intensidade luminosa sobre o mesmo.

    Sensor de temperatura Segue a mesma ideia do LDR, mas neste caso sua resistncia varia de acordo com a temperatura e no com a luminosidade.

    LCD Display que pode ser utilizado para exibir mensa-

    gens atravs do Arduino.

  • 15

    Como funciona o Arduino? Podemos dividir o funcionamento dele em 3 partes, leitura de dados (normalmente sensores), processamento de dados (decises a serem toma-das a partir da leitura de dados), e atuao (aps o Arduino ler os sinais e interpreta-los, ele decide o que vai fazer). Um exemplo desse funcionamen-to seria acender um LED com uma chave ligada ao Arduino, a chave diz pro Arduino que quer ligar o LED, ele por sua vez verifica se essa chave esta autorizada a liga-lo (isso feito atravs da programao), caso possa, o pr-prio Arduino se encarrega de acender o LED.

    O Programa Antes de colocarmos a mo na massa vamos entender como funciona o programa que iremos utilizar para programar o Arduino. A rea em branco ser utilizada para colocarmos nosso cdigo de pro-gramao. A cima delas h alguns cones, dentre eles iremos utilizar 2, estes so:

    Verifica se o programa contm erros de digitao. Grava o programa no Arduino.

    Depois de terminado o cdigo,

    pressionamos o respectivo boto para

    verificar se digitamos alguma coisa er-

    rada (observao: esse boto no veri-

    fica erros de lgica, somente de escri-

    ta), se no houver erros j podemos

    gravar a programao no Arduino.

  • 16

    1 Experimento Objetivo: Acender um LED com uma push button. Funcionamento: Ao se pressionar a push Button o LED dever acender, e caso ela seja solta o LED dever apagar.

    Procedimentos:

    (1) Monte o circuito no protoboard da maneira que segue abaixo, uma ob-

    servao: para essas primeiras aplicaes no necessrio fonte externa,

    pois o prprio computador

    fornece energia ao Arduino,

    antes de ligar no computador

    verifique todas as ligaes no-

    vamente;

    (2) Com o circuito montado e

    verificado conecte o Arduino

    na USB do computador, abra o

    programa e copie o cdigo

    descrito na prxima pgina:

  • 17

    int Pinoled = 13; //led no pino 13 int Botao = 2; //botao no pino 2 int EstadoBotao = 0; //Varivel para ler o status do pushbutton void setup() {

    pinMode(Pinoled, OUTPUT); //Pino do led ser sada pinMode(Botao, INPUT); //Pino com boto ser entrada

    } void loop() {

    EstadoBotao = digitalRead(Botao); /* novo estado do boto vai ser igual ao que Arduino ler no pino onde est o boto. Poder ser ALTO (HIGH)se o boto estiver Pressionado, ou BAIXO (LOW),se o boto estiver solto */ if (EstadoBotao == HIGH) //Se boto estiver pressionado (HIGH) {

    digitalWrite(Pinoled, HIGH); // acende o led do pino 13. } else //se no estiver pressionado {

    digitalWrite(Pinoled, LOW); //deixa o led do pino 13 apagado }

    }

    (3) Verifique se o cdigo no possui erros, caso tudo esteja devidamente

    preparado s pressionar o boto de gravar. necessrio que voc siga to-

    dos os passos a risca para no correr o risco de danificar a plataforma.

    Para pensar... Atravs do primeiro experimento pense como seria o programa caso quiss-

    semos inverter o estado do LED, ou seja, ele s seria ligado caso a chave no

    estivesse pressionada, e caso contrrio o LED apagaria.

  • 18

    2 Experimento Objetivo: Controlar 3 LED com 3 botes. Funcionamento: Iremos seguir o mesmo princpio do experimento anteri-

    or, mas agora com 3 LED e 3 push buttons. Cada boto ir acionar um nico

    LED quando for pressionado, e ir desliga-lo caso contrrio.

    Procedimentos:

    (1) Monte o circuito no protoboard da maneira que segue abaixo, note que

    o circuito ser praticamente o mesmo, mas com 2 chaves e 2 LED a mais, an-

    tes de ligar o Arduino no computador verifique todas as ligaes novamen-

    te;

  • 19

    (2) Com o circuito montado e verificado conecte o Arduino na USB do com-

    putador, abra o programa e copie o cdigo descrito abaixo: int ledPin1 = 13; //Led 1 ligado no pino 13 int ledPin2 = 12 //Led 2 ligado no pino 12 int ledPin3 = 11; //Led 3 ligado no pino 11 int Botao1 = 2; //Boto 1 ligado no pino 2 int Botao2 = 3; //Boto 2 ligado no pino 3 int Botao3 = 4; //Boto 3 ligado no pino 4 int EstadoBotao1 = 0; //Boto 1 desligado int EstadoBotao2 = 0; //Boto 2 desligado int EstadoBotao3 = 0; //Boto 3 desligado void setup(){ //Configuraes dos pinos

    pinMode(ledPin1, OUTPUT); //pino do Led 1 configurado como sada pinMode(Botao1, INPUT); //pino do boto 1 configurado como entrada pinMode(ledPin2, OUTPUT); //pino do led 2 configurado como sada pinMode(Botao2, INPUT); //pino do boto 2 configurado como entrada pinMode(ledPin3, OUTPUT); //pino do led 3 configurado como sada pinMode(Botao3, INPUT); //pino do boto 3 configurado como entrada

    } void loop(){

    EstadoBotao1 = digitalRead(Botao1); // L o estado do boto 1 EstadoBotao2 = digitalRead(Botao2); // L o estado do boto 2 EstadoBotao3 = digitalRead(Botao3); // L o estado do boto 3 if (EstadoBotao1 == HIGH){ //Se o boto 1 est pressionado digitalWrite(ledPin1, HIGH); //acende o led 1 } else{ //Se no digitalWrite(ledPin1, LOW); //apaga o led 1 } if (EstadoBotao2 == HIGH){ //Se o boto 2 est pressionado digitalWrite(ledPin2, HIGH); //acende led 2 } else{ //Se no digitalWrite(ledPin2, LOW); //apaga o led 2 } if (EstadoBotao3 == HIGH){ //Se o boto 3 est pressionado digitalWrite(ledPin3, HIGH); //acende o led 3 } else{ //Se no digitalWrite(ledPin3, LOW); //apaga led 3 }

    }

  • 20

    (3) Verifique se o cdigo no possui erros, caso tudo esteja devidamente

    preparado s pressionar o boto de gravar. necessrio que voc siga to-

    dos os passos a risca para no correr o risco de danificar a plataforma. Note

    que neste experimento o programa apesar de parecer mais complexo nada

    mais do que uma ampliao do primeiro.

    Para pensar... Com base no experimento 2 altere o cdigo para que a primeira chave, da

    esquerda para a direita, acenda o LED verde, a segunda o LED amarelo, e o

    LED vermelho s poder ser aceso com o segundo e o terceiro boto pres-

    sionados ao mesmo tempo.

    Exercitando o conhecimento

    Com o conhecimento adquirido nesse encontro elabore a so-luo para os seguintes problemas: 1 Com base no experimento 2, altere o cdigo de programao, para que sejam trocados de lugar os pinos onde esto conectados os LED - troque para os pinos 8, 9, e 10) e as chaves - para os pinos 5, 6, 7. 2 - Voc tem 4 botes e 4 LED, sendo que cada boto ser respons-

    vel por acender uma quantidade especifica de LED simultanea-

    mente, sendo o 1 boto responsvel por acender o primeiro LED,

    o segundo boto responsvel por acender os 2 primeiros LED, o

    terceiro boto responsvel por acender os 3 primeiros LED, e o lti-

    mo que ir acender todos os LED. Implemente o cdigo desse pro-

    grama.

  • 21

    Quer mais informaes!?

    Para um maior aprofundamento nos conceitos bsicos apresentados, procu-

    re por sites sobre a utilizao do Arduino, isso ir contribuir muito para a

    formao de novos conhecimentos com aplicaes prticas!

    Dvidas podero ser encaminhadas aos tutores de vocs!

    Lista de Sites interessantes

    (1) Arduino - site oficial, conceitos e materiais para download.

    (2) Site com cursos bsico e avanado sobre Arduino.

    (3) Site do Laboratrio de Garagem, com conceitos diversos sobre

    a utilizao, com projetos e downloads.

  • 22

    Oficinas Tecnolgicas para

    alunos do Ensino Mdio

    Prof. Dr. Leonardo Mesquita

    [email protected]

    Coordenador do Projeto

    Prof. Dr. Galeno Jos de Sena

    [email protected]

    Prof. Dr. Marco Aurlio Alvarenga Monteiro

    [email protected]

    Prof. Jos Marcelo de A. Wendling Jr.

    [email protected]

    Felipe Barbosa da Silva

    Ismael de Almeida Jnior

    Letcia Miranda de Frana Mota

    Renan Moura Santana

    Samuel Jos de Carvalho