logica de programação - prof. edgar gurdel - estácio

63
UNIVERSIDADE ESTÁCIO DE SÁ CURSO DE ENGENHARIA LÓGICA DE PROGRAMAÇÃO PROF. M. Sc. EDGAR GURGEL RIO DE JANEIRO

Upload: priscila-santana

Post on 02-Oct-2015

44 views

Category:

Documents


4 download

DESCRIPTION

logicada programação

TRANSCRIPT

  • UNIVERSIDADE ESTCIO DE S

    CURSO DE ENGENHARIA

    LGICA DE PROGRAMAO

    PROF. M. Sc. EDGAR GURGEL

    RIO DE JANEIRO

  • Lgica de Programao Prof. Edgar Gurgel

    Pgina 2 de 63

    SUMRIO I - Algoritmos e Fluxogramas ........................................................................... 4 1 - Introduo .................................................................................................................... 4 2 - Conceito de Algoritmo ................................................................................................ 5 3 - Exemplos Informais de Algoritmos ............................................................................ 6

    3.1 - Exemplo 1: Troca de uma lmpada queimada ................................................. 6 4 - Exemplo de um Algoritmo .......................................................................................... 7 5 - Fluxogramas (Diagrama de Blocos) ............................................................................ 8 Exerccios: ...................................................................................................................... 10 II - Conceitos Bsicos ..................................................................................... 11 1 - Tipos Primitivos de Dados ........................................................................................ 11 2 - Constantes ................................................................................................................. 11 3 - Variveis .................................................................................................................... 12 4 - Identificadores ........................................................................................................... 12 5 - Expresses Aritmticas ............................................................................................. 13 6 - Expresses Lgicas ................................................................................................... 14 7 - Cadeias de Caracteres ................................................. Error! Bookmark not defined. 8 - Comando de Atribuio ............................................................................................ 15 9 - Entrada e Sada de Dados .......................................................................................... 16 10 Blocos ........................................................................................................................ 17 Exerccios: ...................................................................................................................... 18 III - Estrutura de Sequncia ............................................................................ 19 1 - Introduo .................................................................................................................. 19 2 - Conceito de Sequncia .............................................................................................. 19 3 Exemplos .................................................................................................................. 19 Exerccios: ...................................................................................................................... 23 IV - Estrutura de Seleo ................................................................................ 24 1 - Conceito de Seleo .................................................................................................. 24 2 - Seleo Simples ......................................................................................................... 24 3 - Seleo Composta ..................................................................................................... 25 4 - Seleo Encadeada (Ses encaixados) ....................................................................... 27 5 - Seleo de Mltipla Escolha (Estrutura Caso) .......................................................... 28 Exerccios: ...................................................................................................................... 31 V Funo ........................................................................................................ 32

    1 - Funes Numricas .......................................................................................... Error! Bookmark not defined.

    Exerccios: ...................................................................................................................... 31 VI - Estrutura de Repetio ............................................................................. 32 1 - Conceito de Repetio ............................................................................................... 38 2 - Enquanto (Repetio com Teste no Incio) ............................................................... 38 3 - Repita (Repetio com Teste no Final) ..................................................................... 40 4 - Para (Repetio com Varivel de Controle) .............................................................. 42 Exerccios: ...................................................................................................................... 43

  • Lgica de Programao Prof. Edgar Gurgel

    Pgina 3 de 63

    Anexos ............................................................................................................................ 46 Anexo A Programao em C++ ................................................................................ 46 1 - Introduo .................................................................................................................. 46 2 - Fases de um Programa em C++ ................................................................................ 47 3 - Estrutura de um Programa ......................................................................................... 47 4 - Estrutura de uma Funo ........................................................................................... 48 5 - Variveis .................................................................................................................... 48 6 - Operadores Aritmticos ............................................................................................. 48 7 - Operadores Relacionais ............................................................................................. 48 8 - Entrada e Sada de dados ........................................................................................... 49 9 - Tipos de Dados .......................................................................................................... 50 10 - Estruturas ................................................................................................................. 51 10.1 - Estrutura de Seleo ............................................................................................. 51 10.2 - Estrutura de Seleo Encadeada ........................................................................... 51 10.3 - Estrutura de Repetio While ............................................................................... 52 10.4 - Estrutura de Repetio For ................................................................................... 52 Anexo B Tutorial Dev C++ ....................................................................................... 53 Anexo C Tutorial Visual Studio C ........................................................................... 60

  • Lgica de Programao Prof. Edgar Gurgel

    Pgina 4 de 63

    I - Algoritmos e Fluxogramas

    1 - Introduo

    Os computadores, infelizmente, s fazem aquilo que se manda, e no necessariamente aquilo que se deseja que eles faam. No deve haver ambigidade nas

    instrues dos programas que se fornece ao computador, nem a possibilidade de

    interpretaes alternativas. O computador sempre tomar algum caminho em suas

    aes, muito cuidado necessrio para se assegurar que o computador siga pelo nico

    caminho correto possvel que leve aos resultados desejados. Por exemplo, uma

    afirmao como: calcule a mdia qualquer de notas muito imprecisa, apesar de

    parecer especificar aquilo que se deseja. Muitos detalhes foram omitidos, entre eles cita-

    se: onde esto as notas, quantas so, os ausentes devem ou no ser includos, aqui est a

    essncia da programao de computadores.

    Muitos problemas interessantes parecem ser complexos do ponto de vista da

    programao. Em alguns casos (tais como problemas matemticos difceis), esta

    complexidade pode ser inerente ao problema em si, entretanto, em muitos casos isto

    pode ser devido a outros fatores que esto dentro do nosso controle, por exemplo, uma

    especificao incompleta ou obscura do problema. No desenvolvimento de programas,

    como ser visto, a complexidade no precisa ser sempre um problema, pois a mesma

    pode ser controlada adequadamente.

    A programao de computadores pode ser difcil. Tal dificuldade se deve a sua

    complexidade inerente, combinando muitos processos mentais. Entretanto, pode-se

    tornar mais fcil. Por exemplo, um trabalho de programao pode tornar-se muito mais

    fcil se o mesmo for dividido sistematicamente em partes menos complexas (a

    abordagem do dividir para conquistar).

    Primeiramente, importante separar a fase de resoluo do problema da fase de

    implementao do problema. Na fase de resoluo do problema, ser concentrada a

    elaborao de um algoritmo para resolver um problema proposto. Somente depois da

    satisfao com a formulao de um algoritmo adequado que se passar

    implementao deste algoritmo em alguma linguagem de programao. Dado um

    algoritmo suficientemente preciso, sua codificao em alguma linguagem de

    programao direta.

  • Lgica de Programao Prof. Edgar Gurgel

    Pgina 5 de 63

    Figura 1.1: Resoluo do Problema e Programao.

    2 - Conceito de Algoritmo

    Um algoritmo pode ser definido como: uma sequncia finita de instrues

    bem definidas, logicamente encadeadas e no ambguas, onde cada uma das quais

    pode ser executada mecanicamente num perodo de tempo finito com uma

    quantidade de esforo finito para resolver um problema do mundo real. A

    definio sugere que os algoritmos tenham diversas propriedades importantes.

    Primeiramente, os passos de um algoritmo devem ser simples e sem ambiguidade e

    devem estar numa ordem cuidadosamente definida, Alm disso, se insiste em que os

    algoritmos sejam efetivos, isto , devem sempre resolver um problema utilizando um

    nmero finito de passos.

    Construir algoritmos o objetivo principal de toda a programao, portanto

    desenvolver bons algoritmos a principal tarefa do programador. Deve-se, pois, seguir

    algumas regras bsicas na resoluo de um problema:

    ! Compreender o problema

    Deixar claro o problema;

    Identificar as entradas e as sadas.

    ! Delinear um plano

    Desenvolver um procedimento para a soluo do problema.

    Soluo em forma de

    Algoritmo

    Soluo como um programa

    de computador

    Problema

    Passo difcil

    Fase da resoluo do

    problema

    Fase da implementao

    do problema

  • Lgica de Programao Prof. Edgar Gurgel

    Pgina 6 de 63

    ! Executar o plano

    Verificar manualmente e corrigi-lo, se necessrio;

    Codificar o algoritmo;

    Executar o algoritmo com dados de teste, depurando quando necessrio.

    ! Refinar e documentar o algoritmo

    Voltar, revisando passos;

    Dar um tratamento esttico ao algoritmo.

    Todo algoritmo composto por um grupo de aes primitivas (aes passveis

    de execuo por um ser humano ou por uma mquina). As aes primitivas que se

    utilizar na construo de algoritmos sero construes lingusticas em portugus

    (Portugol, Portugus estruturado ou pseudocdigo).

    O portugus estruturado tem como finalidade mostrar uma notao para

    elaboraes de algoritmos, os quais sero posteriormente utilizados para a definio,

    criao e desenvolvimento de uma linguagem computacional.

    A diferena entre um algoritmo e uma linguagem de programao de alto nvel,

    que a primeira (escrita em portugus, francs, alemo, ...) no pode ser compilada em

    um computador. Isto , quando se cria um algoritmo em Pseudocdigo, est se

    assumindo que exista um computador hipottico capaz de execut-lo.

    3 - Exemplos Informais de Algoritmos

    Apesar de o termo ser novo em si, o conceito certamente bastante familiar. As

    indicaes dadas para se chegar a uma determinada rua constituem um algoritmo para

    se encontrar essa rua. Como exemplo pode-se citar: receita de cozinha, planta de

    projeto, etc.

    Por exemplo, as instrues para trocar uma lmpada queimada so constitudas

    por uma descrio dos objetos manipulados e por uma sequncia de passos. Estas

    instrues podem ser descritas como um algoritmo informal.

    3.1 - Exemplo 1: Troca de uma lmpada queimada

    ! Desligar o interruptor;

    ! Selecionar uma nova lmpada para a substituio;

    ! Posicionar a escada embaixo da lmpada queimada;

  • Lgica de Programao Prof. Edgar Gurgel

    Pgina 7 de 63

    ! Subir na escada;

    ! Retirar a lmpada queimada do soquete;

    ! Descer da escada;

    ! Deixar a lmpada queimada;

    ! Pegar a lmpada boa;

    ! Subir na escada;

    ! Colocar a nova lmpada no soquete;

    ! Descer da escada;

    ! Ligar o interruptor;

    ! Guardar a lmpada queimada e a escada.

    4 - Exemplo de um Algoritmo

    Para se ter noo de um algoritmo se tomar como exemplo a soma dos 100

    primeiros nmeros inteiros positivos. O objetivo da apresentao deste exemplo

    fornecer uma ideia intuitiva dos passos e do raciocnio envolvidos na gerao de um

    algoritmo. No caso de se resolver este problema em uma calculadora, seria fornecido a

    ela a seguinte sequncia de passos:

    Limpar o visor da calculadora

    Pressionar a tecla 1;

    Pressionar a tecla +;

    Pressionar a tecla 2;

    Pressionar a tecla +;

    Pressionar a tecla 3;

    Pressionar a tecla +;

    ...

    Pressionar a tecla 100;

    Pressionar a tecla =

    O smbolo ... na descrio de aes acima muito importante, pois indica que

    existe um padro de comportamento que se repete ao longo da descrio e, portanto,

    no necessrio enumerar todos os passos, porque se pode facilmente gerar e executar

    os que esto implcitos. No entanto, a existncia destes smbolos no permite qualificar

    o conjunto de instrues anteriores como um algoritmo, pois a caracterstica da

    rigorosidade deixa de se verificar.

  • Lgica de Programao Prof. Edgar Gurgel

    Pgina 8 de 63

    Para transformar as instrues anteriores num algoritmo que possa ser executado

    por um computador, necessrio tornar explcito o que est implcito. S que para

    explicitar todos os passos do algoritmo anterior, teramos mais trabalho do que executar

    o algoritmo propriamente dito, portanto ser conveniente encontrar uma soluo

    alternativa. A soluo para este tipo de algoritmo ser vista a seguir nas estruturas de

    controle.

    5 - Fluxogramas (Diagrama de Blocos)

    frequentemente mais fcil transmitir ideias atravs de ilustraes. Mapas

    fornecem uma representao conveniente da topologia da cidade, e pode ter mais valor

    quando se est perdido do que as explicaes verbais. Uma primeira tentativa no sentido

    de utilizar um formato grfico na descrio de algoritmos, que data dos dias de Von

    Neumann, envolveu o uso de fluxogramas. Um fluxograma mostra a lgica de um

    algoritmo, enfatizando os passos individuais e suas interconexes.

    Durante os anos um simbolismo relativamente padro apareceu. Um clculo

    representado por um retngulo, uma deciso por um losango e as operaes de entrada e

    sada por formas simbolizando os meios utilizados. Estes smbolos so ligados por

    linhas que indicam a ordem e o sentido em que as operaes devem ser executadas.

    Nos ltimos anos, a atitude dos profissionais de programao em relao ao

    popular fluxograma diminuiu consideravelmente. A opinio sobre os fluxogramas

    divergente. Para alguns, so considerados simplesmente um apndice desnecessrio de

    um programa; para outros, so vistos como um instigador de maus hbitos de

    programao.

    Uma nova gerao de programadores est sendo educada com novos mtodos de

    desenvolvimento de programas, mtodos aos quais o fluxograma, adiciona muito pouco.

    Muitas vezes, quando mostra a lgica de um algoritmo, o fluxograma obscurece sua

    estrutura. Assim sendo percebeu-se que a estrutura to importante (e possivelmente

    mais) quanto a lgica.

  • Lgica de Programao Prof. Edgar Gurgel

    Pgina 9 de 63

    Smbolos comuns de fluxogramas

    Clculo Deciso Entrada Sada

    Incio / Fim Conectores

    Exemplo de um fluxograma

    Incio nota1, nota2 nota3, nota4 media (nota1 + nota2 + nota3 + nota4) / 4 sim se no media >= 5.0 voc passou com uma voc foi reprovado com nota de, media uma nota de, media

    Fim

  • Lgica de Programao Prof. Edgar Gurgel

    Pgina 10 de 63

    Exerccios:

    1) O que um algoritmo? E qual a sua finalidade na programao?

    2) Explique sucintamente as fases de resoluo e implementao de um programa.

    3) O que um fluxograma? E portugus estruturado?

    4) Usando o conceito de algoritmo informal, elabore um para mudar um pneu furado.

    Admita que esto disponveis um macaco e um estepe em boas condies.

    5) Trs senhoras, dona Branca, dona Rosa e dona Violeta passeavam pelo parque

    quando dona Rosa disse: No curioso que estejamos usando vestidos de cores branca,

    rosa e violeta, embora nenhuma de ns esteja usando um vestido de cor igual ao seu

    prprio nome. Uma simples coincidncia, respondeu a senhora com o vestido violeta.

    Diga qual a cor do vestido de cada senhora?

    6) Trs jesutas e trs canibais precisam atravessar um rio; para tal, dispem de um

    barco com capacidade para duas pessoas. Por medida de segurana, no se deve permitir

    que em alguma margem a quantidade a quantidade de jesutas seja inferior de

    canibais. Qual a soluo para efetuar a travessia com segurana? Elabora um algoritmo

    mostrando a resposta, indicando as aes que concretizam a soluo deste problema.

    7) Elabore um algoritmo que mova trs discos de uma Torre de Hani, que consiste em

    trs hastes (a,b,c), uma das quais serve de suporte para trs para trs discos de tamanhos

    diferentes (1,2,3), os menores sobre os maiores. Pode-se mover um disco de cada vez

    para qualquer haste, contanto que nunca seja colocado um disco maior sobre um menor.

    O objetivo transferir os trs discos para outra haste.

  • Lgica de Programao Prof. Edgar Gurgel

    Pgina 11 de 63

    II - Conceitos Bsicos

    1 - Tipos Primitivos de Dados

    Um tipo de dado primitivo corresponde ao conjunto de valores que uma

    varivel, constante, expresso ou funo pode assumir e o conjunto de operaes que

    podem ser efetuadas sobre ele. Estes conjuntos de valores so definidos pelas

    linguagens de programao, sobre modelos matemticos, que aproveitam as operaes

    sobre estes modelos. No caso do estudo de algoritmos, usaremos os seguintes tipos:

    Numricos:

    #Inteiro: toda e qualquer informao numrica que pertena ao conjunto dos

    nmeros inteiros, isto , dados numricos positivos, negativos e o zero, excluindo-se

    os nmeros fracionrios.

    #Real: toda e qualquer informao numrica que pertena aos nmeros reais,

    isto , o conjunto dos inteiros mais os nmeros fracionrios.

    No-numricos:

    #Caractere: toda e qualquer informao composta por apenas um dos caracteres

    alfanumricos {0...9 }, {A...Z }ou especiais, por exemplo {%, &,

  • Lgica de Programao Prof. Edgar Gurgel

    Pgina 12 de 63

    resposta = s; {caractere} carro = caminho; {cadeia}

    pi = 3.1415; {real} situacao = verdadeiro; {lgico} 3 - Variveis

    Uma informao classificada como varivel quando tem a possibilidade de ser

    alterada em algum instante no decorrer do programa. Todo dado a ser armazenado na

    memria de um computador deve ser previamente identificado, ou seja, primeiro

    necessrio saber qual o seu tipo, para depois fazer a alocao de um espao de memria

    para o seu armazenamento adequado.

    Em um ambiente computacional, as informaes variveis so guardadas em

    dispositivos eletrnicos chamados de memria. Esta memria pode ser vista como um

    armrio composto de vrias gavetas, no qual as gavetas seriam os locais fsicos

    responsveis por armazenar objetos; os objetos (que podem ser substitudos) seriam as

    informaes e as gavetas seriam as variveis.

    Visto que na memria existem inmeras variveis, precisa-se diferenci-las, o

    que feito atravs do nome da varivel. Cada varivel, no entanto, pode guardar apenas

    uma informao de cada vez, sendo sempre do mesmo tipo. Os exemplos abaixo

    mostram como se deve declarar uma varivel: var nome,endereco: cadeia[40]; apart: inteiro; resposta: lgico;

    4 - Identificadores So as constantes, as variveis e o nome do programa e servem para a sua

    identificao no programa. Os identificadores devem acompanhar as seguintes regras de

    formao:

    a) Devem comear por um caractere alfabtico;

    b) Podem ser seguidos por mais caracteres alfabticos e/ou numricos e/ou (_);

    c) No permitido o uso de caracteres especiais, com exceo para o sublinhado (_);

    d) Os nomes escolhidos devem explicitar seus contedos;

  • Lgica de Programao Prof. Edgar Gurgel

    Pgina 13 de 63

    e) Os nomes escolhidos no podem ser uma palavra reservada do programa;

    No poder haver no mesmo programa dois identificadores com o mesmo nome,

    mesmo que representem a mesma grandeza.

    5 - Expresses Aritmticas Denomina-se expresso aritmtica aquela cujos operadores so aritmticos e

    cujos operandos so constantes e/ou variveis do tipo numrico (inteiro e/ou real).

    Operadores Aritmticos

    FUNO SMBOLO Adio + Subtrao - Multiplicao * Diviso / Potenciao ^ Quociente da diviso inteira DIV ou # Resto da diviso inteira MOD ou %

    Alm das operaes bsicas anteriormente citadas, pode-se usar nas expresses

    aritmticas algumas funes da matemtica:

    Funes Aritmticas (Primitivas)

    FUNO SMBOLO Retorna o seno de X SIN(X) Retorna o cosseno de X COS(X) Retorna a tangente de X TG(X) Retorna o arco cujo seno X ARCSIN(X) Retorna o arco cujo cosseno X ARCCOS(X) Retorna o arco cujo tangente X ARCTG(X) Retorna o valor absoluto de X ABS(X) Retorna o logaritmo na base e de X LOG(X) Retorna o logaritmo na base 10 de X LOG10(X) Retorna a raiz quadrada de X SQRT(X) ou RAIZ(X) Retorna o quadrado de X SQR(X) ou QUAD(X) Arredonda o fracionrio X para o inteiro superior ROUND(X) Arredonda o fracionrio X para o inteiro inferior TRUNC(X) Retorna a exponencial e elevado a X EXP(X)

  • Lgica de Programao Prof. Edgar Gurgel

    Pgina 14 de 63

    6 - Expresses Lgicas

    Denomina-se expresso lgica aquela cujos operadores so lgicos e/ou

    relacionais e cujos operandos so relaes e/ou variveis e/ou constantes do tipo lgico. Operadores Relacionais

    FUNO SMBOLO Igual a = Diferente de Maior que > Menor que < Maior ou igual que >= Menor ou igual que

  • Lgica de Programao Prof. Edgar Gurgel

    Pgina 15 de 63

    Disjuno (v) Conectivo ou:

    A B A ou B Verdadeiro Verdadeiro Verdadeiro Verdadeiro Falso Verdadeiro Falso Verdadeiro Verdadeiro Falso Falso Falso Durante a execuo de uma expresso que envolve vrios operadores,

    necessria a existncia de prioridades, caso contrrio poderemos obter valores que no

    representam o resultado esperado. a seguinte a hierarquia que deve ser seguida:

    1. Efetuar as operaes embutidas em parnteses mais internos 2. Efetuar funes matemticas 3. Efetuar potenciaes 4. Efetuar as multiplicaes e/ou divises 5. DIV e/ou MOD 6. Efetuar adio e/ou subtrao 7. Operadores relacionais 8. Operadores lgicos

    8.1. no

    8.2.e / ou

    7 - Comando de Atribuio Um comando de atribuio permite fornecer um valor a uma certa varivel

    (guardar um objeto em uma gaveta), onde o tipo dessa informao deve ser compatvel

    com o tipo de varivel, isto , somente podemos atribuir um valor inteiro a uma varivel

    capaz de comport-lo, ou seja, uma varivel declarada do tipo inteiro. Exemplos:

    total 34; resposta verdadeiro; time_bom Flamengo; A caracterstica principal das variveis a de que podem guardar valores

    diferentes em tempos diferentes. A habilidade de modificar os valores das variveis

    muito importante, por isso, s vezes, pode-se verificar a presena de mesma varivel em

    ambos os lados da linha de atribuio. Considere que esta apario em ambos os

    membros tm significados diferentes no processamento do comando.

  • Lgica de Programao Prof. Edgar Gurgel

    Pgina 16 de 63

    No exemplo abaixo, o primeiro valor que a varivel X alocar ser 1, no

    segundo momento este valor passar a ser 2. O primeiro valor ser perdido e o segundo

    valor continuar alocado na memria, at que haja uma nova atribuio a esta varivel.

    Por isso que se diz que o comando de atribuio uma operao destrutiva, pois

    qualquer valor que a varivel possua antes do processamento da operao de atribuio

    se perde, sendo substitudo pelo novo valor. O exemplo mostra a funo da varivel em

    cada um dos lados.

    x 1; x x + 1;

    8 - Entrada e Sada de Dados Os clculos do computador no so de grande valor a no ser que, primeiro, se

    possa fornecer os dados sobre os quais estes clculos sero efetuados e, segundo, ver os

    resultados desses clculos. Uma vez que as operaes de entrada e sada so muito

    relacionadas interao dos programadores, sua forma altamente dependente da

    linguagem de programao especfica utilizada e, s vezes, do prprio sistema de

    computador.

    Todo algoritmo para computador possui comandos que levam a informao da

    memria principal do computador a seus perifricos e vice-versa. Os comandos que se

    far uso para manusear entrada e sada de informaes so mostrados a seguir: leia(lista de entrada)

    A lista de entrada nos d os nomes das variveis s quais os valores devem ser

    atribudos.

    O comando ler permite ler valores dados atribuindo-os a variveis indicadas. H

    de se ressaltar que o processo de associar valores s variveis indicadas semelhante

    operao de atribuio em dois importantes aspectos:

    Qualquer valor que a varivel possua anteriormente ser destrudo;

    Como na atribuio, verificada a compatibilidade de tipo.

    Indica que um segundo valor

    ser atribudo varivel x

    Indica que o primeiro valor da varivel x ser utilizado

  • Lgica de Programao Prof. Edgar Gurgel

    Pgina 17 de 63

    O exemplo abaixo demonstra tais aspectos: var

    a,b: inteiro; b 1; leia(a,b);{valores de a e x lidos so 3 e 4} leia(a); {valor de a lido seja 10}

    Nota-se, ao executar o exemplo acima, que o valor final de a ser 10, pois o

    outro valor (3) foi destrudo, devido a ordem de execuo dos comandos e que o valor

    de b ser 4 pelo mesmo motivo. escreva(lista de sada)

    O comando de sada semelhante ao comando de entrada em formato, porm

    um pouco mais geral em termos do que se pode especificar na lista de sada. possvel

    mostrar:

    O contedo de qualquer varivel;

    O resultado de qualquer expresso;

    O valor de qualquer constante. Seguem alguns exemplos:

    escreva(total); escreva(valor1, valor2, media); escreva(Bom Dia!, nome); escreva(Voc pesa, x*2, quilos);

    9 - Blocos Um bloco pode ser definido como um conjunto de aes com uma funo

    definida; neste caso, um algoritmo pode ser visto como um bloco. Delimita-se o bloco

    por um incio e um fim. incio . . {seqncia de aes} . fim.

  • Lgica de Programao Prof. Edgar Gurgel

    Pgina 18 de 63

    Exerccios:

    8) Determine o valor atribudo a varivel A:

    1. A 3 ^ 3 + 4 * 8 / 5 + 2 * 4

    2. B 16 - 12 / 3

    C 3

    A B div C + (B - 2 * C) mod C

    9) Determine o valor de X nas expresses:

    1. A 2

    X 6 - SQRT (2 ^ A) * 5 - 4 * (18 - 4 ^ 2)

    2. A 2

    B 4

    X ((28 + 3 * B) / A - (A ^ B)) * 3 * 2

    10) Determine o resultado(falso ou verdadeiro) das seguintes expresses lgicas:

    1. no (X mod Y > 13) e no (Y > 22), para X=14 e Y=3

    2. no DIAUTIL ou ((HORASDIA > 8) e no (HORASTOT div HORASDIA >

    21)), para DIAUTIL = falso, HORASDIA = 4 e HORASTOT = 22

  • Lgica de Programao Prof. Edgar Gurgel

    Pgina 19 de 63

    III - Estrutura de Sequncia

    1 - Introduo

    Na criao de algoritmos, sero utilizados os conceitos de bloco lgico, entrada

    e sada de dados, variveis, constantes, atribuies, expresses lgicas, relacionais e

    aritmticas, bem como comandos que traduzam estes conceitos de forma a representar o

    conjunto de aes.

    Para que esse conjunto de aes se torne vivel, deve existir uma perfeita relao

    lgica intrnseca ao modo pelo qual essas aes so executadas, ao modo pelo qual

    regido o fluxo de execuo.

    Atravs das estruturas bsicas de controle do fluxo de execuo sequncia,

    seleo, repetio e da combinao delas, pode-se criar um algoritmo para solucionar

    qualquer problema.

    2 - Conceito de Sequncia

    Sequncia um conjunto de aes primitivas que sero executadas numa

    sequncia linear de cima para baixo, isto , sero executadas na mesma ordem em que

    foram escritas. As aes devem sempre ser seguidas por ponto-e-vrgula(;), que objetiva

    separar uma instruo da outra e auxiliar organizao sequencial das aes, pois aps

    encontrar um (;) deve-se executar o prximo comando da sequncia.

    3 Exemplos Exemplo 1: Uma loja de mveis est promovendo uma liquidao anual. Deve-se

    desenvolver um programa para calcular o preo total, para o cliente de um item que ter

    certa reduo percentual (desconto) sobre seu preo de lista.

    Para se resolver este problema, o primeiro passo procurar entend-lo. Do modo

    como foi feito, o enunciado do problema muito geral. Por exemplo, poder-se fazer as

    seguintes perguntas:

    Todos os itens tero o mesmo desconto?

    O que includo no preo total para o cliente?

    Devem ser includos impostos? Neste caso a que taxa?

  • Lgica de Programao Prof. Edgar Gurgel

    Pgina 20 de 63

    Um programador deve tomar decises a respeito da fonte e natureza dos dados

    de entrada, da sada desejada, do grau de preciso e assim por diante. Programadores

    profissionais geralmente tomam essas decises discutindo com os futuros usurios do

    programa.

    Neste problema, descobriu-se que a reduo percentual (o desconto) sobre o

    preo de lista diferente de item para item. O preo total para o cliente incluir o preo

    com desconto, mais uma taxa de imposto fixo de 5% sobre esse preo. No entanto, os

    usurios do programa querem que seja tambm calculada a quantia economizada como

    o resultado do desconto. Temos, pois, que fornecer ao programa informaes relativas

    ao preo do item e percentagem de desconto.

    O programa, ento, dar informaes relativas quantia economizada e preo

    total para o cliente. Mais a ttulo de metodologia sero utilizadas algumas regras para

    desenvolver este primeiro programa.

    # REGRA 1 #

    A primeira declarao em um programa serve para lhe dar um nome, este

    facultativo, mas sempre obedecendo s regras dos identificadores. Esta primeira

    declarao marca o seu ponto inicial. Exemplo: Algoritmo PRECO_VENDA;

    # REGRA 2 #

    Logo aps o nome do programa vem a declarao das constantes, se nele houver.

    Todas as constantes a serem usadas no programa recebem os seus valores pr-definidos.

    Exemplo: const taxa_imp = 0.05;

    # REGRA 3 #

    Depois disto vem a declarao das variveis a serem usadas no programa. O

    nome e tambm o tipo das variveis devem ser declarados.

    A regra 3 requer o desenvolvimento de um procedimento para resolver o

    problema. Isto , as incgnitas (variveis de sada) devem ser determinadas por algum

    tipo de manipulao de dados (variveis de entrada). Para encontrar essas variveis,

    pode-se dividir o trabalho em trs tarefas principais:

  • Lgica de Programao Prof. Edgar Gurgel

    Pgina 21 de 63

    Obter informaes relativas ao preo de lista e desconto (fornecer os dados de

    entrada);

    Calcular a economia e o preo total;

    Gerar a sada do programa (os resultados esperados: preo total e economia).

    var

    preco_lista, taxa_desc, economia, preco_red, preco_total: real;

    # REGRA 4 #

    O incio da seo de procedimentos de todo programa marcado por incio.

    A entrada e sada de variveis so expressas genericamente, sem referncia a

    dispositivos especficos de E/S (como terminal de vdeo, impressora, teclado, disco,...).

    O procedimento para a entrada de dados ser o seguinte: primeiramente ser

    mandada uma mensagem para o usurio atravs do comando escrever, por exemplo: escreva(Entre com o preo da lista:);

    Em seguida ser utilizado o comando ler para colocar o valor que o usurio

    digitou na memria do computador. Significa que o programa deve receber um valor

    para a varivel. leia(preco_total);

    Para exibir o valor de preco_total ser utilizado novamente o comando escrever,

    que significa que este valor ser mostrado em algum dispositivo de sada, neste caso o

    vdeo. escreva(O preo total calculado foi:, preco_total);

    O comando escrever tambm pode exibir constantes em formas de mensagem,

    como por exemplo: escreva(Este programa calcula o preo reduzido);

    # REGRA 5 #

    As variveis recebero novos valores dentro do programa, por meio de operao

    de atribuio .

    Para processar a informao de entrada, a fim de obter a sada, deve-se dispor de

    algum mtodo para calcular e armazenar o valor de uma expresso. Por exemplo, para

  • Lgica de Programao Prof. Edgar Gurgel

    Pgina 22 de 63

    calcular a varivel economia, precisa multiplicar a varivel preo de lista pela

    percentagem de desconto (expressa como um valor decimal). Isto pode ser escrito:

    economia preco_lista * (taxa_desc / 100); O comando acima pode ser lido como: economia recebe o valor de preco_lista

    multiplicado por taxa_desc dividido por cem.

    # REGRA 6 #

    O fim de todo o programa marcado por um fim.

    Combinando todos esses comandos, o programa pode ser expresso, em

    linguagem algortmica, como se segue: Algoritmo preco_venda; const taxa_imp = 0.05; var

    preco_lista, taxa_desc, economia, preco_red, preco_total: real; inicio

    escreva(Entre com o preo da lista:); leia(preco_lista); escreva(Entre com o desconto percentual:); leia(taxa_desc); economia preco_lista * (taxa_desc / 100); preco_red preco_lista - economia; preco_total preco_red + preco_red * taxa_imp; escreva(A economia :, economia); escreva(O preo total :, preco_total); fim.

  • Lgica de Programao Prof. Edgar Gurgel

    Pgina 23 de 63

    Exerccios:

    11) Construir um algoritmo para calcular a mdia aritmtica entre duas notas

    quaisquer fornecidas pelo usurio.

    12) Dados os lados de um tringulo retngulo (nas variveis Lado1 e Lado2),

    determine e exiba o comprimento do terceiro lado (hipotenusa). Supe-se que todas

    as variveis sejam inteiras.

    13) Preparar um algoritmo para ler uma temperatura dada na escala Celsius e exibir o

    equivalente na escala Fahrenheit (frmula de converso: F= 9 / 5 * C + 32).

    14) Ler dois valores para as variveis A e B, efetuar a troca dos valores de forma que

    a varivel A passe a possuir o valor da varivel B e que a varivel B passe a possuir o

    valor da varivel A. Apresentar os valores trocados.

    15) Preparar um algoritmo para efetuar o clculo de quantidade de litros de

    combustvel gasta em uma viagem, utilizando-se um automvel que faz 12 KM por

    litro. Para obter o clculo, o usurio dever fornecer o tempo gasto na viagem e a

    velocidade mdia durante a mesma. Desta forma, ser possvel obter a distncia

    percorrida com a frmula: distancia = tempo * velocidade. Tendo o valor da distncia,

    basta calcular a quantidade de litros de combustvel utilizada na viagem com a

    frmula: litros = distancia / 12. O programa dever exibir o valor da quantidade de litros

    de combustvel utilizada na viagem.

    16) Elaborar um algoritmo para ler dois valores inteiros e efetuar as operaes de

    adio, subtrao, multiplicao e diviso do primeiro pelo segundo, apresentando no

    final os quatro resultados obtidos.

    17) Preparar um algoritmo para ler os valores dos coeficientes a, b, c de uma equao

    quadrtica da forma: ax2 + bx + c e exibir o valor do discriminante.

    18) O cardpio de uma casa de hambrguer dado abaixo. Preparar um algoritmo

    para ler a quantidade de cada item comprado e calcular a conta final.

    Casa de hambrguer Hambrguer R$ 4,20 Cheeseburger R$ 4,50 Batata frita R$ 3,80 Milkshake R$ 5,80

  • Lgica de Programao Prof. Edgar Gurgel

    Pgina 24 de 63

    IV - Estrutura de Seleo

    1 - Conceito de Seleo Apesar de se conseguir solucionar problemas e transform-los em programas, os recursos da estrutura sequencial so muito limitados, pois haver momentos em que um

    determinado valor dentro de um programa necessitar ser tratado para se efetuar um

    processamento mais adequado.

    Uma estrutura de seleo permite a escolha de um grupo de aes e estruturas a

    ser executado quando determinadas condies, representadas por expresses lgicas,

    so ou no satisfeitas.

    Deve-se imaginar a seguinte situao: um programa que apresente a mdia

    escolar de um aluno. At aqui, muito simples, mas alm de calcular a mdia, o

    programa deve apresentar se o mesmo est aprovado ou reprovado segundo a anlise de

    sua mdia. Deve-se observar que aqui ser necessrio verificar a mdia do aluno para

    ento se tomar uma deciso no sentido de apresentar a sua real situao: aprovado ou

    reprovado.

    2 - Seleo Simples

    Sintaxe da estrutura: Se Ento inicio instruo 1; instruo 2; . . . instruo n; fim; {fim do ento} fim-se;

    uma expresso lgica, que quando verificada, pode gerar um

    resultado falso ou verdadeiro.

  • Lgica de Programao Prof. Edgar Gurgel

    Pgina 25 de 63

    Se for verdadeira, ento o bloco verdade (Ento) ser executado;

    caso contrrio ( for falsa) o comando ser encerrado.

    Verificar-se-, agora, o seguinte exemplo, para se analisar a estrutura alternativa

    simples:

    Algoritmo notas1; {Calcula a mdia aritmtica entre duas notas e verifica se o aluno foi aprovado por mdia} var

    n1,n2,media: real; inicio leia(n1); leia(n2); media (n1 + n2)/2; escreva(A mdia foi =, media); Se media >= 8 Ento escreva(Aprovado por mdia); fim-se; fim. {trmino do algoritmo}

    3 - Seleo Composta

    Sintaxe de estrutura: Se Ento Incio instruo 1; instruo 2; . . instruo n; fim Seno inicio instruo 1;

  • Lgica de Programao Prof. Edgar Gurgel

    Pgina 26 de 63

    instruo 2; . . instruo n; fim; fim-se;

    Se a condio for satisfeita, ento apenas o bloco verdade ser executado, caso

    contrrio, o bloco falso o que ser executado.

    Exemplo 1: Construir um algoritmo para calcular as razes de uma equao do 2 grau. Algoritmo equacao;{calcula as razes da equao} var

    x1,x2,delta,a,b,c: real; Incio escrever(Entre com os valores dos coef. a, b e c:); leia(a); leia(b); leia(c); delta b^2 - 4*a*c; Se delta > 0 Ento inicio x1 (-b + SQRT(delta)) / 2 * a; x2 (-b - SQRT(delta)) / 2 * a; escreva(raiz 1=,x1, raiz 2=,x2);

    fim Seno escreva(No existem razes reais!); fim-se; fim.

  • Lgica de Programao Prof. Edgar Gurgel

    Pgina 27 de 63

    Exemplo 2: Melhorar o exemplo do clculo da mdia das notas: Algoritmo notas2;{Calcula a mdia aritmtica entre duas notas e verifica se o aluno foi aprovado por mdia} var

    n1,n2,media: real; inicio leia(n1); leia(n2); media (n1 + n2)/2; escrever(A mdia foi =, media); Se media >= 8 Ento escreva(Aprovado por mdia); Seno escreva(Prova Final); fim-se; fim. {trmino do algoritmo} 4 - Seleo Encadeada ou Aninhada (Ses encaixados)

    Pode-se agrupar vrias alternativas a fim de inspecionar uma ou mais condies.

    Geralmente tal estrutura formada quando uma determinada instruo ou bloco de

    aes deve ser executado se um conjunto de possibilidades ou combinaes de situaes

    for satisfeito.

    Sintaxe da estrutura: Se ento instruo 1 seno Se ento inicio instruo 2; instruo 3;

  • Lgica de Programao Prof. Edgar Gurgel

    Pgina 28 de 63

    instruo 4; fim seno Se ento instruo 5; fim-se; fim-se; fim-se;

    Se for satisfeita, ento a instruo 1 ser executada, caso contrrio,

    a ser inspecionada e se for satisfeita, ento o bloco de aes (instruo 2,

    instruo 3, instruo 4) ser executado, caso contrrio a ser verificada e

    se for satisfeita, a instruo 5 ser executada.

    5 - Seleo de Mltipla Escolha (Estrutura Caso)

    Quando uma nica varivel pode assumir diversos valores e que as instrues a

    serem executadas dependam do valor armazenado nesta varivel, pode-se usar a

    estrutura Caso. Seria uma forma mais compacta da Seleo encadeada.

    Sintaxe da estrutura: Caso faa v1: instruo 1; v2: inicio instruo 2; instruo 3; instruo 4; fim; Seno

    inicio instruo 7; instruo 8;

    fim; {fim do bloco seno} fim; {fim da estrutura Caso}

  • Lgica de Programao Prof. Edgar Gurgel

    Pgina 29 de 63

    Exemplo: Construa um algoritmo que, tendo como dados de entrada o preo de um

    produto e um cdigo de origem, emita o preo junto de sua procedncia. Caso o cdigo

    seja nenhum dos especificados, o produto deve ser encarado como importado.

    Cdigo de Origem:

    1- Sul 2- Norte 3- Leste 4- Oeste Algoritmo produto; var preco: real; origem: inteiro; inicio leia(origem); leia(preco); Caso origem faa 1: escreva(preco, Produto do Sul); 2: escreva(preco, Produto do Norte); 3: escreva(preco, Produto do Leste); 4: escreva(preco, Produto do Oeste); seno escreva(preco, Produto Importado); fim; fim.

    Exerccios 19) Faa um algoritmo para ler um nmero e se ele for maior do que 20 ento exibir a

    metade desse nmero.

    20) Faa um algoritmo para ler um nmero e informar se ele positivo, negativo ou

    nulo.

  • Lgica de Programao Prof. Edgar Gurgel

    Pgina 30 de 63

    21) Faa um algoritmo para realizar as quatro operaes bsicas. Considere que

    sero lidos dois nmeros como entrada e os seguintes caracteres representando as

    operaes bsicas: + (adio), - (subtrao), * (multiplicao) e / (diviso). Voc deve

    considerar ainda a possibilidade do usurio digitar um valor diferente das operaes

    bsicas descritas acima, e neste caso o algoritmo deve escrever uma mensagem

    informando Caractere invlido.

    22) Faa um algoritmo para ler dois nmeros e efetuar a adio destes nmeros. Caso

    o valor somado seja maior que 20 este dever ser apresentado somando-se a ele

    mais 8, caso o valor somado seja menor ou igual a 20 este dever ser apresentado

    subtraindo-se 5.

    23) A Prefeitura do Rio abriu uma linha de crdito para os funcionrios estatutrios. O

    valor mximo da prestao no poder ultrapassar 30% do salrio bruto. Faa um

    algoritmo que permita entrar com o salrio bruto e o valor da prestao e informar se o

    emprstimo pode ou no ser concedido.

    24) Faa um algoritmo para entrar com um nmero e exibir se ele maior do que 20,

    menor ou igual a 20.

    25) Faa um algoritmo para entrar com dois nmeros e exibir o maior nmero,

    supondo que so diferentes.

    26) Faa um algoritmo para entrar com trs nmeros e exibir o maior nmero, supondo

    que so diferentes.

    27) Faa um algoritmo para entrar com trs nmeros e armazenar o maior nmero na

    varivel de nome maior, supondo que so diferentes. Exiba o maior nmero.

    28) Faa um algoritmo para ler trs nmeros, os possveis lados de um tringulo, e

    exibir a classificao segundo os lados: equiltero, escaleno e issceles. Verifique

    antes se os lados formam um tringulo, em caso negativo, informe ao usurio.

    29) Um comerciante comprou um produto e quer vend-lo com um lucro de 45% se o

    valor da compra for menor que R$ 20,00. Caso contrrio, o lucro ser de 30%. Faa

    um algoritmo para ler o valor do produto e exibir o valor da venda.

  • Lgica de Programao Prof. Edgar Gurgel

    Pgina 31 de 63

    30) Faa um algoritmo para entrar com o salrio de uma pessoa e exibir o desconto do

    INSS segundo a tabela a seguir:

    Menor ou igual a R$ 600,00 Isento Maior que R$ 600,00 e menor ou igual a R$ 1200,00 20%

    Maior que R$ 1200,00 e menor ou igual a R$ 2000,00 25% Maior que R$ 2000,00 30%

    31) Faa um algoritmo para ler a nota de um aluno e converta esta nota quantitativa

    em uma nota qualitativa, de acordo com a tabela abaixo:

    Nota quantitativa Nota qualitativa nota2 a 4 Mau nota>4 a 6 Regular nota>6 a 8 Bom

    nota>8 a 10 Excelente

  • Lgica de Programao Prof. Edgar Gurgel

    Pgina 32 de 63

    V Funo

    5.1 Conceito Funo um trecho de programa com atribuies especficas,

    simplificando o entendimento do programa, proporcionando ao programa menores chances de erro e de complexidade.

    A linguagem C formada de vrias funes.

    5.2 Vantagens

    As funes atravs da passagem de parmetros e atravs do seu nome permitem que sejam retornados valores rotina chamadora e desta forma, esses valores podero ser impressos, atribudos a uma varivel ou podem servir em operaes aritmticas entre outras. Os principais objetivos de uma funo so:

    Dividir e estruturar um algoritmo em partes logicamente coerentes;

    Facilidade em testar os trechos em separados; O programador poder criar sua prpria biblioteca de funes,

    tornando sua programao mais eficiente uma vez que poder fazer uso de funes por ele escritas em vrios outros programas com a vantagem de j terem sido testadas;

    Aumentar a legibilidade de um programa; Evitar que uma certa sequncia de comandos necessria em

    vrios locais de um programa tenha que ser escrita repetidamente nestes locais, diminuindo tambm, o cdigo fonte,;

    Tudo isto justifica o uso de funes em nossos programas. 5.3. Funes Pr-definidas

    O conjunto de funes pr-definidas muito extenso e aqui vamos relacionar algumas funes das bibliotecas: math, ctype, string e stdlib.

    Quando estudamos uma funo, temos vrios parmetros a observar. Veja, por exemplo a seguinte funo pr-definida da biblioteca math:

    double sqrt(double x)

    Este o prottipo da funo, isto , informaes sobre o nome da

    funo, o tipo de retorno da funo e tipos dos parmetros. Esta funo retorna um valor double, seu nome sqrt e o tipo da

    varivel que recebe o valor passado(parmetro) double.

  • Lgica de Programao Prof. Edgar Gurgel

    Pgina 33 de 63

    Quando voc criar suas funes, elas precisaro ter uma declarao semelhante a esta.

    As funes podero ser localizadas antes da funo principal(main) ou depois.

    Se uma funo for declarada antes, o prottipo da funo no precisar ser declarado na funo main, mas se declarada depois, o prottipo precisar ser declarado na funo main.

    Declarao de uma funo:

    tipo identificador (lista de parmetros) int, float, char, void Nome da funo ( tipo1 nome1, tipo2 nome2 )

    Exemplos:

    int quadrado(int l) char maiuscula(char n[] )

    5.4 Chamada da funo

    No devemos ficar preocupados como isso ir acontecer, pois j fizemos

    uso de vrios funes internas(funes do tradutor) e, da mesma forma, chamaremos as nossas funes.

    Quando uma funo chamada, o fluxo de controle desviado para a

    funo, no momento em que ela ativada no programa principal. Ao terminar

    a execuo dos comandos da funo, o fluxo de controle retorna ao comando

    seguinte quele onde ela foi ativada, exatamente como na figura abaixo:

    5.5 Estrutura de uma funo

    Uma funo um bloco contendo incio e fim, sendo identificada por um nome , pelo qual ser referenciada em qualquer parte e em qualquer momento do programa. A funo serve para executar tarefas menores como ler, calcular,

    main() funcao1( ...) { ... retorna(...); }

    {... ...

    < chamada da funo 1 > ... ... }

  • Lgica de Programao Prof. Edgar Gurgel

    Pgina 34 de 63

    determinar o maior/menor valor entre uma lista de valores, ordenar, converter para maisculas, entre outras.

    Aps executar estas tarefas menores, a funo retorna, ou no, um determinado valor para a funo chamadora.

    Quando a funo no retornar nada(nulo) usaremos o tipo void, pois sugerido pelo comit de padronizao ANSI.

    Dentro da funo, podem ser declaradas variveis que chamamos de variveis locais, pois s so visveis dentro da funo.

    Sintaxe da funo:

    nome_da_funo(declaraes dos parmetros) { < declarao das variveis locais> comandos que formam o corpo da funo return(< valor >) ; /* ou return; ou nada */ }

    tipo de funo : tipo de dado que a funo dar retorno. Pode ser int, float, char ou void nome da funo : segue as mesmas regras de declarao de

    variveis parmetros : nomes das variveis, seguem as mesmas regras de declarao de variveis declaraes dos parmetros

    : declaraes de variveis da funo(tipo e nome)

    { : incio da funo variveis locais : declaraes de variveis que sero utilizadas

    dentro da funo( tipo e nome) corpo da funo : sequncia de comandos return( .. ) : o que vai ser retornado para o algoritmo ou no

    existe } : fim da funo

    5.6 Localizao das funes

    Podem ser colocadas antes ou aps a funo principal (main).

    prottipo da funcao1; prottipo da funcao2; prottipo da funcao3; int main() { ... }

  • Lgica de Programao Prof. Edgar Gurgel

    Pgina 35 de 63

    // abaixo do main() // definio de funo funcao1(...) { ... } funcao2(...) { ... } funcao3(...) { ... } 5.7 Dividindo o programa em funes Ns podemos modularizar nossos programas para que possamos deix-

    lo mais claro. Se as funes manipulam as mesmas variveis, deveremos declar-las com variveis globais, isto , fora de todas as funes.

    5.8 Tipos de Funes 5.8.1 Funes void ( no retornam nada)

    Este tipo de funo no tem nenhum dado de retorno para a funo

    principal. Ela executa o trecho e retorna para a funo seguinte da sua chamada. A funo pode no ter parmetros e ser do tipo void, tambm. Exemplo: #include using namespace std; void aster();/*prototipo da funo(tipo de retorno, nome e (argumentos) */ int main() { cout

  • Lgica de Programao Prof. Edgar Gurgel

    Pgina 36 de 63

    5.8.1 Funes com passagem de valor A linguagem C++ passa os valores para funes atravs de argumentos

    das chamadas das funes para os parmetros das funes, na verdade variveis que recebero cpias dos dados. Desta maneira, os dados de origem no so alterados.

    Uma boa dica: Suponha que voc comprou um livro e descobriu alguns erros. Voc corrige no seu livro, mas no altera o original que, enquanto o autor no corrigir, os erros permanecero.

    A nica exceo para as matrizes que so ponteiros para o primeiro

    elemento da matriz.

    Exemplo: Funo para somar dois nmeros #include using namespace std; void soma(int x, int y); /*prottipo funo(tipo de retorno, nome e(argumentos) */ int main() { int num1,num2; coutnum1, coutnum2, soma(num1,num2); system("pause"); } void soma(int x, int y) { int soma; soma = x + y; cout>>\n A soma e

  • Lgica de Programao Prof. Edgar Gurgel

    Pgina 37 de 63

    Exerccios 32) Desenvolva um programa que tenha trs funes: uma para calcular e

    apresentar a subtrao, uma para a multiplicao e uma para a diviso de dois

    nmeros quaisquer fornecidos pelo usurio. Os nmeros devem ser fornecidos

    no programa principal e depois informados funo que realiza a operaes e

    exibe o resultados.

    33) Desenvolva um programa que tenha uma funo para calcular e apresentar

    o valor de uma potncia de um nmero qualquer informado pelo usurio. Ou

    seja, ao informar para a funo o nmero e a sua potncia, deve ser

    apresentado o seu resultado. Por exemplo, se for mencionado no programa

    principal funo potncia(2,3), deve ser apresentado o valor 8.

  • Lgica de Programao Prof. Edgar Gurgel

    Pgina 38 de 63

    VI - Estrutura de Repetio

    1 - Conceito de Repetio

    Na estrutura de sequncia sabe-se que os comandos so executados uma nica

    vez e um aps o outro (de cima para baixo). Com o estudo da seleo, acrescenta-se a

    possibilidade de escolher instrues a serem executadas, mas cada instruo continua

    sendo executada apenas uma vez. A execuo do programa comea com a primeira

    instruo e termina na ltima, sendo cada instruo executada no mximo uma vez. Em

    programao frequentemente preciso repetir a execuo de um grupo de instrues, ou

    mesmo repetir a execuo de todo o programa, para diferentes valores de dados.

    Em programao, uma sequncia de instrues executada repetidas vezes

    chamada de lao(loop). Um lao constitudo por uma sequncia de instrues, o corpo

    do lao, e por uma estrutura que controla a repetio deste corpo, especificando quantas

    vezes ele ter de ser repetido.

    As instrues que constituem o corpo de um lao podem ser executadas qualquer

    nmero de vezes(at mesmo nenhuma), mas este nmero finito. H erros semnticos

    que podem provocar a execuo interminvel do corpo do lao, caso que se diz que o

    lao infinito.

    Existem trs estruturas que permitem a especificao de laos em nossa

    linguagem algortmica: Enquanto, Repita e Para.

    2 - Enquanto (Repetio com Teste no Incio)

    Consiste numa estrutura de controle de fluxo que permite executar de forma

    repetitiva uma instruo (ou bloco de instrues) enquanto uma determinada expresso

    lgica tiver o valor verdadeiro, porm, sempre verificando antes de cada execuo se

    permitido repetir o mesmo trecho.

    Sintaxe da estrutura: Enquanto faa Incio instruo 1; instruo 2; instruo 3;

  • Lgica de Programao Prof. Edgar Gurgel

    Pgina 39 de 63

    . . . instruo n; fim; {fim do enquanto}

    Enquanto a condio for satisfeita, as instrues de 1 a n sero repetidas, caso

    contrrio, o comando abandonado (sai do lao). Se j da primeira vez o resultado for

    falso, os comandos no sero executados uma nica vez.

    A estrutura Enquanto pode ser usada para construir laos determinados ou

    indeterminados. Seguem alguns exemplos de como estes tipos de laos funcionam:

    Exemplo1: Nmero de repeties determinadas: Construir um algoritmo para calcular a

    soma dos 100 primeiros nmeros inteiros e positivos. Algoritmo soma100; var numero,soma: inteiro; inicio soma 0; numero 1;

    Enquanto (numero

  • Lgica de Programao Prof. Edgar Gurgel

    Pgina 40 de 63

    Algoritmo maior_elemento; var valor, maior: real; inicio escreva(Entre com o valor =); leia(valor); maior valor;

    Enquanto (valor 0) faa incio Se valor > maior Ento maior valor; escrever(Entre com o valor =); leia(valor); fim; escreva(Maior valor =,maior); fim. 3 - Repita (Repetio com Teste no Final)

    Consiste numa estrutura que permite que um bloco ou uma ao primitiva seja

    repetida at que uma determinada condio seja satisfeita.

    Sintaxe da estrutura: Repita instruo 1; instruo 2; instruo 3; . . . instruo n; At ;

  • Lgica de Programao Prof. Edgar Gurgel

    Pgina 41 de 63

    A diferena bsica entre as estruturas enquanto e repita que nesta ltima, o

    bloco executado pelo menos uma vez independentemente da validade da condio,

    pois a inspeo da condio s feita aps a execuo do bloco ou ao primitiva.

    importante tambm ressaltar que no h necessidade dos delimitadores de

    bloco (Incio - Fim), ao contrrio do enquanto, pois o corpo do lao j est delimitado

    pelas palavras Repita e At, evitando assim qualquer ambiguidade quanto

    determinao das instrues a serem repetidas.

    Da mesma forma que a estrutura enquanto, a estrutura repita tambm serve para

    construir laos determinados e indeterminados. Sero utilizados os mesmos exemplos

    para comparar as duas estruturas.

    Exemplo1: Algoritmo soma100_2; var numero, soma: inteiro; inicio soma0;

    numero 1; Repita soma soma + numero; numero numero + 1; At (numero > 100); escrever(Soma =, soma); Fim. Exemplo2: Algoritmo maior_elemento_2; var valor, maior: real; Incio escreva(Entre com o valor =); leia(valor); maior valor;

  • Lgica de Programao Prof. Edgar Gurgel

    Pgina 42 de 63

    Repita Se valor > maior Ento maior valor; escreva(Entre com o valor =); leia(valor); At (valor = 0); escreva(Maior valor =, maior); fim. Comparando este algoritmo com o do primeiro exemplo da estrutura enquanto, nota-se que a utilizao de uma estrutura repita no lugar de uma estrutura enquanto

    corresponde a utilizar como para o repita a negao da do

    enquanto.

    4 - Para (Repetio com Varivel de Controle)

    Nas estruturas de repetio vistas at agora, ocorrem casos em que se torna

    difcil determinar quantas vezes o bloco ser executado. Sabe-se que ele ser executado

    enquanto uma condio for satisfeita (Enquanto) ou at que uma condio seja satisfeita

    (Repita). A estrutura Para repete a execuo do bloco um nmero fixo de vezes, pois

    ela possui limites fixos. O nmero de repeties do bloco ser dado por:

    Onde:

    Vi: valor inicial

    Vf: valor final

    Na estrutura Para, usar-se- o conceito de varivel de controle, que ser uma

    varivel (V) que ser incrementada aps a repetio de um bloco, de acordo com o valor

    deste incremento (p).

    Sintaxe da estrutura:

    Para v vi at vf faa inicio instruo 1; instruo 2;

    N = Vf - Vi + 1

  • Lgica de Programao Prof. Edgar Gurgel

    Pgina 43 de 63

    instruo 3; .

    . .

    instruo n; fim; {fim do para}

    A estrutura Para s aceita repeties determinadas e nestes casos ser a mais

    conveniente. Ser utilizado o exemplo da soma dos 100 primeiros nmeros inteiros e

    positivos e percebe-se que esta estrutura mais conveniente porque no necessrio:

    Inicializar o primeiro inteiro a ser adicionado;

    Incrementar o valor do inteiro a ser adicionado ao valor da soma;

    Testar se o valor do inteiro j atingiu o limite.

    Exemplo: Algoritmo soma100_3; var numero,soma: inteiro; inicio soma 0; Para numero 1 at 100 faa soma soma + numero; escreva(Soma =, soma); fim.

    Exerccios:

    Diga o que ser escrito nos trechos dos algoritmos abaixo, considere que

    todas as variveis utilizadas so do tipo inteiro. 34) valor 5; Para i 1 at 5 faa

    valor valor + i; escreva(valor);

  • Lgica de Programao Prof. Edgar Gurgel

    Pgina 44 de 63

    35) valor3; x 0;

    Enquanto x < 5 faa incio valor valor + 1; x x + 1; fim; escreva(valor); 36) Faa um algoritmo para exibir todos os nmeros de 1 a 100.

    37) Faa um algoritmo para exibir todos os nmeros de 100 a 1.

    38) Faa um algoritmo para exibir os 100 primeiros nmeros pares.

    39) Faa um algoritmo para ler 10 nmeros e exibir o quadrado de cada

    nmero lido.

    40) Faa um algoritmo que leia um nmero, maior que zero, que ser o limite

    superior de um intervalo e exibir todos os nmeros impares menores do que

    esse nmero.

    41) Faa um algoritmo que exiba a soma dos nmeros pares entre 25 e 199.

    42) Faa um algoritmo que exiba a tabuada de multiplicar do nmero 3.

    43) Faa um algoritmo para ler vrios nmeros positivos e exibir a mdia dos

    nmeros digitados. Quando um numero negativo for digitado, o programa deve

    encerrar e apresentar a mdia.

    44) Faa um algoritmo para ler vrios nmeros e informar quantos nmeros

    entre 100 e 200 foram digitados. Quando o valor 0(zero) for lido, o algoritmo

    dever cessar sua execuo.

    45) Faa um algoritmo para ler vrios nmeros inteiros e apresentar o fatorial

    de cada nmero. O algoritmo se encerra quando se digita um nmero menor do

    que 1.

    46) Faa um algoritmo para ler com a idade de vrias pessoas e exibir:

  • Lgica de Programao Prof. Edgar Gurgel

    Pgina 45 de 63

    O total de pessoas com menos de 21 anos;

    O total de pessoas com mais de 50 anos.

    Quando uma idade negativa for digitada, o programa deve encerrar e

    apresentar as informaes solicitadas.

  • Lgica de Programao Prof. Edgar Gurgel

    Pgina 46 de 63

    Anexos Anexo A Programao em C++ 1 - Introduo " Linguagem BCPL foi desenvolvida por Martin Richards;

    " Linguagem B desenvolvida por Ken Thompson;

    " Linguagem C desenvolvida por Dennis Ritchie em um DEC DCP-11, usando o

    sistema operacional Unix;

    " Linguagem C with Classes;

    " Linguagem C++ desenvolvida por Bjarne Stroustrup, em 1979, na Bell

    Laboratories, Nova Jersey;

    " C++, j passou por trs revises;

    " Primeira reviso em 1985 e a segunda em 1990;

    " Terceira reviso foi o processo de padronizao da C++, com o comit ANSI

    (American National Standards Institute) e a ISO (International Standards

    Organization);

    " Criao da STL (Standard Template Library), conjunto de rotinas genricas que

    podem ser usadas para a manipulao de dados;

    " Incluso da STL na especificao da linguagem C++;

    " Expandiu o escopo da linguagem C++;

    " Padronizao da linguagem C++;

    " Padronizada pela pelo documento ISO/IEC 14882:1998;

    " Trata-se de uma linguagem para programadores;

    " Baseia-se no paradigma da programao orientada a objetos;

    " Preocupao com a portabilidade;

    " Deu origem as linguagens Java e C#...;

    " Todo programa C++ possui uma funo main;

    " O C++ possui a sua biblioteca padro de funes (C++ Standard Library);

    " Comentrios documentam o programa e melhoram a sua legibilidade;

    " O C++ faz distino entre maisculas e minsculas (case sensitive);

    " As sentenas terminam por ponto e vrgula (;);

    " Para recepo ou envio de dados os programas em C++ consideram 3 objetos

    padres do tipo stream:

    " cin (stream padro de entrada - normalmente o teclado);

    " cout (stream padro de sada - normalmente o monitor);

    " cerr (stream padro de erros - normalmente o monitor);

  • Lgica de Programao Prof. Edgar Gurgel

    Pgina 47 de 63

    2 - Fases de um Programa em C++

    3 - Estrutura de um Programa

    // O nome deste programa primeiro.cpp #include using namespace std; int main() { cout

  • Lgica de Programao Prof. Edgar Gurgel

    Pgina 48 de 63

    4 - Estrutura de uma Funo /*************************** Cabealho p/ Comentrios ***************************/ tipo nomeFunc(parmetros) { seqncia de comandos retorna var_tipo } 5 - Variveis " Os nomes podem ter qualquer tamanho, porm apenas os 31 primeiros

    caracteres so significativos; " Antes de sua utilizao as variveis devem ser declaradas. A forma geral para

    declarao de uma varivel : " onde tipo um dos tipos de variveis C++ (int, float, double, etc) e

    nome qualquer nome de varivel vlido; " Ex. int soma /* resultado da adio */

    " Declarao de variveis inteiras e reais (ponto-flutuante): " Inteiros: int quantidade /* no. de unidades */ " Reais: float salario /* salario bruto */

    6 - Operadores Aritmticos

    " Observao sobre a diviso:

    " Na diviso inteira a parte fracionria truncada (descartada) sem

    arredondamento;

    " Ex. 19/10 = 1;

    " Se o divisor ou o dividendo for um nmero real ser realizada uma

    diviso real ao invs da diviso inteira;

    " Ex. 19/10.0 = 1.9

    7 - Operadores Relacionais

    Operao OperadorAdio +Subtrao -Multiplicao *Diviso /Resto %

    Operador Precedncia

    ( ) Calculados em primeiro lugar da esq. p/ dir.

    *, / ou % Calculados em segundo lugar da esq. p/ dir.

    + ou - Calculados por ltimo da esq. p/ dir.

    Tipo Operao Operadorigualdade igual ==

    diferente !=relacionais maior que >

    menor que =menor ou igual

  • Lgica de Programao Prof. Edgar Gurgel

    Pgina 49 de 63

    8 - Entrada e Sada de dados " A E/S em C++ ocorre em streams (fluxo de bytes). Um stream um objeto

    onde um programa pode inserir ou extrair caracteres;

    " A biblioteca padro C++ inclui o arquivo de cabealho iostream, onde os

    objetos stream de E/S padro esto definidos;

    " Sada padro

    " Normalmente a sada padro de um programa a tela do monitor. Em

    C++, o objeto stream para acess-la o cout;

    " Para inserir dados no objeto stream cout utiliza-se o operador de

    insero (

  • Lgica de Programao Prof. Edgar Gurgel

    Pgina 50 de 63

    " Para extrair dados no objeto stream cin utiliza-se o operador de

    extrao (>>);

    " cin s processar a entrada quando a tecla ENTER for pressionada;

    " O tipo do dado digitado deve ser compatvel com o tipo definido para a

    varivel. Por exemplo, se a varivel inteira somente inteiros devem

    ser digitados;

    " O exemplo 3 equivalente aos exemplos 1 e 2. Em ambos os casos

    devem ser digitados um valor para a varivel a e outro para a varivel

    b, separados por espao, tab ou uma nova linha;

    " cin pode ser utilizado para a leitura de strings. Entretanto, a extrao de

    cin termina assim que um espao em branco for encontrado, fazendo

    com que apenas uma palavra seja extrada. Sendo assim, para a leitura

    de uma linha inteira pode ser utilizada, por exemplo, a funo getline;

    9 - Tipos de Dados " char

    " Um nico byte, capaz de conter um nico caractere;

    " int " Um inteiro, normalmente reflete o tamanho natural dos inteiros da mquina

    host;

    " float " Ponto flutuante em preciso simples;

    " double " Ponto flutuante em preciso dupla;

    " qualificadores " short, long;

    " signed, unsigned.

    Exemplos de Uso de cin 1) std::cin >> a; 2) cin >> b; 3) cin >> a >> b;

  • Lgica de Programao Prof. Edgar Gurgel

    Pgina 51 de 63

    10 - Estruturas

    10.1 - Estrutura de Seleo /* Utilizando a estrutura o comando if... else...

    Este o segundo programa e o seu nome segundo.cpp */

    #include

    using namespace std;

    int main()

    {

    double grau = 5.0;

    if(grau >= 7.0)

    cout

  • Lgica de Programao Prof. Edgar Gurgel

    Pgina 52 de 63

    10.3 - Estrutura de Repetio While

    10.4 - Estrutura de Repetio For Sintaxe:

    produto = 2; while(produto

  • Lgica de Programao Prof. Edgar Gurgel

    Pgina 53 de 63

    Anexo B Tutorial Dev C++ Baixe o Dev C++ em http://www.bloodshed.net/index.html 1. Abrindo o Programa

    Depois de instalar o Dev C++, abra o programa. Selecione a lngua e clique em

    Clique no boto

  • Lgica de Programao Prof. Edgar Gurgel

    Pgina 54 de 63

    Clique no boto

    Clique no boto para concluir a configurao

  • Lgica de Programao Prof. Edgar Gurgel

    Pgina 55 de 63

    2. Criando um Projeto

    Entre em Arquivo # Novo # Projeto

    Aparecer a tela abaixo:

    Escolha o tipo de projeto que voc pretente iniciar e nomeie seu projeto.

  • Lgica de Programao Prof. Edgar Gurgel

    Pgina 56 de 63

    Escolha se seu projeto ser em C ou C++.

    Aps isso clique em . Aparecer uma tela para escolher o local para salvar o seu projeto.

    Feito isso clique em .

    Agora iremos criar um novo arquivo fonte para dar incio a construo de nosso programa.

  • Lgica de Programao Prof. Edgar Gurgel

    Pgina 57 de 63

    V em Arquivo # Novo # Arquivo Fonte (ou use o atalho no teclado ).

    Agora voc est pronto para iniciar seu programa.

    3. Compilando um Programa

    Quando seu programa estiver finalizado v em Menu # Executar # Compilar ou

  • Lgica de Programao Prof. Edgar Gurgel

    Pgina 58 de 63

    Aparecer a tela abaixo:

    Isto significa que seu programa no contm erros e pode ser executado.

    V em Menu # Executar # Executar ou . Salve junto ao seu projeto.

    Seu programa ser executado.

  • Lgica de Programao Prof. Edgar Gurgel

    Pgina 59 de 63

    4. Abrindo Programas Existentes

    V em Menu # Arquivo # Abrir projeto ou arquivo Ctrl+O

    Encontre a origem do projeto ou aquivo.

    Clique em .

  • Lgica de Programao Prof. Edgar Gurgel

    Pgina 60 de 63

    Anexo C Tutorial Visual Studio C

    Interface New project Escolher Win32 Marcar Win32 console application Colocar o nome do projeto No necessrio procurar diretrio, somente se voc quiser mudar o padro Desmarcar a caixa Create directory solution Clicar em Ok

    Interface Win32 Application Wizard Marcar console application Marcar empty project Clicar em Finish

  • Lgica de Programao Prof. Edgar Gurgel

    Pgina 61 de 63

    Interface Grfica do Visual Studio Boto direito em Source Files Add New Item...

    Interface Add New Item: Clicar em Code Colocar nome e clicar em C++ File (.cpp) Clicar no boto add

  • Lgica de Programao Prof. Edgar Gurgel

    Pgina 62 de 63

    Interface Grfica do Visual Studio Marcar na barra de ferramentas debug ou release

    Interface Grfica do Visual Studio (Compilando) Clicar na barra de menu Build Build Solution ou F7

  • Lgica de Programao Prof. Edgar Gurgel

    Pgina 63 de 63

    Interface Grfica do Visual Studio (Executando) Clicar na barra de menu Debug Start debugging ou F5

    Em seguida aparecer uma janela de console (janela preta) com o seu programa

    em execuo (para segurar a tela use o comando system (pause)).