You are on page 1of 45
Faculdade Pitágoras Algoritmos e Programação Professora: Silvana Diniz UNIDADE I Introdução aos Algoritmos Definição de algoritmos:http://receitas.maisvoce.globo.com/Receitas/Carnes/0,,REC25021 7770 23+PICANHA+DE+SOL,00.html Outros exemplos de algoritmos na nossa vida cotidiana podem ser citados: ‐ algoritmo de como tomar um medicamento; ‐ algoritmo de como ir de um ponto a outro numa cidade; ‐ algoritmo de como montar uma bicicleta. Algoritmos e Lógica: Via de regra, a elaboração de um algoritmo para solucionar um determinado problema envolve definir os passos intermediários numa seqüência lógica. Exemplo: Um senhor está numa das margens de um rio com três cargas: uma raposa, um galo e um saco de milho. Ele deve atravessar o rio com suas três cargas e dispõe de um barco que comporta apenas ele próprio e uma de suas cargas de cada vez. Especifique uma sequência de viagens tal que o problema seja solucionado. Material baseado no conteúdo desenvolvido pelo professor Marco Aurélio Guimarães Moreira 1 " id="pdf-obj-0-2" src="pdf-obj-0-2.jpg">

Faculdade Pitágoras Algoritmos e Programação Professora: Silvana Diniz

UNIDADE I

Introdução aos Algoritmos 1

Definição de algoritmos:

Engenharia Elétrica / Automação 2º semestre 2011

NOTAS DE AULA

Dado um problema, um algoritmo é a especificação de uma sequência de ações cuja execução resulta na resolução do problema.

Dada a definição de algoritmos, vemos que os algoritmos não são específicos do domínio da computação. Algoritmos fazem parte do diaadia das pessoas, mesmo que elas não saibam o que são algoritmos. Por exemplo, abaixo está um algoritmo de como preparar uma “Picanha de sol”:

Modo de preparo (algoritmo) da “Picanha de sol”

Numa tigela coloque 1 kg de sal grosso, 1 peça de picanha cortada ao meio no sentido do comprimento e cubra com mais 1 kg de sal grosso. Deixe descansando por 24 horas em local arejado.

Depois de 24 horas, retire o excesso de sal grosso e mergulhe a picanha em 2 litros de leite. Deixe repousar por mais 24 horas para dessalgar.

Passado este período, retire a picanha do leite e sequea bem com um papel toalha. Corte a picanha em fatias e numa chapa com manteiga de garrafa, grelheos rapidamente OU coloque as fatias de picanha numa assadeira untada e asse em forno préaquecido a 180º C por 35 minutos.

4 ºSirva com vinagrete de feijão verde, ou purê de banana da terra, ou farofa, ou mandioca cozida ou chips de mandioca.

Outros exemplos de algoritmos na nossa vida cotidiana podem ser citados:

algoritmo de como tomar um medicamento; algoritmo de como ir de um ponto a outro numa cidade; algoritmo de como montar uma bicicleta.

Algoritmos e Lógica:

Via de regra, a elaboração de um algoritmo para solucionar um determinado problema envolve definir os passos intermediários numa seqüência lógica.

Exemplo:

Um senhor está numa das margens de um rio com três cargas: uma raposa, um galo e um saco de milho. Ele deve atravessar o rio com suas três cargas e dispõe de um barco que comporta apenas ele próprio e uma de suas cargas de cada vez. Especifique uma sequência de viagens tal que o problema seja solucionado.

1 Material baseado no conteúdo desenvolvido pelo professor Marco Aurélio Guimarães Moreira

Faculdade Pitágoras Algoritmos e Programação Professora: Silvana Diniz Engenharia Elétrica / Automação 2º semestre 2011 NOTAS

Faculdade Pitágoras Algoritmos e Programação Professora: Silvana Diniz

Engenharia Elétrica / Automação 2º semestre 2011

NOTAS DE AULA

A tabela a seguir mostra uma possível seqüência de operações cuja execução resulta na solução para o problema. Observe que, dependendo da ordem das operações, o galo pode ficar sozinho com a raposa ou o milho pode ficar sozinho com o galo. Isso implicaria perda de uma das cargas, o que vai contra os requisitos da solução.

Cargas do lado esquerdo depois da operação

Operação

Cargas do lado direito depois da operação

galo, raposa, milho, senhor

Início

 

raposa, milho

Atravesse com o galo

galo, senhor

raposa, milho, senhor

Volte sozinho

Galo

Milho

Atravesse com a raposa

Raposa, galo, senhor

galo, milho, senhor

Volte com o galo

Raposa

Galo

Atravesse com o milho

Milho, raposa, senhor

Galo, senhor

Volte sozinho

Milho, raposa

 

Atravesse com o galo

Galo, raposa, milho, senhor

Algoritmo de como construir um algoritmo:

Podemos definir alguns passos básicos para a construção de um algoritmo:

Passo 1) Dado um problema, faça uma análise preliminar e entenda o problema com a maior precisão possível;

Passo 2) Desenvolva um algoritmo para resolver o problema;

Passo 3) Execute o algoritmo para vários testes cujos resultados sejam conhecidos, ou seja, faça um Teste de Qualidade;

Passo 4) Caso o resultado seja satisfatório, o algoritmo está pronto para ser implementado;

Passo 5) Caso contrário, volte ao passo 2.

Algoritmos e programas:

Os programas de computador são algoritmos implementados numa linguagem de programação (C, C++, Pascal, Java, C# etc.). Normalmente, um programa de computador é composto por um conjunto de algoritmos, cada um dos quais responsável pela solução de um subproblema. Existem duas principais diferenças entre escrever um algoritmo a ser seguido por um ser humano e escrever um algoritmo e ser seguido por um computador. A primeira delas está na linguagem utilizada. Enquanto para um ser humano podemos utilizar o português, no caso dos computadores, estamos restritos às linguagens de programação, que, por sua vez, são convertidas em linguagem de máquina pelos compiladores. A segunda principal diferença está no fato de que uma pessoa consegue tomar decisões por conta própria na ocorrência de situações inesperadas na execução de um algoritmo. Quando escrevemos um algoritmo para ser executado por um computador, todas as situações devem ser previstas e o tratamento adequado para cada uma delas deve ser especificado.

Faculdade Pitágoras Algoritmos e Programação Professora: Silvana Diniz Aplicações de algoritmos em Engenharia: Engenharia Elétrica /

Faculdade Pitágoras Algoritmos e Programação Professora: Silvana Diniz

Aplicações de algoritmos em Engenharia:

Engenharia Elétrica / Automação 2º semestre 2011

NOTAS DE AULA

Freqüentemente, a solução de problemas de engenharia pode ser descrita como uma seqüência sistematizada de passos. Nesses casos, podemos escrever algoritmos para solucionálos e deixar o trabalho repetitivo para ser realizado pelo computador.

Exemplos:

algoritmo para cálculo das correntes num circuito; algoritmo para o processo de mistura de duas substâncias; algoritmo para determinar uma seqüência de movimentos de um manipulador robótico num processo de solda. Percebese que o domínio das técnicas de construção de algoritmos é uma ferramenta essencial para um engenheiro.

Nível de abstração:

Abstração se refere à omissão de detalhes. Um algoritmo pode ser escrito com diferentes níveis de abstração. Considere, por exemplo, o algoritmo para ir de um ponto a outro numa cidade. Podemos especificar apenas os principais pontos de passagem (algoritmo em alto nível de abstração). Por outro lado, podese também especificar cada rua do caminho, cada mudança de faixa que o motorista deve efetuar. Os níveis de abstração estão também ligados com a linguagem de programação adotada. Dependendo da linguagem, um procedimento conceitualmente simples pode se transformar em dezenas de linhas de código. Linguagens de mais alto nível são mais próximas da linguagem humana (Português, Inglês etc.). Por outro lado, linguagens de mais baixo nível são mais próximas ao que o computador consegue processar (0s e 1s).

Descrição de Algoritmos:

Um mesmo problema pode ser resolvido por diferentes algoritmos. Por exemplo, para ir de um ponto a outro, podese adotar diferentes caminhos ou ainda diferentes meios de transporte. Cada algoritmo, por sua vez, pode ser descrito de diferentes maneiras. Considere, como exemplo, o problema de construir um algoritmo para calcular a corrente no circuito abaixo:

Faculdade Pitágoras Algoritmos e Programação Professora: Silvana Diniz Aplicações de algoritmos em Engenharia: Engenharia Elétrica /
Faculdade Pitágoras Algoritmos e Programação Professora: Silvana Diniz Engenharia Elétrica / Automação 2º semestre 2011 NOTAS

Faculdade Pitágoras Algoritmos e Programação Professora: Silvana Diniz

Engenharia Elétrica / Automação 2º semestre 2011

NOTAS DE AULA

A resolução do problema (especificação de um conjunto de ações que definem o algoritmo) pode, por exemplo, ser descrita de forma narrativa.

Descrição Narrativa:

Obtenha do usuário o valor de V Obtenha do usuário o valor de R Calcule I por I = V/R Informe ao usuário o valor de I

Descrição por fluxograma:

O mesmo algoritmo pode ser descrito na forma de um fluxograma:

Faculdade Pitágoras Algoritmos e Programação Professora: Silvana Diniz Engenharia Elétrica / Automação 2º semestre 2011 NOTAS

Fluxograma é uma representação gráfica de algoritmos, onde formas geométricas diferentes implicam ações (instruções e/ou comandos) distintos. As formas geométricas diferentes facilitam o entendimento das idéias.

Descrição por pseudocódigos:

O pseudocódigo é a escrita, por meio de regra predefinida, dos passos a serem seguidos para a resolução de um problema exposto em um enunciado. A conversão de um algoritmo de pseudocódigo para uma linguagem de programação é um passo fácil. Basta, para isso, o conhecimento do vocabulário e regras sintáticas da linguagem/idioma desejado.

Exemplo:

Resolução do problema do cálculo da corrente.

Faculdade Pitágoras Algoritmos e Programação Professora: Silvana Diniz Algoritmo CalculaCorrente Variáveis R: Real V: Real I:

Faculdade Pitágoras Algoritmos e Programação Professora: Silvana Diniz

Algoritmo CalculaCorrente Variáveis R: Real V: Real I: Real

Início

 

Escreva “Informe a tensão: “ Leia V Escreva “Informa a resistência: “ Leia R I V/R Escreva “A corrente é de: “, I

Fim

Engenharia Elétrica / Automação 2º semestre 2011

NOTAS DE AULA

Observe no código acima que os comandos entre os delimitadores Início e Fim têm um alinhamento deslocado à direita comparando aos delimitadores. Esse recurso é denominado indentação (também chamada de endentação ou identação). A indentação aumenta a legibilidade do código, torna mais fácil identificar o conteúdo de cada porção do código. Outro recurso para aumentar a legibilidade é utilizar nomes significativos para as variáveis. As variáveis, R, V e I, por exemplo, poderiam se chamar “carro”, “ônibus” e “bicicleta”. O algoritmo funcionaria da mesma forma e produziria os mesmos resultados. No entanto, um programador que tivesse que dar manutenção no código teria grande dificuldade em entender o seu funcionamento.

Exercícios para praticar EM AULA:

Exercício 1:

Com base no exemplo do algoritmo CalculaCorrente, faça um algoritmo em pseudocódigo para calcular o tempo gasto por um veículo num trajeto, dados a velocidade (constante) e a distância percorrida.

Exercícios para praticar EM CASA:

Exercício 2:

Dadas as medidas de uma sala em metros (comprimento e largura), informe a sua área em metros quadrados.

Faculdade Pitágoras Algoritmos e Programação Professora: Silvana Diniz Engenharia Elétrica / Automação 2º semestre 2011 NOTAS

Faculdade Pitágoras Algoritmos e Programação Professora: Silvana Diniz

Engenharia Elétrica / Automação 2º semestre 2011

NOTAS DE AULA

UNIDADE II Tipos de dados, variáveis e constantes

Variável:

Uma variável é um local (um endereço) na memória principal que armazena um conteúdo. Para facilitar a programação, nos é permitido dar nome a esse endereço. No exemplo do algoritmo de cálculo de corrente, V, R e I podem ser classificados como variáveis. Um dado é classificado como variável quando existe a possibilidade de que seja alterado em algum instante no decorrer do tempo, ou seja, durante a execução do algoritmo/programa. Em C++ todas as variáveis devem ser declaradas antes de serem usadas. Uma declaração especifica um tipo, e é seguida por uma lista de uma ou mais variáveis daquele tipo. A declaração de uma variável tem a seguinte forma geral:

<tipo> <nome> = <valor>;

Exemplos:

int inicio, fim, numero; float valor; short int codigo; char c, linha [100]; float media=0;

Os tipos de dados (int, float, short, char, etc.) serão explicados mais a frente. O <valor> é facultativo, ou seja, não é obrigatório em toda a declaração. O <valor> será muito útil na inicialização de variáveis, assunto que será abordado, mais tarde, quando iniciarmos a unidade de Estruturas de Repetição.

Constante:

Em oposição às variáveis, uma constante é um valor que não varia ao longo da execução de um algoritmo/programa. Por exemplo, um programa para calcular a área de um círculo, a área seria dada por:

A = PI*R*R

R

é variável (é um valor que depende do raio do círculo que o usuário informa)

PI

é constante (vale sempre 3,14159265 ) ...

A

é variável (representa a área e depende do raio que o usuário informa)

Em C++ , utilizamos o prefixo const associado a um tipo, um nome e um valor para definir uma constante. A declaração de uma constante tem a seguinte forma geral:

const <tipo> <nome> = <valor>;

Faculdade Pitágoras Algoritmos e Programação Professora: Silvana Diniz Exemplos: const int eterna = 256; const float

Faculdade Pitágoras Algoritmos e Programação Professora: Silvana Diniz

Exemplos:

const int eterna = 256; const float PI =3.14159265;

Nomenclatura de variáveis:

Engenharia Elétrica / Automação 2º semestre 2011

NOTAS DE AULA

Toda variável deve ser declarada antes de ser utilizada (em pseudocódigo ou em C). Declarar uma variável significa reservar um espaço na memória no computador utilizando uma nomenclatura apropriada, para que os dados (lidos do teclado ou calculados por expressões) possam ser guardados e acessados sempre que necessário. O nome dado às variáveis deve obedecer às seguintes regras:

deve começar com uma letra ou sublinhado “_”; todo o nome só pode conter letras, números ou sublinhado; Letras maiúsculas e minúsculas são consideradas diferentes (Soma é diferente de soma); Palavras reservadas não podem ser usadas como nomes de variáveis (veja as palavras reservadas no ANEXO I); Variáveis podem ter o tamanho de até 32 caracteres.

Exemplo:

Variáveis com nomes válidos:

Soma, _acumulador j1, R, V, I, hg123, HG123, INPS, IR.

Exemplo:

Variáveis com nomes inválidos:

1soma

e(2, j%, aq*, joao&Maria, João

É boa prática (mas não é regra) escolher nomes que indiquem a função da variável. Para uma variável que representa velocidade, poderia ser dado o nome “p”. No entanto, isso dificultaria a leitura do código. Nomes mais indicados seriam “v”, “vel”, ou mesmo “velocidade”. Outro ponto de suma importância: C é "case sensitive", ou seja, maiúsculas e minúsculas fazem diferença. Se declararmos uma variável com o nome ‘soma’ ela será diferente de Soma, SOMA, SoMa ou sOmA. Da mesma maneira, os comandos (todas as palavras reservadas) da linguagem C if e for, por exemplo, podem ser escritos em minúsculas, pois senão o compilador não irá interpretálos como sendo comandos, mas sim como variáveis. Por exemplo, se escreve If ou invés if, o compilador irá acusar um erro de “variável não declarada” e, consequentemente, não irá executar o algoritmo até que o erro seja corrigido, e o programa seja compilado novamente.

Faculdade Pitágoras Algoritmos e Programação Professora: Silvana Diniz Tipos de dados: Engenharia Elétrica / Automação 2º

Faculdade Pitágoras Algoritmos e Programação Professora: Silvana Diniz

Tipos de dados:

Engenharia Elétrica / Automação 2º semestre 2011

NOTAS DE AULA

Os dados manipulados por variáveis em um programa em C podem ser do tipo numérico, literal ou literal.

Dados numéricos inteiros:

São aqueles que não possuem componentes decimais ou fracionários, podendo ser positivos ou negativos. Tentam representar o conjunto dos números inteiros da Matemática.

Exemplo:

Variáveis que seriam declaradas como do tipo inteiro:

O que representa

Um possível nome

Um possível valor

Número de filhos na escola

n_filhos

2

Número de carros de uma empresa

n_carros

50

Número de peças vendidas

Pecas

0

Pontos por infração de trânsito

ptos_infracao

3

Dados numéricos reais:

São aqueles que podem possuir componentes decimais ou fracionários, e podem também ser positivos ou negativos. Aproximam o conjunto dos números reais da Matemática.

Exemplo:

Variáveis que seriam declaradas como do tipo real:

O que representa

Um possível nome

Um possível valor

Corrente em um circuito

I

2.03

Força aplicada

F

50.0

Altitude

altitude

1010.1

Dados literais:

Constituídos por uma sequência de caracteres contendo letras, dígitos e/ou símbolos especiais. Este tipo de dados é também muitas vezes chamado de cadeia de caracteres ou string. É comum, em algumas linguagens, a diferenciação entre a representação de um único dado literal, que é chamado de caractere (por exemplo, ‘a’) e um conjunto de caracteres (por exemplo, “abacate”. Para um único caractere, utilizamse aspas simples; para uma cadeia de caracteres, aspas duplas.

Exemplo:

Variáveis que seriam declaradas como do tipo literal

O que representa

Um possível nome

Um possível valor

Primeira letra do nome

primeira_letra

‘A’

Nome

nome

“Astrogildo”

Mensagem de erro

mensagem_erro

“operação inválida”

Dados lógicos:

São caracterizados como tipos lógicos os dados com valores Verdadeiro (1) ou Falso (0), sendo que este tipo de dado pode apresentar apenas um dos dois valores. A linguagem C não apresenta um tipo de dados especial para armazenar variáveis do tipo lógico. Normalmente, esse

Faculdade Pitágoras Algoritmos e Programação Professora: Silvana Diniz Engenharia Elétrica / Automação 2º semestre 2011 NOTAS

Faculdade Pitágoras Algoritmos e Programação Professora: Silvana Diniz

Engenharia Elétrica / Automação 2º semestre 2011

NOTAS DE AULA

tipo de informação é armazenada em variáveis do tipo inteiro (int). Valores diferentes de zero representam Verdadeiro; Falso é representado pelo valor 0 (zero).

Exemplo:

Variáveis que seriam declaradas como do tipo lógico

O que representa

Um possível nome

Um possível valor

Porta está aberta

porta_aberta

Verdadeiro

Nível acima de 10 metros

nivel10

Falso

Sistema ligado

ligado

Falso

Declaração dos vários tipos de variáveis em pseudocódigo e em C:

Declaração em pseudocódigo

Declaração correspondente em C

Variáveis:

 

a: Inteiro

int a;

b: Real

float b;

c: Caractere

char c;

d: Literal

char d[20];

e: Lógico

int e;

Obs.: Uma variável real pode ser declarada em C como do tipo float ou como do tipo double. Dessa forma, a declaração “float b;” poderia ser substituída por “double b;”. A diferença é que o tipo float ocupa metade do espaço em memória do tipo double. Por outro lado, variáveis do tipo double são representadas com maior precisão. A utilização do tipo double é recomendada apenas em casos específicos, como análise numéricas muito complexas são necessárias para garantir precisão.

Operadores:

São elementos funcionais que atuam sobre operandos e produzem um resultado. Como exemplo, na expressão 20 + 30, os números 20 e 30 são operandos relacionados pelo operador de adição (+). Os operadores são classificados quanto a dois critérios principais:

número de operandos sobre os quais atuam: unários, binários e ternários. tipos de operandos sobre os quais atuam: aritméticos, lógicos, relacionais e literais.

Expressões:

Combinação de variáveis, constantes e operadores que, uma vez avaliada, resulta em um

valor. As expressões podem ser do tipo aritméticas ou lógicas.

Expressões aritméticas:

São aquelas cujo resultado é do tipo numérico, seja ele inteiro ou real. Somente o uso de operadores aritméticos e variáveis numéricas é permitido em expressões desse tipo.

Operação

Operador em

Operador

Tipo

Prioridade

Exemplo

pseudocódigo

em C

Inversão de sinal

Unário

  • 1 (1) = 1

 

Manutenção de sinal

+

+

Unário

  • 1 +1 = 1

 
Faculdade Pitágoras Algoritmos e Programação Professora: Silvana Diniz Engenharia Elétrica / Automação 2º semestre 2011 NOTAS

Faculdade Pitágoras Algoritmos e Programação Professora: Silvana Diniz

Engenharia Elétrica / Automação 2º semestre 2011

NOTAS DE AULA

Multiplicação

*

*

Binário

  • 3 6*7=42

 

Divisão

/

/

Binário

  • 3 8/2=4

 

Adição

+

+

Binário

  • 4 1+2=3

 

Subtração

Binário

  • 4 45=1

 

A tabela de operadores aritméticos é válida tanto na convenção de pseudocódigo quanto em linguagem C. O valor na coluna de “Prioridade” define a ordem com que os operadores são aplicados. Em expressões com operadores de mesma prioridade, são executados os operadores da esquerda primeiro. Exemplos:

1 + 2 * 3 = 1 + (2*3) = 7 1 + 2 – 3*20/5 = (1+2) ((3*20)/5)

Note que a multiplicação é normalmente representada pelo símbolo * ao invés do símbolo x, que é mais comum em expressões aritméticas no contexto da Matemática. Em algumas linguagens de programação, a exponenciação é por vezes representada pelo símbolo ^” ou com o uso de função. Exemplos:

Em Matlab: 3^2 Em Java: Math.pow(3,2); Em C: pow(3,2);

Expressões lógicas:

São aquelas cuja avaliação resulta em um valor lógico (verdadeiro ou falso).

Operação

Operador em

Operado

Tipo

Prioridade

Exemplo

Exemplo em

pseudocódigo

r em C

em C

pseudocódigo

Disjunção

OU

||

Binário

  • 3 (3) || (0)

 

Verdadeiro OU Falso

Conjunção

E

&&

Binário

  • 2 (2) && (1)

 

Verdadeiro E Verdadeiro

Negação

NÃO

!

Unário

  • 1 !1

 

NÃO Verdadeiro

Tabela Verdade do Operador NÃO (NOT)

Primeira condição

Resultado

Verdadeira

Falso

Falsa

Verdadeiro

Tabela Verdade do Operador E (AND)

Primeira Condição

Segunda Condição

Resultado

Falsa

Falsa

Falso

Verdadeira

Falsa

Falso

Falsa

Verdadeira

Falso

Verdadeira

Verdadeira

Verdadeiro

Tabela Verdade do Operador OU (OR)

Primeira Condição

Segunda Condição

Resultado

Falsa

Falsa

Falso

Faculdade Pitágoras Algoritmos e Programação Professora: Silvana Diniz Engenharia Elétrica / Automação 2º semestre 2011 NOTAS

Faculdade Pitágoras Algoritmos e Programação Professora: Silvana Diniz

Engenharia Elétrica / Automação 2º semestre 2011

NOTAS DE AULA

Verdadeira

Falsa

Verdadeiro

Falsa

Verdadeira

Verdadeiro

Verdadeira

Verdadeira

Verdadeiro

Expressões Relacionais:

Realizam uma comparação entre duas variáveis de mesmo tipo e retornam um valor do tipo

lógico.

Comparação

Operador em

Operador

Tipo

Exemplo

Exemplo em

pseudocódigo

em C

em C

pseudocódigo

Igual

=

==

Binário

(a==b)

(a=b)

Diferente

<>

!=

Binário

(a!=b)

(a<>b)

Menor

<

<

Binário

(a<b)

(a<b)

Menor ou igual

<=

<=

Binário

(a<=3)

(a<=3)

Maior

>

>

Binário

(b>20)

(b>20)

Maior ou igual

>=

>=

Binário

(c>=b)

(c>=b)

Estrutura Básica de um Programa em C++ (Programando com Dev C++):

Temos abaixo a estrutura básica de um programa escrito na linguagem C++

#include <stdio.h> #include <iostream>

/* Um Primeiro Programa */

main()

{

printf ("OLA! EU ESTOU VIVO! \n"); //Escreve na tela a frase entre aspas system ("PAUSE"); return 0;

}

Explicando cada parte

#include <stdio.h> #include <iostream>

O cabeçalho #include<> serve para indicar ao compilador todas as bibliotecas que este programa utilizará. Na maioria dos programas que escreveremos durante esta apostila, utilizaremos o #include <stdio.h> e o #include <iostream>. A stdio.h contém as principais funções, comandos e classes de entrada e saída de C++, necessárias para realizar programas que, por exemplo, recebam dados via teclado e enviem dados via monitor. A iostream contém outras funções importantes como a de pausar o sistema para que possamos ver os resultados no monitor. Leia mais no ANEXO II, sobre as bibliotecas da linguagem C.

/* Um Primeiro Programa */

Faculdade Pitágoras Algoritmos e Programação Professora: Silvana Diniz Engenharia Elétrica / Automação 2º semestre 2011 NOTAS

Faculdade Pitágoras Algoritmos e Programação Professora: Silvana Diniz

Engenharia Elétrica / Automação 2º semestre 2011

NOTAS DE AULA

Quando fazemos um programa, uma boa idéia é usar comentários que ajudem a elucidar o funcionamento do mesmo. No exemplo apresentado temos um comentário: /*Um Primeiro Programa*/. O compilador desconsidera qualquer coisa que esteja começando com /* e terminando com */. Um comentário pode, inclusive, ter mais de uma linha. Aliás, se o comentário for de apenas uma linha, pode se usar //.

int main()

{

.....

}

main() indica que estamos definindo uma função de nome main. Todos os programas em C têm que ter uma função main, pois é esta função que será chamada quando o programa for executado. No exemplo, a função main não recebe argumentos (os parênteses estão vazios). Após o main () iniciase um {. Esta chave irá delimitar que o corpo (conteúdo) da função main e os comandos pertencentes a mesma. No final de todos os comandos um } deverá ser adicionado para finalizar a função main. Sendo assim, o O código que estiver dentro das chaves será executado seqüencialmente quando a função for chamada.

printf ("OLA! EU ESTOU VIVO! \n"); //Escreve na tela a frase entre aspas

Esta é a linha de comando do código que chama a função printf(), passando a string (uma string é uma seqüência de caracteres, como veremos a seguir) "Ola! Eu estou vivo!\n" como argumento. É por causa do uso da função printf() pelo programa que devemos incluir o arquivo cabeçalho stdio.h. A função printf( ) neste caso irá apenas colocar a string na tela do computador. O \n é uma constante chamada de constante barra invertida. No caso, o \n é a constante barra invertida de "new line" e ele é interpretado como um comando de mudança de linha, isto é, após imprimir “Ola! Eu estou vivo!” o cursor passará para a próxima linha. É importante observar também que os comandos do C terminam com ; e que strings são delimitadas por aspas duplas. Note também que após a função printf uma linha de comentário iniciada por // para indicar um comentário sobre a linha de comando.

system ("PAUSE");

A linha “system(“PAUSE”)” é uma chamada de função própria de C++. A função system( ) recebe argumentos como o PAUSE que na verdade são comandos para o sistema operacional. Neste caso, ela recebe o comando “PAUSE” para pausar a execução do programa até que o usuário aperte uma tecla qualquer. Utilizamos este recurso para que a tela do programa não seja terminada automaticamente pelo sistema, impedindo que vejamos os resultados do programa. Nota: É por causa do uso da função system() pelo programa que devemos incluir o arquivo cabeçalho iostream.h. Obs.: Quando estiver digitando seu código adicione após PAUSE (dentro das aspas) o comando > null e veja o acontece.

return 0;

Faculdade Pitágoras Algoritmos e Programação Professora: Silvana Diniz Engenharia Elétrica / Automação 2º semestre 2011 NOTAS

Faculdade Pitágoras Algoritmos e Programação Professora: Silvana Diniz

Engenharia Elétrica / Automação 2º semestre 2011

NOTAS DE AULA

A última linha do programa, return(0); , indica o número inteiro que está sendo retornado pela função, no caso o número 0. O comando “return 0” é a “resposta” da função main para o sistema. Quase toda função retorna um valor para o sistema ou programa que a chamou, por exemplo, uma função pode retornar o resultado de uma operação matemática executada por ela. No caso da função main, ela retorna um valor para o sistema operacional que executou o programa. Esse valor é interpretado pelo sistema como uma mensagem indicando se o programa foi executado corretamente ou não. Um valor de retorno 0 indica que o programa foi executado sem problemas; qualquer outro valor de retorno indica problemas. Quando o programa é executado até o fim, ele retorna 0 ao sistema operacional, indicando que ele foi executado e terminado corretamente. Quando o programa encontra algum erro ou é terminado antes da hora, ele retorna um valor qualquer ao sistema, indicando erro durante a execução.

Saída de dados em Linguagem C:

Operações de saída de dados referemse a quaisquer valores exibidos ou retornados ao usuário. Esses valores podem ser uma mensagem de orientação, o resultado de uma expressão, um valor constante ou o conteúdo de uma variável. Conforme visto no algoritmo CalculaCorrente, em pseudocódigo, a saída de dados será representada pelo comando Escreva. Por exemplo:

Escreva “O valor da corrente é de “, I Escreva “O programa executou uma operação inválida e será finalizado”

Em linguagem C, a saída de dados, equivalente a “escreva” é feita pela função printf().

Exemplos:

printf(“O valor da corrente é de %f“, I); printf(“Maria tem %d filhos”, n_filhos); printf(“A primeira letra do nome é %c”, letra); printf(“%s”, nome);

A função printf( ) tem a seguinte forma geral:

// variável real // variável inteira // variável caractere // variável string (cadeia de caracteres)

printf (string_de_controle, lista_de_argumentos);

Teremos, na string de controle, uma descrição de tudo que a função vai colocar na tela. A string de controle mostra não apenas os caracteres que devem ser colocados na tela, mas também quais os tipos de variáveis serão exibidas e suas respectivas posições. Isto é feito usandose os códigos de controle, que usam a notação %. Na string de controle indicamos quais, de qual tipo e em que posições estão as variáveis a serem apresentadas. É muito importante que, para cada código de controle, tenhamos um argumento na lista de argumentos. Resumindo, a função printf() converte, formata e imprime seus argumentos na saída padrão (normalmente a tela) sob o controle da string_de_controle.

Exemplos de printf( ) e o que eles exibem:

printf ("Teste %% %%")

Teste % %

printf ("%f",40.345)

40.345

Faculdade Pitágoras Algoritmos e Programação Professora: Silvana Diniz printf ("%.2f",52.4578) printf ("Um caractere %c e um

Faculdade Pitágoras Algoritmos e Programação Professora: Silvana Diniz

printf ("%.2f",52.4578) printf ("Um caractere %c e um inteiro %d",'D',120) printf ("%s eh um exemplo","Este") printf ("%s%d%%","Juros de ",10)

Engenharia Elétrica / Automação 2º semestre 2011

NOTAS DE AULA

52.46

Um caractere D e um inteiro 120 Este eh um exemplo Juros de 10%

Note que nos exemplos acima, os valores as serem exibidos são diretamente caracteres ou números. Porém você poderia exibir os valores de uma variável que acabou de armazenar o resultado de um cálculo. Por exemplo:

printf ("Media das temperatura lidas: %f", media)

Neste caso, assumimos, por exemplo que o valor da media calculdado foi 78,45. Assim, o printf acima irá exibir:

Media das temperaturas lidas: 78.45

Entrada de dados:

Uma operação de entrada de dados referese a qualquer valor que seja informado (digitado) pelo usuário, ou seja, fornecido através da digitação pelo teclado. Este valor pode ser um numérico ou literal e será armazenado, obrigatoriamente, em uma variável de seu respectivo tipo. Conforme visto no algoritmo CalculaCorrente, em pseudocódigo, a entrada de dados será representada pelo comando Leia. Por exemplo:

Leia V;

Leia R;

Em C, a operação de entrada de dados é realizada pela função scanf().

Exemplos:

scanf(“%f”, &I); scanf(“%d”, &n_filhos); scanf(“%c”, &letra); scanf(“%s”, &nome);

// guarda valor digitado do teclado na variável real I // guarda valor digitado do teclado na variável inteira n_filhos // guarda valor digitado do teclado na variável caracter letra // guarda valor digitado do teclado na variável string nome

A função scanf ( ) tem a seguinte forma geral:

scanf (string_de_controle, lista_de_argumentos);

A função scanf( ) caracteres da entrada padrão (normalmente o teclado), interpretandoos de acordo com o formato especificado na string_de_controle, e armazena os resultados nos argumentos descritos de acordo com % descrito. Abaixo uma descrição dos principais tipos % (f,c,f,s) chamados de “máscaras”.

Tipos de Máscaras:

Faculdade Pitágoras Algoritmos e Programação Professora: Silvana Diniz Engenharia Elétrica / Automação 2º semestre 2011 NOTAS

Faculdade Pitágoras Algoritmos e Programação Professora: Silvana Diniz

Engenharia Elétrica / Automação 2º semestre 2011

NOTAS DE AULA

Observe que tanto a função printf() como a função scanf() exige uma máscara diferente (“%f”, “%d”, “%c”, “s”) para cada tipo de dado (int, float, char ou cadeia de caracteres). Na tabela a seguir são apresentados alguns dos códigos %:

Faculdade Pitágoras Algoritmos e Programação Professora: Silvana Diniz Engenharia Elétrica / Automação 2º semestre 2011 NOTAS

Códigos de Barra Invertida:

Além dos códigos de controle, existem também os códigos especiais, tais como o '\n' que executam tarefas especiais. Os códigos de barra invertida são descritos na string de controle e servem para efeitos de apresentação/formatação de texto/dados na tela do computador. Na tabela abaixo estão listados esses códigos especiais:

Faculdade Pitágoras Algoritmos e Programação Professora: Silvana Diniz Engenharia Elétrica / Automação 2º semestre 2011 NOTAS

Exemplos para praticar EM AULA:

Faculdade Pitágoras Algoritmos e Programação Professora: Silvana Diniz Engenharia Elétrica / Automação 2º semestre 2011 NOTAS

Faculdade Pitágoras Algoritmos e Programação Professora: Silvana Diniz

Engenharia Elétrica / Automação 2º semestre 2011

NOTAS DE AULA

Exercício 1 Vamos transformar o algoritmo de Corrente Elétrica em código de C++:

Em pseudocódigo

Código em C++

Algoritmo CalculaCorrente Variáveis

//Programa para cálculo da corrente de um circuito elétrico V=RI

R: Real V: Real I: Real

#include <stdio.h> #include <iostream>

Início

Escreva “Informe a tensão: “

float V;

Leia V

float R;

Escreva “Informa a resistência: “

float I;

Leia R I V/R Escreva “A corrente é de: “, I

int main () {

Fim

printf("\nInforme a tensao: "); scanf ("%f",&V); printf("\nInforme a resistencia: "); scanf ("%f",&R); I = V/R; printf("\nO valor da corrente eh de: %f\n",I ); system ("PAUSE"); return 0;

}

Após compilar e executar o programa corretamente vá fazendo as seguintes mudanças, uma de cada vez. Após cada mudança, separadamente, compile e execute o programa e tente visualizar o que mudou.

  • 1. Na linha printf("\nO valor da corrente eh de: %f\n",I ); troque o %f por %.2f Explique o que mudou.

  • 2. Retire os “\n” das linhas com a função printf(); Explique o que mudou.

  • 3. Na linha system ("PAUSE"); acrescente > null após o PAUSE (ainda dentro das aspas). Explique o que mudou.

  • 4. “Enxugue” seu código declarando todas as variáveis em uma linha: float V, R, I;

Exercício 2 Agora, junto com um colega, tente implementar em o código C++ o pseudocódigo do exercício da aula anterior para calcular o tempo gasto por um veículo num trajeto, dados a velocidade (constante) e a distância percorrida.

Dica: Utilize nomes de variáveis mais significativos como temo, velocidade_media,

Faculdade Pitágoras Algoritmos e Programação Professora: Silvana Diniz distancia_percorridada, etc. Exercício 3: Engenharia Elétrica / Automação

Faculdade Pitágoras Algoritmos e Programação Professora: Silvana Diniz

distancia_percorridada, etc.

Exercício 3:

Engenharia Elétrica / Automação 2º semestre 2011

NOTAS DE AULA

Faça agora um programa para calcular a área de um círculo (A=π*r 2 ), onde:

A = área a ser calculada π = constante (3.141592653) r = raio da circunferência a ser fornecido pelo usuário Obs: Utilize o recurso de declaração da constante π conforme visto neste aula.

Exemplos para praticar EM CASA:

Em casa, altere os códigos dos programas desenvolvidos no exemplo acima, de forma que eles fiquem mais claros para os programadores e para os usuários do programa. Exemplos:

Utilize linhas de comentários para explicar o que determinada linha de comando está executando, caso esta seja de extrema importância para o programa. Ex.: //Nesta linha, a corrente do circuito está sendo calculada .... Informe ao usuário (quando estiver usando a função printf()) sobre o que se trata o programa. Ex.: Este programa foi feita para calcular .... Informe ao usuário as unidades dos valores que eles devem fornecer. Exemplo: Entre com a distância percorrida em Km.

Informe ao usuário a unidade do valor calculado. Exemplo: O tempo gasto pelo veículo no

trajeto foi de

horas (segundos, minutos).

Se quiser incremente ainda mais com informando ao usuário: O tempo gasto pelo veículo

no trajeto de

Km a uma velocidade média de

Km/h foi de

horas.

muito grande.

Faculdade Pitágoras Algoritmos e Programação Professora: Silvana Diniz Estruturas de Decisão Estrutura Condicional Simples: UNIDADE III

Faculdade Pitágoras Algoritmos e Programação Professora: Silvana Diniz

Estruturas de Decisão

Estrutura Condicional Simples:

UNIDADE III

Engenharia Elétrica / Automação 2º semestre 2011

NOTAS DE AULA

As estruturas de decisão permitem que o fluxo de execução das instruções siga diferentes caminhos dependendo do resultado da avaliação de uma expressão lógica (reveja o que é uma expressão lógica na unidade anterior). A estrutura condicional simples é aquela que determina uma condição para que um grupo de instruções possa ser executado. Se essa condição não for atendida, o fluxo de execução é deslocado para a instrução seguinte ao fim do bloco de condição.

Em pseudocódigo (algoritmo), a forma geral de uma estrutura condicional simples é:

Se (Condição) então {instruções a serem executadas caso a condição seja verdadeira}

FimSe

Exemplo:

Vejamos um algoritmo abaixo que informe na tela um aviso de alarme de temperatura.

Algoritmo AlarmeDeTemperatura1 Variáveis Temperatura: Real

Início

 

Escreva “Informe a temperatura: ” Leia Temperatura Se (Temperatura > 120) então Escreva “Atenção: temperatura acima do máximo permitido” Escreva “Verifique o estado da válvula de ar frio”

FimSe

Fim

No algoritmo acima, se a temperatura informada pelo usuário for maior do que 120, o programa imprime na tela mensagens de alerta. Caso a condição (Temperatura > 120) não seja satisfeita, o programa não faz nada.

Em C, a estrutura condicional simples tem a seguinte forma:

if (condição)

{

Instrução 1 a ser executada caso a condição seja verdadeira Instrução 2 a ser executada caso a condição seja verdadeira .... Instrução n a ser executada caso a condição seja verdadeira

}

Faculdade Pitágoras Algoritmos e Programação Professora: Silvana Diniz Engenharia Elétrica / Automação 2º semestre 2011 NOTAS

Faculdade Pitágoras Algoritmos e Programação Professora: Silvana Diniz

Engenharia Elétrica / Automação 2º semestre 2011

NOTAS DE AULA

As chaves delimitam o início e fim do bloco de instruções a ser executado. Caso o bloco de instruções seja composto por apenas uma instrução não é obrigatório o uso das chaves (mas recomendase regular em todas as situações).

O algoritmo AlarmeDeTemperatura1 teria a seguinte forma em código C

#include <stdio.h> #include <iostream>

float temperatura;

int main()

{

printf(“Informe a temperatura: ”); scanf(“%f”, &temperatura); if (temperatura > 120) {

printf(“Atenção: temperatura acima do máximo permitido”); printf(“Verifique o estado da válvula de ar frio”);

} system (“PAUSE”); return 0;

}

Estrutura Condicional Composta:

A estrutura condicional composta trabalha sempre com uma condição e duas possibilidades de deslocamento do fluxo de execução do algoritmo: o primeiro bloco de instruções, logo após a verificação, será executado sempre que a condição for atendida (verdadeira) e, caso contrário, o segundo bloco de instruções será executado (condição falsa).

A estrutura condicional composta em pseudocódigo tem a forma:

Se (Condição) então {instruções a serem executadas caso a condição seja verdadeira}

Senão

 

{instruções a serem executadas caso a condição seja falsa}

FimSe

Exemplo:

Vamos ver como ficaria o algoritmo temperatura, caso queiramos adicionar outra instrução (aviso na tela) para o caso da condição não ser atendida (falsa).

Faculdade Pitágoras Algoritmos e Programação Professora: Silvana Diniz Engenharia Elétrica / Automação 2º semestre 2011 NOTAS

Faculdade Pitágoras Algoritmos e Programação Professora: Silvana Diniz

Engenharia Elétrica / Automação 2º semestre 2011

NOTAS DE AULA

Início

 

Escreva “Informe a temperatura: ” Leia Temperatura Se (Temperatura > 120) então Escreva “Atenção: temperatura acima do máximo permitido” Escreva “Verifique o estado da válvula de ar frio”

Senão

Escreva “Temperatura está dentro da faixa esperada”

FimSe

Fim

Comparando o algoritmo AlarmeDeTemperatura1 e o algoritmo AlarmeDeTemperatura2, a diferença é que o segundo imprime a mensagem “Temperatura está dentro da faixa esperada”, no caso de a condição (Temperatura > 120) ser falsa enquanto o algoritmo AlarmeDeTemperatura1 não executa nenhuma instrução.

Em C, a estrutura condicional