ces-10 introduÇÃo À computaÇÃo capítulo ii algoritmos e programas

83
CES-10 INTRODUÇÃO À CES-10 INTRODUÇÃO À COMPUTAÇÃO COMPUTAÇÃO Capítulo II Capítulo II Algoritmos e Algoritmos e Programas Programas

Upload: internet

Post on 16-Apr-2015

106 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

CES-10 INTRODUÇÃO CES-10 INTRODUÇÃO À COMPUTAÇÃOÀ COMPUTAÇÃO

Capítulo II Capítulo II

Algoritmos e Algoritmos e ProgramasProgramas

Page 2: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

Capítulo II – Algoritmos e Capítulo II – Algoritmos e ProgramasProgramas

2.1 – Elementos básicos de algoritmos 2.1 – Elementos básicos de algoritmos e programase programas

2.2 – Linguagens para algoritmos2.2 – Linguagens para algoritmos

2.3 – Propriedades dos bons 2.3 – Propriedades dos bons algoritmosalgoritmos

2.4 – Estrutura de um programa em C 2.4 – Estrutura de um programa em C

Page 3: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

2.1 – Elementos Básicos de 2.1 – Elementos Básicos de Algoritmos e ProgramasAlgoritmos e Programas

2.1.1 – A necessidade de métodos e 2.1.1 – A necessidade de métodos e algoritmosalgoritmos

Objetivo principal de um computador:Objetivo principal de um computador:

Realizar tarefas que envolvam Realizar tarefas que envolvam intenso intenso processamento de informaçõesprocessamento de informações

■ Livrando os seres humanos de Livrando os seres humanos de esforços esforços repetitivos, tediosos e sujeitos a errosrepetitivos, tediosos e sujeitos a erros

■ Possibilitando-lhes também a obtenção de Possibilitando-lhes também a obtenção de resultados confiáveis em tempo hábilresultados confiáveis em tempo hábil

Page 4: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

Para cada Para cada tarefatarefa a ser realizada, o computador a ser realizada, o computador deve estar devidamente deve estar devidamente programadoprogramado

Caso não haja Caso não haja softwaresoftware pronto que realize a pronto que realize a tarefa requerida, alguém, que recebe a tarefa requerida, alguém, que recebe a denominação de denominação de programadorprogramador, deve elaborar , deve elaborar um um programaprograma

Programa: Programa: sequência de sequência de instruçõesinstruções que, ao que, ao serem executadas por um computador, serem executadas por um computador, realizamrealizam uma determinada tarefa uma determinada tarefa

O O programaprograma deve estar escrito numa deve estar escrito numa linguagem de programação linguagem de programação (pode até ser (pode até ser AssemblyAssembly))

Page 5: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

Primeiros passos para a elaboração de um Primeiros passos para a elaboração de um programa:programa:

Determinação da tarefaDeterminação da tarefa a ser automatizada, a ser automatizada, com detalhes minuciososcom detalhes minuciosos

Escolha do método Escolha do método que irá fundamentar as que irá fundamentar as ações a serem realizadas pelas instruções do ações a serem realizadas pelas instruções do programa programa

Elaboração de um algoritmoElaboração de um algoritmo, que é uma , que é uma sequência de passos para a aplicação do sequência de passos para a aplicação do método escolhidométodo escolhido

Algoritmo: sequência finita e ordenada de passos (comandos executáveis e não ambíguos), que levam à aplicação de um método para a execução de uma tarefa ou resolução de um problema

Page 6: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

Primeiros passos para a elaboração de um Primeiros passos para a elaboração de um programa:programa:

Determinação da tarefaDeterminação da tarefa a ser automatizada, a ser automatizada, com detalhes minuciososcom detalhes minuciosos

Escolha do método Escolha do método que irá fundamentar as que irá fundamentar as ações a serem realizadas pelas instruções do ações a serem realizadas pelas instruções do programa programa

Elaboração de um algoritmoElaboração de um algoritmo, que é uma , que é uma sequência de passos para a aplicação do método sequência de passos para a aplicação do método escolhidoescolhido

Elaboração do programaElaboração do programa, que é a tradução do , que é a tradução do algoritmo para a linguagem de programação algoritmo para a linguagem de programação escolhidaescolhida

Page 7: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

2.1.2 – Algoritmos executados por seres 2.1.2 – Algoritmos executados por seres humanoshumanos

Além de computadores, Além de computadores, outras entidadesoutras entidades podem podem executar algoritmos executar algoritmos

Muitas atividades rotineiras dos Muitas atividades rotineiras dos seres humanosseres humanos podem ser descritas por algoritmos. podem ser descritas por algoritmos. Exemplos:Exemplos:

Preparo de receita culináriaPreparo de receita culinária Troca de pneu furadoTroca de pneu furado Troca de lâmpada queimadaTroca de lâmpada queimada Atividades de uma pessoa, desde o momento Atividades de uma pessoa, desde o momento

em que ela acorda, até sua chegada ao local de em que ela acorda, até sua chegada ao local de trabalhotrabalho

Page 8: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

Exemplo: algoritmo para troca de pneu Exemplo: algoritmo para troca de pneu furadofurado

Page 9: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

Comando condicional se-senãoComando condicional se-senão

Escopo do ramoEscopo do ramo “se” “se” não delimitado por não delimitado por chaves chaves ‘{’‘{’ e e ‘}’‘}’

Escopo do ramoEscopo do ramo “senão” “senão” delimitado por delimitado por chaves chaves ‘{’‘{’ e e ‘}’‘}’Escopos

com mais de um comando devem ser delimitados por chaves

Uso de endentações para ressaltar escopos

Page 10: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

Exemplo: algoritmo para troca de lâmpada Exemplo: algoritmo para troca de lâmpada queimadaqueimada

Page 11: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

A A linguagemlinguagem para descrever o algoritmo deve para descrever o algoritmo deve ser ser claraclara e sem e sem ambiguidadesambiguidades para o para o executorexecutor

Neste algoritmo há três Neste algoritmo há três comandos repetitivoscomandos repetitivos

Page 12: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

Exercício 2.1.2:Exercício 2.1.2:

1.1.Elaborar um algoritmo estabelecendo as Elaborar um algoritmo estabelecendo as atividades de um trabalhador, desde o instante atividades de um trabalhador, desde o instante em que ele acorda até o momento em que ele em que ele acorda até o momento em que ele começa a exercer suas funções em seu começa a exercer suas funções em seu ambiente de trabalho.ambiente de trabalho.

Page 13: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

2.1.3 – Algoritmos para computadores2.1.3 – Algoritmos para computadores

É a abordagem desta disciplina É a abordagem desta disciplina

No início de sua existência, os computadores No início de sua existência, os computadores faziam apenas faziam apenas processamento numéricoprocessamento numérico, , resolvendo diversos resolvendo diversos problemas matemáticosproblemas matemáticos

Hoje o Hoje o processamento não numéricoprocessamento não numérico é ainda é ainda mais importante que o numérico, atuando mais importante que o numérico, atuando sobre informações bastante complexas, sobre informações bastante complexas, compostas de compostas de números, textos, imagens e números, textos, imagens e sonssons

Page 14: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

A seguir,A seguir, métodos métodos e e algoritmosalgoritmos para a para a resolução de quatro resolução de quatro problemas matemáticos problemas matemáticos simplessimples: :

Cálculo das raízes de uma equação do segundo Cálculo das raízes de uma equação do segundo grau grau

Cálculo do fatorial de um número inteiro Cálculo do fatorial de um número inteiro

Soma dos termos de uma progressão Soma dos termos de uma progressão aritmética aritmética

Cálculo da integral definida de uma Cálculo da integral definida de uma determinada função com uma variáveldeterminada função com uma variável

Page 15: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

Cálculo das raízes de uma equação do Cálculo das raízes de uma equação do segundo grausegundo grau

Seja a seguinte equação genérica do 2º grau:Seja a seguinte equação genérica do 2º grau:

A*xA*x22 + B*x + C = 0 + B*x + C = 0

Onde, por hipótese, Onde, por hipótese,

AA, , BB e e C C são números reais e são números reais e A ≠ 0A ≠ 0

O O métodométodo escolhido para a determinação das escolhido para a determinação das raízes é o de raízes é o de BaskaraBaskara

Page 16: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

Fórmula de Baskara:Fórmula de Baskara:

DiscriminanteDiscriminante Delta Delta: : Delta = BDelta = B22 – 4 * A * C – 4 * A * C

A ≠ 0

Delta ≥ 0

As raízes são reais

As raízes são complexas

V F

Page 17: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

No caso real, as raízes são dadas por:No caso real, as raízes são dadas por:

E no caso complexo:E no caso complexo:

Então pode-se escrever o seguinte algoritmo:Então pode-se escrever o seguinte algoritmo:

Page 18: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas
Page 19: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

Se os valores lidos para A, B e C forem 1, -7 e 12:Se os valores lidos para A, B e C forem 1, -7 e 12:

Resultado escrito: x1 = 4 e X2 = 3Resultado escrito: x1 = 4 e X2 = 3

Se forem 1, 4 e 5 Se forem 1, 4 e 5

Resultado escrito: x1 = (-2)+i(1) e X2 = (-2)-Resultado escrito: x1 = (-2)+i(1) e X2 = (-2)-i(1)i(1)

Page 20: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

Comando condicional (se-senão):Comando condicional (se-senão):

Comandos de atribuição e de saída em seus Comandos de atribuição e de saída em seus escoposescopos

Page 21: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

Formas gerais dos Formas gerais dos comandos condicionaiscomandos condicionais::

se (condição) lista de comandosse (condição) lista de comandos se (condição) lista de comandos 1 se (condição) lista de comandos 1

senão lista de comandos 2senão lista de comandos 2

Fluxogramas explicativos:

Page 22: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

Comandos de atribuição:Comandos de atribuição:

Forma geral: Variável ← Expressão;Forma geral: Variável ← Expressão;

Variável recebe o valor calculado de expressão

Page 23: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

Comando de entrada ou de leitura:Comando de entrada ou de leitura:

Forma geral: Ler (Lista de Variáveis);Forma geral: Ler (Lista de Variáveis);

Page 24: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

Comandos de saída ou de escrita:Comandos de saída ou de escrita:

Forma geral: Escrever (Lista de Elementos Forma geral: Escrever (Lista de Elementos de Escrita);de Escrita);

Elemento de escrita: Texto entre aspas ou Elemento de escrita: Texto entre aspas ou valor de expressãovalor de expressão

Page 25: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

Declaração de variáveis:Declaração de variáveis:

Todas as variáveis do programa são do tipo Todas as variáveis do programa são do tipo realreal

Page 26: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

O algoritmo não trabalha com variáveis do tipo O algoritmo não trabalha com variáveis do tipo complexocomplexo

As variáveis Real e Imag auxiliam a escrita As variáveis Real e Imag auxiliam a escrita de raízes de raízes complexascomplexas

Page 27: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

Cálculo do fatorial de um número inteiroCálculo do fatorial de um número inteiro

Método:Método:

n! = 1 * 2 * 3 * ... * (n-1) * n (n! = 1 * 2 * 3 * ... * (n-1) * n (por hipótese,por hipótese, n n ≥ 0)≥ 0)

Lê-se o valor de Lê-se o valor de nn

Inicializa-se o valor do fatorial com Inicializa-se o valor do fatorial com 11

Multiplica-se cumulativamente todos os valores Multiplica-se cumulativamente todos os valores inteiros do intervalo inteiros do intervalo [2, n][2, n] pelo valor do pelo valor do fatorialfatorial

Page 28: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

Algoritmo do fatorial:Algoritmo do fatorial:A multiplicação cumulativa tem caráter repetitivo

Isso é expresso pelo comando “enquanto”

Fluxograma do comando enquanto:

Page 29: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

Algoritmo do fatorial:Algoritmo do fatorial:A multiplicação cumulativa tem caráter repetitivo

Isso é expresso pelo comando “enquanto”

Se o valor lido para n for 7:

Resultado escrito: Fatorial (7) = 5040

Page 30: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

Cálculo da soma dos termos de uma PA:Cálculo da soma dos termos de uma PA:

Conhecidos o 1º termo Conhecidos o 1º termo aa11, a razão , a razão rr e o n e o noo de de termos termos nn

Método: sem usar as fórmulas Método: sem usar as fórmulas

Usando a fórmula Usando a fórmula aaii = a = ai-1i-1 + r + r, começando , começando

por por aa11 e encerrando por e encerrando por aann, cada termo da PA , cada termo da PA vai sendo incluído na somatóriavai sendo incluído na somatória

Page 31: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

Exemplo: aExemplo: a11 = 2 = 2, , r = 3r = 3 e e n = 5n = 5

Usando Usando aaii = a = ai-1i-1 + r + r, , PA = {2, 5, 8, 11, 14}PA = {2, 5, 8, 11, 14}

Inicialmente:Inicialmente:Som

a0

Page 32: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

Exemplo: aExemplo: a11 = 2 = 2, , r = 3r = 3 e e n = 5n = 5

Usando Usando aaii = a = ai-1i-1 + r + r, , PA = {2, 5, 8, 11, 14}PA = {2, 5, 8, 11, 14}

A seguir:A seguir:Som

a2

Page 33: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

Exemplo: aExemplo: a11 = 2 = 2, , r = 3r = 3 e e n = 5n = 5

Usando Usando aaii = a = ai-1i-1 + r + r, , PA = {2, 5, 8, 11, 14}PA = {2, 5, 8, 11, 14}

Soma

7

Page 34: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

Exemplo: aExemplo: a11 = 2 = 2, , r = 3r = 3 e e n = 5n = 5

Usando Usando aaii = a = ai-1i-1 + r + r, , PA = {2, 5, 8, 11, 14}PA = {2, 5, 8, 11, 14}

Soma

15

Page 35: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

Exemplo: aExemplo: a11 = 2 = 2, , r = 3r = 3 e e n = 5n = 5

Usando Usando aaii = a = ai-1i-1 + r + r, , PA = {2, 5, 8, 11, 14}PA = {2, 5, 8, 11, 14}

Soma

26

Page 36: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

Exemplo: aExemplo: a11 = 2 = 2, , r = 3r = 3 e e n = 5n = 5

Usando Usando aaii = a = ai-1i-1 + r + r, , PA = {2, 5, 8, 11, 14}PA = {2, 5, 8, 11, 14}

Então, pode-se escrever o algoritmo a seguirEntão, pode-se escrever o algoritmo a seguir

Soma

40 Resultado

Page 37: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

aq: aq: termo da PA a ser acrescido na somatóriatermo da PA a ser acrescido na somatória

i: i: número do termo a ser acrescido na somatórianúmero do termo a ser acrescido na somatória

Page 38: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

\n:\n: new-line new-line (nl)(nl) em C; posiciona o cursor no em C; posiciona o cursor no início da linha seguinteinício da linha seguinte

Page 39: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

Resultado para a1 = 2, n = 7 e r = 3:

Progressao aritmetica: Primeiro termo: 2Razao: 3Numero de termos: 7 Soma: 77

Page 40: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

Cálculo da integral definida de uma Cálculo da integral definida de uma determinada função com uma variáveldeterminada função com uma variável

Determinação da tarefa, com detalhes:Determinação da tarefa, com detalhes:

Calcular o valor da Calcular o valor da integral definidaintegral definida de uma de uma função função f(x)f(x), num dado intervalo lido , num dado intervalo lido [a, b][a, b], , com uma dada precisão lida com uma dada precisão lida pp

Supor que, no referido intervalo, a função Supor que, no referido intervalo, a função nãonão assuma valores assuma valores negativosnegativos

Page 41: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

Interpretação gráfica de integral definida:Interpretação gráfica de integral definida:

A integral definida de A integral definida de f(x)f(x) no intervalo no intervalo [a, b][a, b] é a é a área área SS

Page 42: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

Método utilizado: Regra do TrapézioMétodo utilizado: Regra do Trapézio

Dividir o intervalo de integração em n Dividir o intervalo de integração em n subintervalos de igual tamanho, determinando as subintervalos de igual tamanho, determinando as sub-áreas Ssub-áreas S11, S, S22, S, S33, ... , S, ... , Snn

Page 43: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

Método utilizado: Regra do TrapézioMétodo utilizado: Regra do Trapézio

Aproximar a curva em cada sub-área para um Aproximar a curva em cada sub-área para um segmento de retasegmento de reta

Cada sub-área fica aproximada para um trapézioCada sub-área fica aproximada para um trapézio

Page 44: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

Método utilizado: Regra do TrapézioMétodo utilizado: Regra do Trapézio

Calcular o somatório das sub-áreas de todos os Calcular o somatório das sub-áreas de todos os trapézios, que é uma aproximação para o valor trapézios, que é uma aproximação para o valor procurado da integral definidaprocurado da integral definida

Page 45: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

A soma das áreas dos trapézios é dada porA soma das áreas dos trapézios é dada por

A área de cada trapézio é dada porA área de cada trapézio é dada por

Page 46: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

Se Se n = 10 n = 10 e sendo conhecidos os valores de e sendo conhecidos os valores de a a e e bb, a , a somatóriasomatória pode ser calculada com os pode ser calculada com os seguintes comandos:seguintes comandos:

Page 47: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

Obtenção da precisão lida Obtenção da precisão lida pp no resultado: no resultado:

Calcular um valor aproximado para a área Calcular um valor aproximado para a área SS, usando , usando um valor inicial para um valor inicial para n n ((1010 p. ex.); seja p. ex.); seja SS1010 esse valoresse valor

Calcular outro valor aproximado para Calcular outro valor aproximado para SS, dobrando-se , dobrando-se o valor de o valor de n n ((2020 p. ex.); seja p. ex.); seja SS2020 esse valoresse valor

Se Se |S|S2020 - S - S1010|≤ p|≤ p, adotar , adotar SS2020 como valor definitivo de como valor definitivo de SS

Senão, descartar Senão, descartar SS1010, calcular , calcular SS4040 e compará-lo com e compará-lo com SS2020

Quando, para algum valor Quando, para algum valor xx, , |S|S2*x2*x - S - Sxx|≤ p|≤ p, adotar , adotar SS2*x2*x como valor definitivo de como valor definitivo de SS

Obs.:Obs.: Este procedimento só é válido se Este procedimento só é válido se f(x)f(x) for for bem bem comportadacomportada em em [a, b][a, b]

Page 48: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

Algoritmo da Regra do Trapézio com precisão Algoritmo da Regra do Trapézio com precisão exigida:exigida:

Page 49: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

Outro tipo de comando repetitivo: Outro tipo de comando repetitivo: repetir-repetir-enquantoenquanto

Page 50: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

Fluxograma do comando Fluxograma do comando repetir-enquantorepetir-enquanto::

Page 51: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

Comparação dos comandos Comparação dos comandos enquanto enquanto e e repetir-repetir-enquantoenquanto::

No comando No comando repetir-enquantorepetir-enquanto, a , a lista de lista de comandoscomandos é executada pelo menos é executada pelo menos uma vezuma vez

enquanto

repetir-enquanto

Page 52: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

As variáveis As variáveis S1S1 e e S2S2 guardam valores de guardam valores de cálculos consecutivos da integral, sendo cálculos consecutivos da integral, sendo S1S1 o o valor antigo e valor antigo e S2S2 aquele calculado com o novo aquele calculado com o novo valor de valor de nn

O valor 5 para n nunca é usado

Antes de ser usado, ele é multiplicado por 2

Page 53: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

A atribuição A atribuição S2 ← 0S2 ← 0 no início é no início é artificialartificial

Esse valor é logo atribuído a Esse valor é logo atribuído a S1S1 e um novo e um novo valor para valor para S2S2 é calculado, para ser comparado é calculado, para ser comparado com o de com o de S1S1

Os valores de n serão 10, 20, 40, 80, 160, etc.

Page 54: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

Se os valores lidos para Se os valores lidos para aa, , bb e e pp forem forem respectivamente respectivamente 1.51.5, , 14.8 14.8 e e 0.0010.001, e se o , e se o valor final de valor final de S2 S2 for for 327.181327.181, será escrito:, será escrito:

A integral de f(x) no intervalo [1.5, 14.8], A integral de f(x) no intervalo [1.5, 14.8], com precisão 0.001 é 327.181com precisão 0.001 é 327.181

Page 55: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

2.1.4 – Programas a partir de algoritmos2.1.4 – Programas a partir de algoritmos

PProgramarograma foi definido como sendo uma foi definido como sendo uma ssequência de equência de instruçõesinstruções que, ao serem que, ao serem executadas por um computador, executadas por um computador, realizamrealizam uma uma determinada tarefadeterminada tarefa

AlgoritmoAlgoritmo foi definido como sendo uma foi definido como sendo uma sequência finita e ordenadasequência finita e ordenada de de passospassos (comandos (comandos executáveis e não ambíguos), que levam à executáveis e não ambíguos), que levam à aplicação de um aplicação de um métodométodo para a execução de uma para a execução de uma tarefatarefa ou resolução de um ou resolução de um problemaproblema

ProgramaPrograma também pode ser definido como sendo também pode ser definido como sendo a a traduçãotradução de um de um algoritmoalgoritmo para uma para uma linguagem de programaçãolinguagem de programação

Page 56: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

A seguir,A seguir, programas programas a partir dos a partir dos algoritmosalgoritmos para:para:

Cálculo das raízes de uma equação do segundo Cálculo das raízes de uma equação do segundo grau grau

Soma dos termos de uma progressão Soma dos termos de uma progressão aritmética aritmética

Cálculo da integral definida de uma Cálculo da integral definida de uma determinada função com uma variáveldeterminada função com uma variável

Page 57: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

Cálculo das raízes de uma equação do Cálculo das raízes de uma equação do segundo grau:segundo grau:

Algoritmo

Page 58: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

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

#include <math.h>#include <math.h>

int main () {int main () {

float A, B, C, X1, X2, Delta, Real, Imag;float A, B, C, X1, X2, Delta, Real, Imag;

}}

Algoritmo

Para usar scanf e printfPara usar pow e sqrt

Page 59: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

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

#include <math.h>#include <math.h>

int main () {int main () {

float A, B, C, X1, X2, Delta, Real, Imag;float A, B, C, X1, X2, Delta, Real, Imag;

scanf (“%f%f%f”, &A, &B, &C);scanf (“%f%f%f”, &A, &B, &C);

Delta = pow (B, 2) – 4*A*C;Delta = pow (B, 2) – 4*A*C;

}}

Algoritmo

“%f%f%f”: Ler 3 números reais e guardá-los em

&A, &B, &C: endereços de A, B e C

Page 60: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

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

#include <math.h>#include <math.h>

int main () {int main () {

float A, B, C, X1, X2, Delta, Real, Imag;float A, B, C, X1, X2, Delta, Real, Imag;

scanf (“%f%f%f”, &A, &B, &C);scanf (“%f%f%f”, &A, &B, &C);

Delta = pow (B, 2) – 4*A*C;Delta = pow (B, 2) – 4*A*C;

if (Delta >= 0) {if (Delta >= 0) {

}}

else {else {

}}

}}

Algoritmo

Page 61: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

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

#include <math.h>#include <math.h>

int main () {int main () {

float A, B, C, X1, X2, Delta, Real, Imag;float A, B, C, X1, X2, Delta, Real, Imag;

scanf (“%f%f%f”, &A, &B, &C);scanf (“%f%f%f”, &A, &B, &C);

Delta = pow (B, 2) – 4*A*C;Delta = pow (B, 2) – 4*A*C;

if (Delta >= 0) {if (Delta >= 0) {

X1 = (-B+sqrt(Delta))/(2*A); X2 = (-B-X1 = (-B+sqrt(Delta))/(2*A); X2 = (-B-sqrt(Delta))/(2*A);sqrt(Delta))/(2*A);

printf (“X1 = %g e X2 = %g”, X1, X2);printf (“X1 = %g e X2 = %g”, X1, X2);

}}

else {else {

}}

}}

“X1 = %g e X2 = %g”: cadeia de controle da escrita

Escreve tudo o que aparece menos os dois %g’s

O 1º %g é para escrever o valor de X1, o 2º para X2, ambos no formato real

Page 62: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

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

#include <math.h>#include <math.h>

int main () {int main () {

float A, B, C, X1, X2, Delta, Real, Imag;float A, B, C, X1, X2, Delta, Real, Imag;

scanf (“%f%f%f”, &A, &B, &C);scanf (“%f%f%f”, &A, &B, &C);

Delta = pow (B, 2) – 4*A*C;Delta = pow (B, 2) – 4*A*C;

if (Delta >= 0) {if (Delta >= 0) {

X1 = (-B+sqrt(Delta))/(2*A); X2 = (-B-X1 = (-B+sqrt(Delta))/(2*A); X2 = (-B-sqrt(Delta))/(2*A);sqrt(Delta))/(2*A);

printf (“X1 = %g e X2 = %g”, X1, X2);printf (“X1 = %g e X2 = %g”, X1, X2);

}}

else {else {

Real = -B / (2*A); Imag = sqrt(-Delta) / (2*A);Real = -B / (2*A); Imag = sqrt(-Delta) / (2*A);

printf (“X1 = (%g)+i(%g) e X2 = (%g)-i(%g)”, printf (“X1 = (%g)+i(%g) e X2 = (%g)-i(%g)”, Real, Imag, Real, Imag, Real, Real, Imag);Imag);

}}

}}

Page 63: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

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

#include <math.h>#include <math.h>

#include <conio.h>#include <conio.h>

int main () {int main () {

float A, B, C, X1, X2, Delta, Real, Imag;float A, B, C, X1, X2, Delta, Real, Imag;

scanf (“%f%f%f”, &A, &B, &C);scanf (“%f%f%f”, &A, &B, &C);

Delta = pow (B, 2) – 4*A*C;Delta = pow (B, 2) – 4*A*C;

if (Delta >= 0) {if (Delta >= 0) {

X1 = (-B+sqrt(Delta))/(2*A); X2 = X1 = (-B+sqrt(Delta))/(2*A); X2 = (-B-sqrt(Delta))/(2*A);(-B-sqrt(Delta))/(2*A);

printf (“X1 = %g e X2 = %g”, X1, X2);printf (“X1 = %g e X2 = %g”, X1, X2);

}}

else {else {

Real = -B / (2*A); Imag = sqrt(-Delta) / (2*A);Real = -B / (2*A); Imag = sqrt(-Delta) / (2*A);

printf (“X1 = (%g)+i(%g) e X2 = (%g)-i(%g)”, Real, printf (“X1 = (%g)+i(%g) e X2 = (%g)-i(%g)”, Real, Imag, Real, Imag);Imag, Real, Imag);

}}

printf (“\n\nDigite algo para encerrar”); getch ();printf (“\n\nDigite algo para encerrar”); getch ();

}}

Para que o ambiente mantenha a tela de execução

Para usar getch

Page 64: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

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

#include <math.h>#include <math.h>

#include <conio.h>#include <conio.h>

int main () {int main () {

float A, B, C, X1, X2, Delta, Real, Imag;float A, B, C, X1, X2, Delta, Real, Imag;

scanf (“%f%f%f”, &A, &B, &C);scanf (“%f%f%f”, &A, &B, &C);

Delta = pow (B, 2) – 4*A*C;Delta = pow (B, 2) – 4*A*C;

if (Delta >= 0) {if (Delta >= 0) {

X1 = (-B+sqrt(Delta))/(2*A); X2 = X1 = (-B+sqrt(Delta))/(2*A); X2 = (-B-sqrt(Delta))/(2*A);(-B-sqrt(Delta))/(2*A);

printf (“X1 = %g e X2 = %g”, X1, X2);printf (“X1 = %g e X2 = %g”, X1, X2);

}}

else {else {

Real = -B / (2*A); Imag = sqrt(-Delta) / (2*A);Real = -B / (2*A); Imag = sqrt(-Delta) / (2*A);

printf (“X1 = (%g)+i(%g) e X2 = (%g)-i(%g)”, Real, printf (“X1 = (%g)+i(%g) e X2 = (%g)-i(%g)”, Real, Imag, Real, Imag);Imag, Real, Imag);

}}

printf (“\n\nDigite algo para encerrar”); getch ();printf (“\n\nDigite algo para encerrar”); getch ();

}}

Os detalhes da formatação de saída dos resultados em princípio não precisam aparecer no algoritmo

Apenas aparecem os elementos a serem escritos

A inclusão da biblioteca da linguagem também não precisa aparecer no algoritmo

Programa final

As exigências do ambiente também não precisam aparecer no algoritmo

Page 65: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

Soma dos termos de uma progressão Soma dos termos de uma progressão aritmética:aritmética:

Algoritmo

Page 66: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

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

#include <conio.h>#include <conio.h>

int main () {int main () {

int a1, r, n, soma, aq, i;int a1, r, n, soma, aq, i;

scanf (“%d%d%d”, &a1, &n, &r);scanf (“%d%d%d”, &a1, &n, &r);

soma = 0; aq = a1; i = 1;soma = 0; aq = a1; i = 1;

while (i <= n) {while (i <= n) {

soma = soma + aq;soma = soma + aq;

aq = aq + r;aq = aq + r;

i = i + 1;i = i + 1;

}}

}}

Algoritmo

Page 67: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

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

#include <conio.h>#include <conio.h>

int main () {int main () {

int a1, r, n, soma, aq, i;int a1, r, n, soma, aq, i;

scanf (“%d%d%d”, &a1, &n, &r);scanf (“%d%d%d”, &a1, &n, &r);

soma = 0; aq = a1; i = 1;soma = 0; aq = a1; i = 1;

while (i <= n) {while (i <= n) {

soma = soma + aq;soma = soma + aq;

aq = aq + r;aq = aq + r;

i = i + 1;i = i + 1;

}}

printf (“\nProgressao aritmetica:\n\nPrimeiro termo: printf (“\nProgressao aritmetica:\n\nPrimeiro termo: %d”, a1);%d”, a1);

printf (“\nRazao: %d\nNumero de termos: %d”, r, n);printf (“\nRazao: %d\nNumero de termos: %d”, r, n);

printf (“\n\nSoma: %d”, soma);printf (“\n\nSoma: %d”, soma);

printf (“\n\nDigite algo para encerrar”); getch ();printf (“\n\nDigite algo para encerrar”); getch ();

}}

Novamente, a formatação da saída não precisa aparecer no algoritmo

Inclusive os ‘\n’s poderiam ser dele omitidos

Page 68: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

Cálculo da integral definida de função com Cálculo da integral definida de função com uma variável:uma variável:

Algoritmo

O programa será particularizado para a função

f(x) = log10x + 5

No Capítulo sobre Subprogramação, será visto um programa de integrais definidas para várias funções

Page 69: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

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

#include <math.h> #include <math.h>

#include <conio.h> #include <conio.h>

double f (double x) {double f (double x) {

return (log10(x) + 5);return (log10(x) + 5);

}}

void main () {void main () {

- - - - -- - - - -

}}

Algoritmo

Declaração da função f(x) = log10x + 5

double: real de dupla precisão

Page 70: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

void main () {void main () {

int n, i; float a, b, p;int n, i; float a, b, p;

double S1, S2, STrap, Dx;double S1, S2, STrap, Dx;

scanf ("%f%f%f", &a, &b, &p);scanf ("%f%f%f", &a, &b, &p);

S2 = 0; n = 5;S2 = 0; n = 5;

do {do {

} while (fabs (S1-S2) > p);} while (fabs (S1-S2) > p);

}}

Algoritmo

fabs: valor absoluto de expressão real

Page 71: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

void main () {void main () {

int n, i; float a, b, p;int n, i; float a, b, p;

double S1, S2, STrap, Dx;double S1, S2, STrap, Dx;

scanf ("%f%f%f", &a, &b, &p);scanf ("%f%f%f", &a, &b, &p);

S2 = 0; n = 5;S2 = 0; n = 5;

do {do {

S1 = S2; n = 2*n;S1 = S2; n = 2*n;

Dx = (b-a)/n; S2 = 0; i = 1;Dx = (b-a)/n; S2 = 0; i = 1;

while (i <= n) {while (i <= n) {

STrap = Dx * (f(a+(i-1)*Dx) + f(a+i*Dx)) / 2;STrap = Dx * (f(a+(i-1)*Dx) + f(a+i*Dx)) / 2;

S2 = S2 + STrap;S2 = S2 + STrap;

i = i + 1;i = i + 1;

}}

} while (fabs (S1-S2) > p);} while (fabs (S1-S2) > p);

}}

Page 72: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

void main () {void main () {

int n, i; float a, b, p;int n, i; float a, b, p;

double S1, S2, STrap, Dx;double S1, S2, STrap, Dx;

scanf ("%f%f%f", &a, &b, &p);scanf ("%f%f%f", &a, &b, &p);

S2 = 0; n = 5;S2 = 0; n = 5;

do {do {

S1 = S2; n = 2*n;S1 = S2; n = 2*n;

Dx = (b-a)/n; S2 = 0; i = 1;Dx = (b-a)/n; S2 = 0; i = 1;

while (i <= n) {while (i <= n) {

STrap = Dx * (f(a+(i-1)*Dx) + f(a+i*Dx)) / 2;STrap = Dx * (f(a+(i-1)*Dx) + f(a+i*Dx)) / 2;

S2 = S2 + STrap;S2 = S2 + STrap;

i = i + 1;i = i + 1;

}}

} while (fabs (S1-S2) > p);} while (fabs (S1-S2) > p);

printf ("\nA Integral de f(x) no intervalo [%g, %g]", a, b);printf ("\nA Integral de f(x) no intervalo [%g, %g]", a, b);

printf (" com precisao %g eh %g", p, S2);printf (" com precisao %g eh %g", p, S2);

printf ("\n\nDigite algo para encerrar"); getch ();printf ("\n\nDigite algo para encerrar"); getch ();

}}

O programa não está amigável

Page 73: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

2.1.5 – Produção de um software2.1.5 – Produção de um software

Produzir um softwareProduzir um software é muito mais do que é muito mais do que sair escrevendosair escrevendo um programa em uma um programa em uma linguagem de programaçãolinguagem de programação

Quando o software é de Quando o software é de grande portegrande porte seu seu desenvolvimento é bem desenvolvimento é bem complexocomplexo e podem ser e podem ser necessárias várias necessárias várias equipesequipes

Isso é tema da disciplina Isso é tema da disciplina Engenharia de Engenharia de SoftwareSoftware::

Software é um produto de EngenhariaSoftware é um produto de Engenharia

Page 74: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

Etapas para produção de software de grande Etapas para produção de software de grande porte:porte:

Levantamento de requisitosLevantamento de requisitos

Elaboração do projetoElaboração do projeto

ImplementaçãoImplementação

Realização de testesRealização de testes

Entrega e implantaçãoEntrega e implantação

Operação e manutençãoOperação e manutenção

Page 75: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

Levantamento de requisitos:Levantamento de requisitos:

Os Os requisitosrequisitos definem as definem as funcionalidadesfuncionalidades de de um software e as um software e as restrições e limitaçõesrestrições e limitações do do software que está sendo desenvolvidosoftware que está sendo desenvolvido

Requisitos FuncionaisRequisitos Funcionais Caracterizam a funcionalidade do software, Caracterizam a funcionalidade do software,

ou seja, o que ele deve fazerou seja, o que ele deve fazer

Requisitos Não-FuncionaisRequisitos Não-Funcionais Caracterizam restrições e limitações sobre a Caracterizam restrições e limitações sobre a

funcionalidade Exemplo: desempenho, funcionalidade Exemplo: desempenho, segurança, etc.segurança, etc.

Page 76: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

Problemas para levantar requisitos:Problemas para levantar requisitos:

Clientes erram e mudam de idéiaClientes erram e mudam de idéia

Deve-se estabelecer com precisão o Deve-se estabelecer com precisão o escopoescopo do do softwaresoftware

Comunicação pode falharComunicação pode falhar

Deve-se fazer uso de Deve-se fazer uso de diagramasdiagramas e e documentaçãodocumentação para melhorar o entendimento; para melhorar o entendimento; formalidadeformalidade necessária necessária

Não é uma atividade puramente técnicaNão é uma atividade puramente técnica

Requer habilidade de Requer habilidade de relacionamento relacionamento humanohumano

Page 77: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

Elaboração do projeto:Elaboração do projeto:

Arquitetura do software:Arquitetura do software: pode ser a pode ser a integração de vários módulosintegração de vários módulos

Escolha dos Escolha dos métodosmétodos e elaboração dos e elaboração dos algoritmosalgoritmos

Page 78: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

Implementação:Implementação:

Tradução do algoritmo para uma Tradução do algoritmo para uma linguagem linguagem de programaçãode programação

Preocupações com alocação de Preocupações com alocação de memóriamemória, tipos , tipos de de dadosdados, , desempenhodesempenho, etc., etc.

Eliminação dos Eliminação dos erros de sintaxeerros de sintaxe

Page 79: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

Realização de testes:Realização de testes:

Verificação da implementação correta dos Verificação da implementação correta dos requisitos levantadosrequisitos levantados

Primeiramente, Primeiramente, cada módulocada módulo é testado é testado individualmenteindividualmente

Depois os módulos são Depois os módulos são integradosintegrados e sua e sua composição é testadacomposição é testada

Page 80: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

Tipos de teste:Tipos de teste:

Testes com entradas Testes com entradas corretascorretas: a saída deve : a saída deve estar estar corretacorreta

Testes com entradas Testes com entradas errôneaserrôneas: a saída deve : a saída deve ser ser irregularirregular

Testes de Testes de desempenhodesempenho: tempo de resposta, : tempo de resposta, testes com dados de entrada volumosostestes com dados de entrada volumosos

Page 81: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

Os testes quase sempre determinam Os testes quase sempre determinam correçõescorreções no programa no programa

Deve-se elaborar um Deve-se elaborar um relatóriorelatório final dos testes, final dos testes, com resultados obtidoscom resultados obtidos

É importante o envolvimento com o É importante o envolvimento com o usuáriousuário

Page 82: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

Entrega e implantação:Entrega e implantação:

O software deve ser O software deve ser instaladoinstalado em ambiente de em ambiente de produçãoprodução

Usuários devem ser Usuários devem ser treinadostreinados

O O ambienteambiente de produção deve ser de produção deve ser configuradoconfigurado

Principal Principal propósitopropósito desta fase: desta fase:

Realizar Realizar testes de aceitaçãotestes de aceitação (certificar de (certificar de que o software que o software satisfazsatisfaz os requisitos dos os requisitos dos usuáriosusuários))

Page 83: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo II Algoritmos e Programas

Operação e manutenção:Operação e manutenção:

Fase de operação:Fase de operação: o software passa a ser o software passa a ser utilizadoutilizado de fato em ambiente de produção de fato em ambiente de produção

Manutenções corretivas:Manutenções corretivas: correção de erros e correção de erros e falhasfalhas

Manutenções adaptativas: Manutenções adaptativas: (alterações no meio (alterações no meio externo)externo) Novas versões de plataformaNovas versões de plataforma Mudanças nas leis, políticas, etc.Mudanças nas leis, políticas, etc.

Manutenções evolutivas:Manutenções evolutivas: novas funcionalidades novas funcionalidades

Manutenções preventivas:Manutenções preventivas: garantir maior garantir maior confiabilidade e possibilidade de manutençãoconfiabilidade e possibilidade de manutenção

É importante seguir boaspráticas de programação para o programa ficar fácilde ser entendido e alterado