bruno correa. formação mestrado: ime - instituto militar de engenharia graduação: ist-...

57
PRC Bruno Correa

Upload: internet

Post on 17-Apr-2015

105 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Bruno Correa. Formação Mestrado: IME - Instituto Militar de Engenharia Graduação: IST- Petrópolis Ocupação Bolsista no LNCC Professor ISTs Paracambi e

PRCBruno Correa

Page 2: Bruno Correa. Formação Mestrado: IME - Instituto Militar de Engenharia Graduação: IST- Petrópolis Ocupação Bolsista no LNCC Professor ISTs Paracambi e

Bruno Correa

◦ Formação Mestrado: IME - Instituto Militar de Engenharia Graduação: IST- Petrópolis

◦ Ocupação Bolsista no LNCC Professor ISTs Paracambi e Petrópolis

◦ Contatos [email protected]

Professor

Page 3: Bruno Correa. Formação Mestrado: IME - Instituto Militar de Engenharia Graduação: IST- Petrópolis Ocupação Bolsista no LNCC Professor ISTs Paracambi e

PRC – Programação de Computadores◦ Algoritmos

Apenas caneta e papel◦ Linguagem C

Turbo C DEV

42 aulas

Disciplina

Page 4: Bruno Correa. Formação Mestrado: IME - Instituto Militar de Engenharia Graduação: IST- Petrópolis Ocupação Bolsista no LNCC Professor ISTs Paracambi e

Trabalhos◦ C

Provas ◦ 05 ou 06 de Outubro◦ 01 de Dezembro

Avaliação

Page 5: Bruno Correa. Formação Mestrado: IME - Instituto Militar de Engenharia Graduação: IST- Petrópolis Ocupação Bolsista no LNCC Professor ISTs Paracambi e

Um algoritmo é uma seqüência de instruções finita e ordenada de forma lógica para a resolução de uma determinada tarefa ou problema

O termo algoritmo está muito ligado à Ciência da Computação, mas, na realidade, ele pode ser aplicado a qualquer problema cuja solução possa ser decomposta em um grupo de instruções.

◦ Exemplo São exemplos de algoritmos instruções de montagem,

receitas, manuais de uso, etc.

O que são Algoritmos

Page 6: Bruno Correa. Formação Mestrado: IME - Instituto Militar de Engenharia Graduação: IST- Petrópolis Ocupação Bolsista no LNCC Professor ISTs Paracambi e

Um algoritmo é uma solução para um problema.

Em geral, existem muitos (senão infinitos) caminhos que levam a uma solução satisfatória.

Algoritmos

Page 7: Bruno Correa. Formação Mestrado: IME - Instituto Militar de Engenharia Graduação: IST- Petrópolis Ocupação Bolsista no LNCC Professor ISTs Paracambi e

Exemplo de Algoritmo

Ligação telefônica

Page 8: Bruno Correa. Formação Mestrado: IME - Instituto Militar de Engenharia Graduação: IST- Petrópolis Ocupação Bolsista no LNCC Professor ISTs Paracambi e

Exemplo de Algoritmo

O algoritmo acima, no entanto, poderia ser mais detalhado e completo.

Page 9: Bruno Correa. Formação Mestrado: IME - Instituto Militar de Engenharia Graduação: IST- Petrópolis Ocupação Bolsista no LNCC Professor ISTs Paracambi e

Exemplo Algoritmo

Page 10: Bruno Correa. Formação Mestrado: IME - Instituto Militar de Engenharia Graduação: IST- Petrópolis Ocupação Bolsista no LNCC Professor ISTs Paracambi e

Um algoritmo não pode conter um comando para como:◦ “Escreva todos os termos da sequencia

Fibonacci”.◦ por quê?

Pergunta

Page 11: Bruno Correa. Formação Mestrado: IME - Instituto Militar de Engenharia Graduação: IST- Petrópolis Ocupação Bolsista no LNCC Professor ISTs Paracambi e

Linguagem Natural◦ Os algoritmos são expressos diretamente em

linguagem natural (ex.o português como no exemplo do bolo).

Fluxograma◦ Esta é um representação gráfica que emprega formas

geométricas padronizadas para indicar as diversas acções e decisões que devem ser executadas para resolver o problema.

Pseudo-linguagem◦ Emprega uma linguagem intermediária entre a linguagem natural

e uma linguagem de programação para descrever os algoritmos.

Representações de Algoritmos

Page 12: Bruno Correa. Formação Mestrado: IME - Instituto Militar de Engenharia Graduação: IST- Petrópolis Ocupação Bolsista no LNCC Professor ISTs Paracambi e

Linguagem Natural

Algoritmo para trocar uma lâmpada

1 – verifico se a lâmpada realmente está queimada

2 – compro uma lâmpada nova

3 – subo na escada

4 –retiro a lâmpada queimada

5 – coloco a lâmpada nova

Page 13: Bruno Correa. Formação Mestrado: IME - Instituto Militar de Engenharia Graduação: IST- Petrópolis Ocupação Bolsista no LNCC Professor ISTs Paracambi e

Fluxograma

Page 14: Bruno Correa. Formação Mestrado: IME - Instituto Militar de Engenharia Graduação: IST- Petrópolis Ocupação Bolsista no LNCC Professor ISTs Paracambi e

Pseudo-linguagem Para que o algoritmo possa ser executado por uma

máquina é importante que as instruções sejam corretas e sem ambigüidades.

Portanto, a forma especial de linguagem que utilizaremos é bem mais restrita que o Português e com significados bem definidos para todos os termos utilizados nas instruções.

Essa linguagem é conhecida como Português Estruturado (às vezes também chamada de Portugol).

Page 15: Bruno Correa. Formação Mestrado: IME - Instituto Militar de Engenharia Graduação: IST- Petrópolis Ocupação Bolsista no LNCC Professor ISTs Paracambi e

O Portugol é, na verdade, uma simplificação extrema do Português, limitada a umas poucas palavras e estruturas que têm um significado muito bem definido.

Ao conjunto de palavras e regras que definem o formato das sentenças válidas chamamos sintaxe da linguagem.

Aprender as palavras e regras que fazem parte dessa sintaxe é fundamental; no entanto, não é o maior objetivo deste curso.

Portugol

Page 16: Bruno Correa. Formação Mestrado: IME - Instituto Militar de Engenharia Graduação: IST- Petrópolis Ocupação Bolsista no LNCC Professor ISTs Paracambi e

Exemplo Portugol

Page 17: Bruno Correa. Formação Mestrado: IME - Instituto Militar de Engenharia Graduação: IST- Petrópolis Ocupação Bolsista no LNCC Professor ISTs Paracambi e

O computador, a princípio, é uma máquina burra.

Para que ele faça uma determinada tarefa - calcular uma folha de pagamento, por exemplo -, é necessário que ele execute um programa.

Um programa é um conjunto de milhares de instruções que indicam ao computador, passo a passo, o que ele tem que fazer.

Algoritmos Computacionais

Page 18: Bruno Correa. Formação Mestrado: IME - Instituto Militar de Engenharia Graduação: IST- Petrópolis Ocupação Bolsista no LNCC Professor ISTs Paracambi e

Uma linguagem de programação contém os comandos que fazem o computador escrever algo na tela, realizar cálculos aritméticos, receber uma entrada de dados via teclado, e milhares de outras coisas, mas estes comandos precisam estar em uma ordem lógica.

Algoritmos Computacionais

Page 19: Bruno Correa. Formação Mestrado: IME - Instituto Militar de Engenharia Graduação: IST- Petrópolis Ocupação Bolsista no LNCC Professor ISTs Paracambi e

Para a construção de algoritmos que realizam cálculo matemáticos, todas as expressões aritméticas devem ser linearizadas

Linearização de Expressões

Page 20: Bruno Correa. Formação Mestrado: IME - Instituto Militar de Engenharia Graduação: IST- Petrópolis Ocupação Bolsista no LNCC Professor ISTs Paracambi e

Operadores Aritméticos

Page 21: Bruno Correa. Formação Mestrado: IME - Instituto Militar de Engenharia Graduação: IST- Petrópolis Ocupação Bolsista no LNCC Professor ISTs Paracambi e

Operadores Relacionais

Exemplo:• 2+5>4 resulta VERDADEIRO• 3<>3 resulta FALSO

Page 22: Bruno Correa. Formação Mestrado: IME - Instituto Militar de Engenharia Graduação: IST- Petrópolis Ocupação Bolsista no LNCC Professor ISTs Paracambi e

Os operadores lógicos atuam sobre expressões e também resultam em valores lógicos VERDADEIRO ou FALSO.

Operadores Lógicos

Page 23: Bruno Correa. Formação Mestrado: IME - Instituto Militar de Engenharia Graduação: IST- Petrópolis Ocupação Bolsista no LNCC Professor ISTs Paracambi e

Exemplos◦ (2+5>4) e (3<>3) resulta FALSO, pois

VERDADEIRO e FALSO resulta FALSO.

◦ (2+4>8) ou (3=3) resulta VERDADEIRO, pois VERDADEIRO ou FALSO resulta VERDADEIRO

Operadores Lógicos

Page 24: Bruno Correa. Formação Mestrado: IME - Instituto Militar de Engenharia Graduação: IST- Petrópolis Ocupação Bolsista no LNCC Professor ISTs Paracambi e

A tabela abaixo – chamada tabela-verdade – mostra os resultados das aplicações dos operadores lógicos conforme os valores dos operadores envolvidos.

Tabela Verdade

Page 25: Bruno Correa. Formação Mestrado: IME - Instituto Militar de Engenharia Graduação: IST- Petrópolis Ocupação Bolsista no LNCC Professor ISTs Paracambi e

Usando as informações da tabela verdade reponda se as seguintes operações são verdadeiras ou falsas:

8 é par OU 6 é ímpar 8 para E 6 é ímpar (8+3) > 4 (8 <> 0) E (6>7) E ( 7 = 7)

Exercícios

Page 26: Bruno Correa. Formação Mestrado: IME - Instituto Militar de Engenharia Graduação: IST- Petrópolis Ocupação Bolsista no LNCC Professor ISTs Paracambi e

Operações Aritméticas

Prioridade nas operações

(2 + 2)/2 resulta 2 e 2 + 2/2 resulta 3

Page 27: Bruno Correa. Formação Mestrado: IME - Instituto Militar de Engenharia Graduação: IST- Petrópolis Ocupação Bolsista no LNCC Professor ISTs Paracambi e

(2>3) ou (3<2) e (2<3) //resultado seria Falso (2>3) e (3<2) ou (2<3) //resultado seria Verdadeiro

Prioridade nas operações

Page 28: Bruno Correa. Formação Mestrado: IME - Instituto Militar de Engenharia Graduação: IST- Petrópolis Ocupação Bolsista no LNCC Professor ISTs Paracambi e

(2>3) ou (3<2) e (2<3) (2>3) e (3<2) e (2<3) (44>3) ou (3<2) e (2<3) (1<3) e(3<2) ou (2<3) (4<>3) ou (3=3) ou (2<3) (2>3) ou (3<2) e (2<3)

Exercícios

Page 29: Bruno Correa. Formação Mestrado: IME - Instituto Militar de Engenharia Graduação: IST- Petrópolis Ocupação Bolsista no LNCC Professor ISTs Paracambi e

Desenvolvida a partir de duas linguagens anteriores:◦ BCPL◦ B

Hoje é a segunda linguagem mais utilizada no mundo

Compiladores◦ GCC◦ G++◦ Dev-C++◦ C++ Builder – Borland◦ Visual C++ - Microsoft

Linguagem C

Page 30: Bruno Correa. Formação Mestrado: IME - Instituto Militar de Engenharia Graduação: IST- Petrópolis Ocupação Bolsista no LNCC Professor ISTs Paracambi e

O C é "Case Sensitive“

◦ vamos começar o nosso curso ressaltando um ponto de suma importância: o C é "Case Sensitive", isto é, maiúsculas e minúsculas fazem diferença.

◦ Se declararmos uma variável com o nome soma ela será diferente de Soma

Linguagem C

Page 31: Bruno Correa. Formação Mestrado: IME - Instituto Militar de Engenharia Graduação: IST- Petrópolis Ocupação Bolsista no LNCC Professor ISTs Paracambi e

Um programa simples – Imprimir uma linha de texto

Page 32: Bruno Correa. Formação Mestrado: IME - Instituto Militar de Engenharia Graduação: IST- Petrópolis Ocupação Bolsista no LNCC Professor ISTs Paracambi e

Utilizando o compilador GCC via terminal

◦ gcc <nome do arquivo>.c –o <nome do executavel>

◦ Exemplo: gcc main.c –o main

A extensão dos arquivos de código do C são sempre .c

Compilando um programa em C

Page 33: Bruno Correa. Formação Mestrado: IME - Instituto Militar de Engenharia Graduação: IST- Petrópolis Ocupação Bolsista no LNCC Professor ISTs Paracambi e

Chamamos o executavel que foi gerado na compilação

◦ main◦ ./main

Executando um programa em C

Page 34: Bruno Correa. Formação Mestrado: IME - Instituto Militar de Engenharia Graduação: IST- Petrópolis Ocupação Bolsista no LNCC Professor ISTs Paracambi e

Apesar de ser um programa simples ele já apresenta alguns aspectos interessantes

A primeira linha começando /* e terminando com */ apresenta um comentário

Os comentários são ignorandos pelos compiladores

Aspectos importantes

Page 35: Bruno Correa. Formação Mestrado: IME - Instituto Militar de Engenharia Graduação: IST- Petrópolis Ocupação Bolsista no LNCC Professor ISTs Paracambi e

A linha main()

◦ Os programas em C possuem uma ou mais funções e uma delas deve ser chamada main

◦ Todos os programas em C começam a ser executados pela função main

Aspectos importantes

Page 36: Bruno Correa. Formação Mestrado: IME - Instituto Militar de Engenharia Graduação: IST- Petrópolis Ocupação Bolsista no LNCC Professor ISTs Paracambi e

A chave esquerda, {, deve começar o corpo de todas as funções.

Uma chave direita, }, equivalente deve terminar cada função.

Este par de chaves e a parte do programa entre elas também é chamado um bloco.

Aspectos importantes

Page 37: Bruno Correa. Formação Mestrado: IME - Instituto Militar de Engenharia Graduação: IST- Petrópolis Ocupação Bolsista no LNCC Professor ISTs Paracambi e

A linha ◦ printf("Bem-vindo ao C!\n");

◦ manda o computador realizar uma ação, especificamente imprimir na tela a string de caracteres limitada pelas aspas

◦ A linha inteira, incluindo printf, seus argumentos dentro dos parênteses e o ponto-e-vírgula (;), é chamada uma instrução.

Aspectos importantes

Page 38: Bruno Correa. Formação Mestrado: IME - Instituto Militar de Engenharia Graduação: IST- Petrópolis Ocupação Bolsista no LNCC Professor ISTs Paracambi e

Todas as instruções devem terminar com um ponto-e-vírgula

Observe que os caracteres \n não são impressos na tela.

A seqüência de escape \n significa nova linha e faz com que o cursor se posicione no início da nova linha na tela.

Aspectos importantes

Page 39: Bruno Correa. Formação Mestrado: IME - Instituto Militar de Engenharia Graduação: IST- Petrópolis Ocupação Bolsista no LNCC Professor ISTs Paracambi e

Algoritmos X C

Page 40: Bruno Correa. Formação Mestrado: IME - Instituto Militar de Engenharia Graduação: IST- Petrópolis Ocupação Bolsista no LNCC Professor ISTs Paracambi e

Variáveis

Page 41: Bruno Correa. Formação Mestrado: IME - Instituto Militar de Engenharia Graduação: IST- Petrópolis Ocupação Bolsista no LNCC Professor ISTs Paracambi e

Uma variável pode ser vista como uma caixa com um rótulo ou nome colado a ela, que num dado instante guarda um determinado objeto.

O conteúdo desta caixa não é algo fixo, permanente.

Na verdade, essa caixa pode ter seu conteúdo alterado diversas vezes

Contudo, o conteúdo deve ser sempre do mesmo tipo.

Variáveis

Page 42: Bruno Correa. Formação Mestrado: IME - Instituto Militar de Engenharia Graduação: IST- Petrópolis Ocupação Bolsista no LNCC Professor ISTs Paracambi e

Variáveis são palavras que tem um significado bem específico em um algoritmo.

Para que o computador possa executar comandos que envolvem variáveis da maneira correta, ele deve conhecer os detalhes das variáveis que pretendemos usar.

Esses detalhes são:◦ identificador desta variável (nome)◦ tipo de valores que essa variável irá conter

Variáveis

Page 43: Bruno Correa. Formação Mestrado: IME - Instituto Militar de Engenharia Graduação: IST- Petrópolis Ocupação Bolsista no LNCC Professor ISTs Paracambi e

A identificação ou nomeção de variáveis segue algumas regras:

1. nomes de variáveis não podem ser iguais a palavras reservadas;

2. nomes de variáveis devem possuir como primeiro caractere uma letra ousublinhado '_' (os outros caracteres podem ser letras, números e sublinhado);

3. nomes de variáveis devem ter no máximo 127 caracteres;

4. nomes de variáveis não podem conter espaços em branco;

5. na sintaxe do Português Estruturado, não há diferença entre letras maiúsculas de minúsculas (NOME é o mesmo que noMe).

Variáveis

Page 44: Bruno Correa. Formação Mestrado: IME - Instituto Militar de Engenharia Graduação: IST- Petrópolis Ocupação Bolsista no LNCC Professor ISTs Paracambi e

Exemplos◦ Válidos

NOME, TELEFONE, IDADE_FILHO, IdadeFilho, NOTA1,

◦ Inválidos 3Endereco, Estado Civil, PARA, algoritmo,

numero/complemento

Variáveis

Page 45: Bruno Correa. Formação Mestrado: IME - Instituto Militar de Engenharia Graduação: IST- Petrópolis Ocupação Bolsista no LNCC Professor ISTs Paracambi e

Palavras Reservadas

Page 46: Bruno Correa. Formação Mestrado: IME - Instituto Militar de Engenharia Graduação: IST- Petrópolis Ocupação Bolsista no LNCC Professor ISTs Paracambi e

Tipos de Dados

Page 47: Bruno Correa. Formação Mestrado: IME - Instituto Militar de Engenharia Graduação: IST- Petrópolis Ocupação Bolsista no LNCC Professor ISTs Paracambi e

ASCII (acrônimo para American Standard Code for Information Interchange, que em português significa "Código Padrão Americano para o Intercâmbio de Informação“)

é uma codificação de caracteres de sete bits baseada no alfabeto inglês.

Os códigos ASCII representam texto em computadores, equipamentos de comunicação, entre outros dispositivos que trabalham com texto.

ASCII

Page 48: Bruno Correa. Formação Mestrado: IME - Instituto Militar de Engenharia Graduação: IST- Petrópolis Ocupação Bolsista no LNCC Professor ISTs Paracambi e

Desenvolvida a partir de 1960, grande parte das codificações de caracteres modernas a herdaram como base

A codificação define 128 caracteres, preenchendo completamente os sete bits disponíveis

Desses, 33 não são imprimíveis, como caracteres de controle atualmente não utilizáveis para edição de texto porem amplamente utilizado em dispositivos de comunicação, que afetam o processamento do texto.

ASCII

Page 49: Bruno Correa. Formação Mestrado: IME - Instituto Militar de Engenharia Graduação: IST- Petrópolis Ocupação Bolsista no LNCC Professor ISTs Paracambi e

Caracteres não imprimíveis

Page 50: Bruno Correa. Formação Mestrado: IME - Instituto Militar de Engenharia Graduação: IST- Petrópolis Ocupação Bolsista no LNCC Professor ISTs Paracambi e

Caracteres não imprimíveis

Page 51: Bruno Correa. Formação Mestrado: IME - Instituto Militar de Engenharia Graduação: IST- Petrópolis Ocupação Bolsista no LNCC Professor ISTs Paracambi e

Caracteres imprimíveis

Page 52: Bruno Correa. Formação Mestrado: IME - Instituto Militar de Engenharia Graduação: IST- Petrópolis Ocupação Bolsista no LNCC Professor ISTs Paracambi e

Testando caracteres

Page 53: Bruno Correa. Formação Mestrado: IME - Instituto Militar de Engenharia Graduação: IST- Petrópolis Ocupação Bolsista no LNCC Professor ISTs Paracambi e

Lendo valores

Page 54: Bruno Correa. Formação Mestrado: IME - Instituto Militar de Engenharia Graduação: IST- Petrópolis Ocupação Bolsista no LNCC Professor ISTs Paracambi e

Construa um algoritmo que lê as notas de um aluno e calcule e exibe a média harmônica das provas.

Exercício

Page 55: Bruno Correa. Formação Mestrado: IME - Instituto Militar de Engenharia Graduação: IST- Petrópolis Ocupação Bolsista no LNCC Professor ISTs Paracambi e

Resposta

Page 56: Bruno Correa. Formação Mestrado: IME - Instituto Militar de Engenharia Graduação: IST- Petrópolis Ocupação Bolsista no LNCC Professor ISTs Paracambi e

Construa um algoritmo que lê o valor do raio e calcule a área do círculo correspondente.

Etapa 1: o cálculo da área do círculo é

Exercício

Page 57: Bruno Correa. Formação Mestrado: IME - Instituto Militar de Engenharia Graduação: IST- Petrópolis Ocupação Bolsista no LNCC Professor ISTs Paracambi e

Resposta