Bruno Correa. Formação Mestrado: IME - Instituto Militar de Engenharia Graduação: IST-...

Post on 17-Apr-2015

105 views 0 download

Transcript of Bruno Correa. Formação Mestrado: IME - Instituto Militar de Engenharia Graduação: IST-...

PRCBruno Correa

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 brunos@lncc.br

Professor

PRC – Programação de Computadores◦ Algoritmos

Apenas caneta e papel◦ Linguagem C

Turbo C DEV

42 aulas

Disciplina

Trabalhos◦ C

Provas ◦ 05 ou 06 de Outubro◦ 01 de Dezembro

Avaliação

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

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

Exemplo de Algoritmo

Ligação telefônica

Exemplo de Algoritmo

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

Exemplo Algoritmo

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

Fibonacci”.◦ por quê?

Pergunta

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

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

Fluxograma

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).

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

Exemplo Portugol

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

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

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

Operadores Aritméticos

Operadores Relacionais

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

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

Operadores Lógicos

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

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

Tabela Verdade

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

Operações Aritméticas

Prioridade nas operações

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

(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

(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

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

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

Um programa simples – Imprimir uma linha de texto

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

Chamamos o executavel que foi gerado na compilação

◦ main◦ ./main

Executando um programa em C

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

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

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

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

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

Algoritmos X C

Variáveis

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

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

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

Exemplos◦ Válidos

NOME, TELEFONE, IDADE_FILHO, IdadeFilho, NOTA1,

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

numero/complemento

Variáveis

Palavras Reservadas

Tipos de Dados

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

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

Caracteres não imprimíveis

Caracteres não imprimíveis

Caracteres imprimíveis

Testando caracteres

Lendo valores

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

Exercício

Resposta

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

Resposta