Primeiro Semestre de 2016 - Instituto de Computaçãoffaria/lp2s2016/class01/lp... ·...

33
ogica de Programa¸c˜ ao Aula 01 - Introdu¸c˜ ao Prof. Fabio Augusto Faria Instituto de Ciˆ encia e Tecnologia – Unifesp Primeiro Semestre de 2016

Transcript of Primeiro Semestre de 2016 - Instituto de Computaçãoffaria/lp2s2016/class01/lp... ·...

Logica de ProgramacaoAula 01 - Introducao

Prof. Fabio Augusto Faria

Instituto de Ciencia e Tecnologia – Unifesp

Primeiro Semestre de 2016

Organizacao de um computadorAlgoritmos

A linguagem C

Roteiro

1 Organizacao de um computador

2 Algoritmos

3 A linguagem C

Prof. Fabio Augusto Faria LP — Aula 01

Organizacao de um computadorAlgoritmos

A linguagem C

O que e um computador?

Computador: o que computa, calculador, calculista.(dicionario Houaiss).

Os primeiros “computadores” eram humanos que calculavamtabelas de logaritmos ou trajetorias pra canhoes, seguindoprocedimentos bem definidos.

Um computador e uma maquina que, a partir de uma entrada,realiza um numero muito grande de calculos matematicos elogicos, gerando uma saıda.

Prof. Fabio Augusto Faria LP — Aula 01

Organizacao de um computadorAlgoritmos

A linguagem C

Hardware e dispositivos

A linguagem nativa do computador e codificada numericamente,de forma binaria:

Bit → Pode assumir valores 0 ou 1.

Byte → Agrupamento de 8 bits em uma palavra.

Letras e sımbolos sao representados por numeros.

Monitor

KeyboardFloppy

disk drive

Hard disk drive

Hard disk

controller

Floppy disk

controller

Keyboard controller

Video controller

MemoryCPU

Bus

Prof. Fabio Augusto Faria LP — Aula 01

Organizacao de um computadorAlgoritmos

A linguagem C

Organizacao basica de um ambiente computacional

Computadores realizam tarefas complexas por meio de umnumero enorme de operacoes simples.

Para gerenciar a complexidade das solucoes, existe umahierarquia de funcoes, onde cada uma apresenta uma interfacemais simples.

Programas de Aplicacao

Shell Compiladores Editores

Sistema operacional

Hardware

Prof. Fabio Augusto Faria LP — Aula 01

Organizacao de um computadorAlgoritmos

A linguagem C

Programando computadores

Como usuarios, interagimos com os programas de aplicacao.

Neste curso iremos descer nesta hierarquia, para construirmosnovos programas de aplicacao.

Prof. Fabio Augusto Faria LP — Aula 01

Organizacao de um computadorAlgoritmos

A linguagem C

Introducao a Logica de Programacao

Logica: e a tecnica de encadear pensamentos para atingirdeterminado objetivo;

Sequencia Logica: sao passos executados ate atingir umobjetivo ou solucao de um problema.

Instrucoes: um conjunto de regras ou normas definidas para arealizacao ou emprego de algo. E o que indica a umcomputador uma acao elementar a executar.

Prof. Fabio Augusto Faria LP — Aula 01

Organizacao de um computadorAlgoritmos

A linguagem C

Algoritmos

Sequencia de passos, precisos e bem definidos, para arealizacao de uma tarefa.

Nao pode ser redundantes, nem subjetivos e nao ambıguo;

Exemplo 1: Como chupar uma bala?

1 Pegar a bala;

2 Retirar o papel;

3 chupar a bala;

4 Jogar o papel no lixo.

Prof. Fabio Augusto Faria LP — Aula 01

Organizacao de um computadorAlgoritmos

A linguagem C

Algoritmos

Algoritmos podem ser especificados de varias formas, inclusiveem portugues.

Exemplo 2: Fritar um ovo?

1 .

2 ..

3 ...

4 ....

Exemplo 3: Somar dois valores?

1 .

2 ..

3 ...

4 ....

Prof. Fabio Augusto Faria LP — Aula 01

Organizacao de um computadorAlgoritmos

A linguagem C

Exercıcios para entregar

Crie uma sequencia logica para tomar banho.

Faca um algoritmo para somar dois numeros e multiplicar oresultado pelo primeiro numero.

Descreva com detalhes a sequencia logica para Trocar umpneu de um carro.

Faca um algoritmo para trocar uma lampada. Descreva comdetalhes.

Prof. Fabio Augusto Faria LP — Aula 01

Organizacao de um computadorAlgoritmos

A linguagem C

Algoritmos

Pseudocodigo;

Diagrama de blocos ou fluxograma.

Prof. Fabio Augusto Faria LP — Aula 01

Organizacao de um computadorAlgoritmos

A linguagem C

Algoritmos - Pseudocodigo

Sao independentes das linguagens de programacao;

Devem ser facil de se interpretar e facil de codificar;

Devem ser o intermediario entre a linguagem falada e alinguagem de programacao (e.g., C, Java e Python).

Regras para construcao:

Prof. Fabio Augusto Faria LP — Aula 01

Organizacao de um computadorAlgoritmos

A linguagem C

Algoritmos - Pseudocodigo

Regras para construcao:

Usar somente um verbo por frase;Imaginar que voce esta desenvolvendo um algoritmo parapessoas que nao trabalham com informatica;Usar frases curtas e simples;Ser objetivo;Procurar usar palavras que nao tenham sentido dubio.

Prof. Fabio Augusto Faria LP — Aula 01

Organizacao de um computadorAlgoritmos

A linguagem C

Algoritmos - Pseudocodigo

Exemplo: Calcular a media aritmetica dos alunos. Os alunosrealizarao quatro provas: P1, P2, P3 e P4.

Quais sao os dados de entrada?Qual sera o processamento a ser utilizado?Quais serao os dados de saıda?

Prof. Fabio Augusto Faria LP — Aula 01

Organizacao de um computadorAlgoritmos

A linguagem C

Algoritmos - Pseudocodigo

Algoritmo:1 Receba a nota da prova 12 Receba a nota da prova 23 Receba a nota da prova 34 Receba a nota da prova 45 Some todas as notas e divida o resultado por 46 Mostre o resultado da divisao

Prof. Fabio Augusto Faria LP — Aula 01

Organizacao de um computadorAlgoritmos

A linguagem C

Exercıcios para entregar

Identifique os dados de entrada, processamento e saıda noalgoritmo abaixo:

1 Receba codigo da peca;2 Receba valor da peca;3 Receba Quantidade de pecas;4 Calcule o valor total da peca (Quantidade * Valor da peca);5 Mostre o codigo da peca e seu valor total.

Prof. Fabio Augusto Faria LP — Aula 01

Organizacao de um computadorAlgoritmos

A linguagem C

Algoritmos - Diagrama de Blocos ou Fluxograma

E uma forma padronizada e eficaz para representar os passoslogicos de um determinado processamento;

Pode-se definir uma sequencia de sımbolos, com significadobem definido;

Principal funcao e facilitar a visualizacao dos passos de umprocessamento.

Prof. Fabio Augusto Faria LP — Aula 01

Organizacao de um computadorAlgoritmos

A linguagem C

Algoritmos - Diagrama de Blocos ou Fluxograma

Prof. Fabio Augusto Faria LP — Aula 01

Organizacao de um computadorAlgoritmos

A linguagem C

Algoritmos - Diagrama de Blocos ou Fluxograma

Fluxograma “Chupar uma bala”?

Prof. Fabio Augusto Faria LP — Aula 01

Organizacao de um computadorAlgoritmos

A linguagem C

Algoritmos - Diagrama de Blocos ou Fluxograma

Fluxograma “Chupar uma bala”?

Prof. Fabio Augusto Faria LP — Aula 01

Organizacao de um computadorAlgoritmos

A linguagem C

Algoritmos - Diagrama de Blocos ou Fluxograma

Fluxograma “Calcular media aritmetica dos alunos”?

Prof. Fabio Augusto Faria LP — Aula 01

Organizacao de um computadorAlgoritmos

A linguagem C

Exercıcios para entregar

1 Construa um diagrama de blocos que:

Leia a cotacao do dolar;Leia um valor em dolares;Converta esse valor para Real;Mostre o resultado;

2 Desenvolva um diagrama que:

Leia 4 (quatro) numeros;Calcule o quadrado para cada um;Somem todos os numeros;Mostre o resultado;

Prof. Fabio Augusto Faria LP — Aula 01

Organizacao de um computadorAlgoritmos

A linguagem C

Exercıcios para entregar

1 Construa um algoritmo para pagamento de comissao devendedores de pecas, levando-se em consideracao que suacomissao sera de 5% do total da venda e que voce tem osseguintes dados:

Identificacao do vendedor;Codigo da peca;Preco unitario da peca;Quantidade vendida;

2 Construa o diagrama de blocos do algoritmo desenvolvido noexercıcio anterior.

Prof. Fabio Augusto Faria LP — Aula 01

Organizacao de um computadorAlgoritmos

A linguagem C

De algoritmos a programas

Como transformar um algoritmo em linguagem que ocomputador entenda?

Deve ser capaz de expressar tudo o que o computador podefazer.

Nao pode ser ambıgua.

Prof. Fabio Augusto Faria LP — Aula 01

Organizacao de um computadorAlgoritmos

A linguagem C

Um pouco de historia

Programacao em codigo absoluto ou binario (apenas 0s e 1s).

ENIAC

Prof. Fabio Augusto Faria LP — Aula 01

Organizacao de um computadorAlgoritmos

A linguagem C

Linguagem Assembly

Um programa, chamado montador ou assembler, faz atransformacao em codigo absoluto.

LOOP: MOV A, 3

INC A

JMP LOOP

Prof. Fabio Augusto Faria LP — Aula 01

Organizacao de um computadorAlgoritmos

A linguagem C

Linguagens de alto nıvel

Mais distantes da maquina e mais proximas de linguagensnaturais (ingles, portugues, etc.).

Mesmo mais compreensıveis, elas nao sao ambıguas.

Um compilador as transforma em codigo executavel.

Exemplos de linguagens

C

Pascal

Java

Prof. Fabio Augusto Faria LP — Aula 01

Organizacao de um computadorAlgoritmos

A linguagem C

Primeiro programa em C

Um programa em C e um arquivo texto, contendo declaracoes eoperacoes da linguagem. Isto e chamado de codigo fonte.

#include <stdio.h>

main() {

printf("Hello, world!\n");

}

Prof. Fabio Augusto Faria LP — Aula 01

Organizacao de um computadorAlgoritmos

A linguagem C

Como executar este programa

Para executar um programa a partir do seu codigo fonte enecessario compila-lo, gerando codigo binario ou executavel. Estepode ser executado como qualquer outro programa de aplicacao.

$ gcc hello.c -o hello

$ hello

Hello, world!

Prof. Fabio Augusto Faria LP — Aula 01

Organizacao de um computadorAlgoritmos

A linguagem C

O que sao erros de compilacao?

Caso o programa nao esteja de acordo com as regras dalinguagem, erros de compilacao ocorrerao. Ler e entender esteserros e muito importante.

#include <stdio.h>

main() {

printf("Hello, world!\n");

$ gcc hello.c -o hello

hello.c: In function ‘main’:

hello.c:5: error: syntax error at end of input

Prof. Fabio Augusto Faria LP — Aula 01

Organizacao de um computadorAlgoritmos

A linguagem C

O que sao erros de execucao?

Acontecem quando o comportamento do programa diverge doesperado e podem acontecer mesmo quando o programa compilacorretamente.

#include <stdio.h>

main() {

printf("Hello, world! $#%#@%\n");

}

$ gcc hello.c -o hello

$ hello

Hello, world! $#%#@%

Prof. Fabio Augusto Faria LP — Aula 01

Organizacao de um computadorAlgoritmos

A linguagem C

O que e um depurador?

Ferramenta que executa um programa passo a passo.

Ajuda a encontrar erros de execucao (bugs).

Exemplo

gdb

Prof. Fabio Augusto Faria LP — Aula 01

Organizacao de um computadorAlgoritmos

A linguagem C

Um exemplo mais complexo

#include <stdio.h>

main() {

int x, y;

printf("x: ");

scanf("%d", &x);

printf("y: ");

scanf("%d", &y);

if (x > y)

printf ("O maior numero e x = %d\n", x);

else

printf ("O maior numero e y = %d\n", y);

}

Prof. Fabio Augusto Faria LP — Aula 01