Lógica de Programação

UNIDADE 1 1.1 1.2 1.3 1.4 1.5 1.6

INTRODUÇÃO À LÓGICA DE PROGRAMAÇÃO ........................................................................................... 3

VISÃO GERAL DO PROCESSO DE DESENVOLVIMENTO DE APLICAÇÕES ........................................................................................ 3 LÓGICA DE PROGRAMAÇÃO ............................................................................................................................................ 4 SEQUÊNCIA LÓGICA....................................................................................................................................................... 4 INSTRUÇÕES ................................................................................................................................................................ 5 ALGORITMO ................................................................................................................................................................ 5 EXERCÍCIOS SUGERIDOS ................................................................................................................................................. 9 DIAGRAMAS DE FLUXO .......................................................................................................................... 10

UNIDADE 2 2.1 2.2 2.3 2.4

DIAGRAMA DE NASSI-SHNEIDERMAN ............................................................................................................................. 10 FLUXOGRAMAS .......................................................................................................................................................... 12 LINGUAGEM NATURAL................................................................................................................................................. 14 PSEUDOCÓDIGO ......................................................................................................................................................... 14 ELEMENTOS BÁSICOS DO CÓDIGO ......................................................................................................... 16

UNIDADE 3 3.1 3.2 3.3

VARIÁVEIS E CONSTANTES ............................................................................................................................................ 16 TIPOS PRIMITIVOS DE DADOS ........................................................................................................................................ 16 DECLARAÇÃO DE VARIÁVEIS .......................................................................................................................................... 17 COMANDOS DE ATRIBUIÇÃO, ENTRADA E SAÍDA DE DADOS ................................................................. 22

UNIDADE 4 4.1 4.2 4.3

COMANDO DE ATRIBUIÇÃO........................................................................................................................................... 22 COMANDO DE ENTRADA DE DADOS ............................................................................................................................... 23 COMANDO DE SAÍDA DE DADOS .................................................................................................................................... 23 ESTRUTURAS DE SEQUENCIAÇÃO, SELEÇÃO E REPETIÇÃO ..................................................................... 24

UNIDADE 5 5.1 5.2 5.3

SEQUÊNCIA ............................................................................................................................................................... 24 SELEÇÃO ................................................................................................................................................................... 24 REPETIÇÃO ................................................................................................................................................................ 27 VETORES E MATRIZES (ARRAYS) ............................................................................................................. 31

UNIDADE 6 6.1 6.1

VETORES ................................................................................................................................................................... 31 MATRIZES ................................................................................................................................................................. 32 SUBROTINAS (PROCEDIMENTOS E FUNÇÕES)......................................................................................... 33

UNIDADE 7 7.1 7.2 7.3

UTILIZAÇÃO DE SUBROTINAS ......................................................................................................................................... 33 PROCEDIMENTOS........................................................................................................................................................ 34 FUNÇÕES .................................................................................................................................................................. 34 CONTEÚDO DINÂMICO........................................................................................................................... 36

UNIDADE 8 8.1 8.2

CONTEÚDO DINÂMICO - CONCEITO................................................................................................................................ 36 LINGUAGENS: ............................................................................................................................................................ 37 LINGUAGEM PHP.................................................................................................................................... 38

UNIDADE 9 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8

COMO CRIAR UM ARQUIVO PHP ................................................................................................................................... 38 DELIMITANDO O CÓDIGO PHP ...................................................................................................................................... 38 DELIMITADORES ALTERNATIVOS ..................................................................................................................................... 39 SEPARADORES DE INSTRUÇÕES ...................................................................................................................................... 39 COMENTÁRIOS ........................................................................................................................................................... 40 ESTRUTURAS DE DADOS ............................................................................................................................................... 41 VARIÁVEIS ................................................................................................................................................................. 41 CONSTANTES ............................................................................................................................................................. 41

2

9.9 9.10 9.11

ARRAYS .................................................................................................................................................................... 42 TIPOS DE DADOS SUPORTADOS ..................................................................................................................................... 43 ESTRUTURAS DE CONTROLE .......................................................................................................................................... 46 LINGUAGEM C .................................................................................................................................... 52

UNIDADE 10 10.1 10.2 10.3 10.4 10.5

ESTRUTURA BÁSICA DE UM PROGRAMA EM C ................................................................................................................... 52 COMANDO IF ............................................................................................................................................................. 53 ESTRUTURAS DE REPETIÇÃO .......................................................................................................................................... 54 ARRAYS (VETORES E MATRIZES) ..................................................................................................................................... 54 FUNÇÕES (SUBROTINAS) .............................................................................................................................................. 55 FUNDAMENTOS ORIENTAÇÃO A OBJETOS ......................................................................................... 56

UNIDADE 11 11.1 11.2 11.3 11.4

CONCEITOS BÁSICOS .................................................................................................................................................... 56 CLASSE ..................................................................................................................................................................... 59 COLABORAÇÃO .......................................................................................................................................................... 60 BENEFÍCIOS DA ORIENTAÇÃO A OBJETOS ......................................................................................................................... 61 EXERCÍCIOS DE FIXAÇÃO .................................................................................................................... 63

UNIDADE 12 -

3

etc. missão e objetivos do sistema. A seguir apresentaremos uma forma de representação do processo de desenvolvimento de software que é bastante encontrada na literatura: Planejamento Análise Projeto Implementaçã o Testes Manutenção Na figura. é importante que tenhamos uma visão geral do processo de desenvolvimento de aplicações. cronogramas de desenvolvimento.1 Visão geral do processo de desenvolvimento de aplicações Antes de começarmos a estudar lógica de programação.Unidade 1 . . levantamento inicial de informações. A seguir daremos uma rápida explicação das atividades realizadas em cada etapa.Introdução à Lógica de Programação 1. Estas formas de representação podem variar tanto na quantidade de etapas como nas atividades que devem ser realizadas por cada etapa. Planejamento Na etapa de planejamento é onde deve ser desenvolvido um plano inicial de desenvolvimento. Podemos encontrar na literatura em informática várias formas de representação das etapas em que consiste o processo de desenvolvimento de um programa ou aplicação. análise custo x benefício. uma vez que estudaremos lógica de programação com o objetivo de conseguir um bom embasamento para a prática da programação de computadores. podemos ver o processo de desenvolvimento de programas dividido em seis etapas. levando em considerações questões como definição da abrangência do sistema.

Implementação A etapa de implementação é onde os programas são efetivamente construídos. 4 . o que é Lógica? Lógica de Programação é a técnica de encadear pensamentos para atingir determinado objetivo. que atenda aos requisitos do sistema identificados na análise. indo desde o teste unitário dos módulos de programas até o teste de integração de todo o sistema de software. ela permite definir a sequência lógica para o desenvolvimento. Projeto Também chamada de especificação do projeto.3 Sequência Lógica Os pensamentos podem ser descritos como uma sequência de instruções. que podem ser ocasionados por vários motivos: erros de projeto identificados após a implementação e o teste do software. Manutenção É onde ocorrem ajustes do software implementado.2 Lógica de Programação A lógica trata da correção do pensamento. Como filosofia ela procura saber por que pensamos de uma forma e não de outra. 1. Aqui. etc. A Lógica de Programação é necessária para pessoas que desejam trabalhar com desenvolvimento de sistemas e programas. a Lógica estuda ou tem em vista a "correção do pensamento". 1. Podemos dar uma definição concreta: Sequência Lógica são os passos executados até atingir um objetivo ou solução de um problema. Existe uma grande variedade de testes que são realizados. Poderíamos dizer. passamos a nos preocupar com os diversos aspectos computacionais necessários para uma boa implementação do software. visto que a forma mais complexa de pensamento é o raciocínio. Os algoritmos dos programas a serem implementados são construídos nesta fase. inovações tecnológicas. Teste Nesta etapa os programas construídos serão testados de forma exaustiva. A análise proporciona a base para uma boa implementação do software.. também. Então. é onde propomos uma arquitetura de implementação para o software. a partir da arquitetura de implementação feita na etapa anterior. é onde deve se obter um claro entendimento sobre o sistema. evolução do sistema. que devem ser seguidas para cumprir uma determinada tarefa. que a Lógica é a arte de pensar corretamente e.Lógica de Programação Análise Também chamada de análise de requisitos. Nesta etapa é onde a atividade de codificação ocorre de forma massiva.

uma instrução tomada em separado. fazemos uso constantemente de algoritmos em nosso cotidiano: a maneira como uma pessoa toma banho é um algoritmo. porém. guia de preenchimento para declaração do imposto de renda. parece-nos estranha. Outros algoritmos frequentemente encontrados são: instruções para se utilizar um aparelho eletrodoméstico.5 Algoritmo A palavra algoritmo. uma receita para preparo de algum prato. "Um conjunto finito de regras que provê uma sequência de operações para resolver um tipo de problema específico" Ronald Knuth 5 . Em informática.. Para obtermos o resultado. fritar as batatas. 1. Embora possua designação desconhecida. instrução é a informação que indica a um computador uma ação elementar a ser executada. Por exemplo. se quisermos fazer uma omelete de batatas. Dessa maneira. por exemplo. entende-se por instruções "um conjunto de regras ou normas definidas para a realização ou emprego de algo". não tem muito sentido. precisaremos colocar em prática uma série de instruções: descascar as batatas. Em informática. bater os ovos.4 Instruções Na linguagem comum. é o que indica a um computador uma ação elementar a executar. etc. na ordem correta..Lógica de Programação 1. São vários os conceitos para algoritmo. É evidente que essas instruções têm que ser executadas em uma ordem adequada – não se pode fritar as batatas para depois descascá-las. para isso é necessário um conjunto de instruções colocadas em ordem sequencial lógica. à primeira vista. Instruções são um conjunto de regras ou normas definidas para a realização ou emprego de algo. Convém ressaltar que uma ordem isolada não permite realizar o processo completo. Escolhemos alguns para serem apresentados aqui. luz e telefone são calculadas mensalmente. dentre outros. a maneira como as contas de água. a regra para determinação de máximos e mínimos de funções por derivadas sucessivas. precisamos colocar em prática o conjunto de todas as instruções.

entre elas: linguagem natural. pseudocódigo (ou português estruturado). Exemplo: Receita de Bolo 6 . o que nos dá uma flexibilidade para a efetiva implementação do programa. capacidade de receber dado(s) de entrada do mundo exterior. Uma vez construído o algoritmo. fluxogramas. de passos que levam à solução de um dado problema" Tremblay "Processo de cálculo. e não ambígua. diagrama de NassiShneiderman (ou Chapin). poder gerar informações de saída para o mundo externo ao do ambiente do algoritmo. Características Todo algoritmo deve apresentar algumas características básicas:      ter fim. basta conhecermos a linguagem de programação que se pretende adotar. etc. Para tratarmos da complexidade dos problemas desenvolvemos algoritmos que devem expressar de forma objetiva e clara a forma de solucionarmos esse problema. Formas de Representação Existem várias ferramentas que podem ser utilizadas para a representação de algoritmos. veremos em nível de detalhe algumas delas. ser efetivo (todas as etapas especificadas no algoritmo devem ser alcançáveis em um tempo finito). A seguir. com generalidade e sem restrições. estaremos tratando constantemente com a complexidade inerente aos problemas que desejamos que nosso programa de computador resolva. em que se estipulam. não dar margem à dupla interpretação (não ambíguo). Descrição Narrativa Faz-se uso da linguagem natural para descrever algoritmos. A partir do algoritmo desenvolvido fica fácil construirmos o programa. as regras formais para a obtenção do resultado ou da solução do problema" Dicionário Aurélio Por que precisamos dele? No desenvolvimento de programas.Lógica de Programação "Sequência ordenada. podemos transportá-lo para qualquer linguagem de programação. ou de resolução de um grupo de problemas semelhantes.

A combinação destas três estruturas permite-nos a construção de algoritmos para a resolução de problemas extremamente complexos.Lógica de Programação         Providencie ingredientes. Despeje a mistura na forma de bolo. Vantagens O idioma é bastante conhecido por nós. Retire a forma do forno. Misture os ingredientes.pegue uma escada . Pouca confiabilidade imprecisão acarreta desconfiança).coloque-a embaixo da lâmpada . Deixe esfriar. Desvantagens Imprecisão. Leve a forma ao forno.busque uma lâmpada nova .coloque a lâmpada nova .retire a lâmpada velha . Espere 20 minutos.suba na escada com a lâmpada nova . seleção e repetição. Imagine a seguinte situação: precisamos elaborar um algoritmo para trocar uma lâmpada. Início . Prove.desça da escada Fim 7 . (a a Extensão (normalmente. escreve-se muito para dizer pouca coisa). A programação estruturada baseia-se nestas três estruturas básicas. Existem três estruturas básicas para a construção de algoritmos: sequenciacão.

Início .retire a lâmpada velha . que é executada apenas uma vez. de sequência.Lógica de Programação Observe que este algoritmo resolve o nosso problema da troca de lâmpada.busque uma lâmpada nova .pegue uma escada . uma condição deve ser analisada e. trata-se de um algoritmo bastante simples.coloque a lâmpada nova .coloque-a embaixo da lâmpada . então: . podemos melhorar nosso algoritmo. Em outras palavras. Início .se a lampada não acender.enquanto a lâmpada não acender. Embora nosso algoritmo tenha melhorado. ou seja. Assim.se a lâmpada não acender.coloque a lâmpada nova .pegue uma escada .desça da escada Fim Agora o nosso algoritmo.suba na escada com a lâmpada nova . caracteriza-se por possuir uma única sequência de ações.retire a lâmpada velha . faça: . uma estrutura de seleção escolhe ações a serem executadas a partir de uma condição (que pode ser simples ou composta). Uma estrutura de sequência. subimos para trocá-la. além da estrutura. antes de trocarmos a lâmpada devemos nos certificar de que ela realmente esteja queimada.coloque-a embaixo da lâmpada .ligue o interruptor . que se utiliza apenas da estrutura de sequenciação. No entanto. ainda podemos deixá-lo mais completo. Na estrutura de seleção.desça da escada Fim 8 . para então trocá-la.ligue o interruptor . nenhuma seleção ou repetição de procedimentos aparece no algoritmo. até que possamos efetivamente resolver nosso problema. um "caminho" do algoritmo será executado.suba na escada com a lâmpada nova .busque uma lâmpada nova . passa a utilizar uma estrutura de seleção. a partir do resultado da análise. então: . No entanto. Se isso ocorrer. precisaremos executar algumas ações novamente. Quando verificamos que a lâmpada está queimada. mas não consideramos a hipótese da lâmpada nova também estar queimada.

É importante salientar que existem várias formas de se construir um algoritmo. 9 . 1. Assim. inserimos uma estrutura de repetição no nosso algoritmo. somente iremos parar de trocar a lâmpada quando colocarmos uma lâmpada que acenda. devemos sempre buscar a forma mais otimizada possível (dentro dos limites impostos pela situação). que passa a trabalhar com as três estruturas básicas de construção de algoritmos.Lógica de Programação Neste algoritmo. seleção e repetição: 2) Descreva os passos necessários para somar dois números e multiplicar o resultado pelo primeiro número.6 Exercícios Sugeridos 1) Crie uma sequência lógica para tomar banho. pois as pessoas pensam de formas diferentes. 2) Descreva com detalhes a sequência lógica para trocar um pneu de um carro. Portanto. a) Solução somente com estrutura sequencial: b) Solução usando estrutura de seleção: c) Solução com as três estruturas – sequência. No entanto. um conjunto de ações será executado repetidamente enquanto a condição de repetição for verdadeira.

2 Ação . Seleção e repetição também são representadas de forma gráfica.Lógica de Programação Unidade 2 .3 Seleção Condição V Ações F Ações 10 .1 Ação . seleção e repetição num algoritmo.1 Diagrama de Nassi-Shneiderman Também conhecido como diagrama de Chapin. dentro dos retângulos Sequência Ação .Diagramas de Fluxo 2. que representam os diferentes blocos de sequência de ações do algoritmo. esta ferramenta de representação oferece grande clareza para a representação de sequenciação. A idéia básica deste diagrama é representar as ações de um algoritmo dentro de um único retângulo. utilizando-se de uma simbologia própria. subdividindo-o em retângulos menores.

Lógica de Programação Repetição Enquanto (cond) faça Ações Ações Repetir até (condição) Exemplo Queremos resolver o seguinte problema: Calcular a média de todos os alunos que cursaram uma disciplina X. devemos anunciar se o aluno foi aprovado ou reprovado por nota. passando por um cálculo de média aritmética. Após a média calculada. Somente estão aprovados os alunos com média maior ou igual à 5.0 V Aluno Aprovado F Aluno Reprovado 11 . a partir da leitura das notas da 1ª e 2ª prova. Enquanto (não for fim da lista de alunos) faça Leia nota1 Leia nota2 Leia nota3 Media = (nota1+nota2)/2 Media >= 5.0.

à medida que os algoritmos vão se tornando mais complexos. o seu grande problema é permitir o desenvolvimento de algoritmos não estruturados.2 Fluxogramas O fluxograma foi utilizado por muito tempo para a representação de algoritmos. mas mesmo assim. O fluxograma utiliza-se de símbolos específicos para a representação de algoritmos. Com o advento das linguagens de programação estruturada o fluxograma caiu em desuso.Lógica de Programação Embora os diagramas N-S ofereçam uma representação muito clara do algoritmo. 2. No entanto. apresentaremos a seguir uma simbologia tradicionalmente usada: Processo Decisão Leitura Escrita Conector Terminal Setas de Fluxo de Controle 12 . prejudicando a sua visualização. Existe uma certa variação na simbologia empregada. fica difícil realizar os desenhos necessários numa única página.

Padrão mundial. Figuras dizem muito mais do que palavras. Desvantagens Pouca atenção aos dados. complete o fluxograma abaixo: Vantagens É uma das ferramentas mais conhecidas.Lógica de Programação Exemplo Com base no exemplo anterior. Complica-se à medida que o algoritmo cresce. 13 . feito com N-S. não oferecendo recursos para descrevêlos ou representá-los.

Lógica de Programação 2. etc. e não há uma rigidez na estruturação das ações. como: português estruturado. ao resultado da média do aluno. PDL (Program Design Language). nota2. senão o aluno está reprovado. pois não se emprega nenhum recurso diagramático. //Algoritmo MediaAluno variaveis numerico nota1. pois obriga o uso de estruturas que facilitem o entendimento do algoritmo.0)entao escreva ("Aluno aprovado") senao escreva ("Aluno reprovado") 14 . maior a dificuldade de entendermos o texto que procura descrever os passos do algoritmo. Um dos ambientes que “entende” o pseudocódigo ou português estruturado é o AMBAP (Ambiente de Aprendizado de Programação desenvolvido pela UFAL – Universidade Federal de Alagoas). Utilizaremos neste curso o pseudocódigo como a forma de representação padrão para algoritmos. Fazer para o próximo aluno. e também facilitam a transformação do mesmo em códigos reais.3 Linguagem Natural A representação de algoritmos através de linguagem natural é a forma mais espontânea de representação de algoritmos. faça: ler as notas da 1ª e 2ª prova. O exemplo anterior será representado através de pseudocódigo. então o aluno está aprovado. 2. chegando assim.4 Pseudocódigo O pseudocódigo vem sendo amplamente utilizado por projetistas de softwares e programadores. Se a média do aluno for maior ou igual a 5. media inicio faca enquanto (não for fim da lista de alunos) leia (nota1) leia (nota2) media = (nota1+nota2)/2 se (media >= 5. escrevendo o algoritmo como um texto simples.0. Representação Para todos os alunos da disciplina X. O pseudocódigo também recebe outros nomes. O problema da representação de algoritmos com linguagem natural é que quanto maior a complexidade do problema. pois descrevemos os passos do algoritmo utilizando o nosso linguajar cotidiano. pascalóide.. somar as notas e dividir por dois.

somos obrigados a utilizar algumas estruturas básicas de controle (sequência.Lógica de Programação fim_se fim_enquanto fim Observe que no pseudocódigo. 15 . de forma a estruturar e organizar melhor os passos do algoritmo. seleção e repetição).

"b" e "h" são dados que irão variar no decorrer do "tempo de execução" do algoritmo.2 Tipos Primitivos de Dados 16 . nota2. Por exemplo. portanto deverão ser tratados como variáveis. pois são através deles que um algoritmo "guarda" os dados do problema. +. como: @.Lógica de Programação Unidade 3 . Sendo assim. *. Variáveis e constantes são. De maneira geral. (exceto o sublinhado). Podem ser seguidos por mais caracteres alfabéticos e/ou numéricos. onde "b" é o valor da base e "h" é o valor da altura do triângulo. nem espaços em branco. Sabemos que a fórmula para o cálculo da área de um triângulo é "b*h / 2". Não é permitido o uso de caracteres especiais. deverá ser definido como tal no algoritmo a ser desenvolvido. deve ser tratado como constante. a1b2c3. devem ser legíveis e de fácil compreensão dentro do contexto. ?. etc. Quando um dado não tem nenhuma possibilidade de variar com o decorrer do tempo. teste. altura1. Exemplos: X. 3. ele deverá ser tratado como uma constante. O número "2" da fórmula é um dado constante e não sofrerá variação no decorrer do algoritmo. Todo dado que tem a possibilidade de ser alterado (portanto. abc213. #. portanto. etc.1 Variáveis e Constantes Variáveis e constantes são conceitos fundamentais para a construção de algoritmos e programas de computadores. x3.Elementos Básicos do Código 3. nomes que identificam os valores tratados no problema. Estes nomes devem seguir algumas normas e regras para poderem funcionar corretamente: Devem começar por um caractere alfabético. e dessa forma definido e tratado como tal no algoritmo. a fim de viabilizar o entendimento para outros programadores. em um algoritmo ou programa. portanto. considere o desenvolvimento de um algoritmo para o seguinte problema: calcular as áreas de cinco triângulos com medidas diferentes. &. sofrer variação) no decorrer do tempo. deverá ser tratado como uma variável do problema e.

antes de tudo. Fazemos a declaração de variáveis obedecendo ao seguinte padrão: //Algoritmo TesteVariaveis variaveis tipo: nome_variavel. na maioria das linguagens de scripts não é necessário declararmos as variáveis. Esse método é muito útil principalmente para códigos muito extensos. Neste curso. ponto flutuante.Lógica de Programação Todo dado a ser tratado num algoritmo deve pertencer a algum tipo. negativo. decimal. em outras bibliografias serão mais detalhistas. letras e caracteres especiais). texto (ou caracter) e lógico1. zero. Lógico: todo e qualquer dado que só pode assumir duas situações – verdadeiro ou falso (biestáveis). etc inicio 1 Na Unidade 14 encontram-se maiores explicações sobre a linguagem PHP. que irá determinar o domínio de seu conteúdo. mas saiba que existem vários outros e que. Os tipos mais comuns de dados são conhecidos como tipos primitivos de dados. são eles: numérico. Texto: todo e qualquer dado composto por um conjunto de caracteres alfanuméricos (números. "listar" todas as variáveis que utilizaremos na construção do programa.3 Declaração de Variáveis Para elaborarmos nossos algoritmos deveremos. usaremos para a construção de nossos exercícios somente estes três tipos. desde que estejam entre aspas. nome2_variavel. Numérico: todos os valores do tipo numérico seja ele positivo. etc. uma vez que. 17 . 3. e na Unidade 15 sobre a linguagem C.

conforme tabela a seguir: Operações Adição Subtração Multiplicação Divisão Potenciação Módulo (resto da divisão) ^ Resto(x. Chamamos de operadores aritméticos o conjunto de símbolos que representa as operações básicas da matemática. ou entre expressões (tanto matemáticas como lógicas). As expressões matemáticas podem fazer uso de operadores aritméticos e relacionais. Usaremos para essa operação a função "resto".Lógica de Programação <desenvolvimento> fim Onde: Tipo pode ser numérico. Quando queremos fazer comparações entre valores. precisamos utilizar esta categoria de operadores. fazem por função da linguagem % % Linguagem PHP Há também um operador aritmético especial para obter o resto de uma divisão inteira. caracter ou lógico. Exemplo: resto(20. 3) = 2. Nome_variavel é o identificador da variável. Um outro grupo importante de operadores é formado pelos operadores relacionais. relacionais e lógicos) Quando construímos algoritmos é comum trabalharmos com expressões matemáticas para a resolução de alguns problemas.y) Operadores Linguagem C + – * / Não possuem um símbolo. Operadores (aritméticos. Os operadores relacionais são: Operações Operadores Linguagem Linguagem C PHP Igualdade Diferença Maior Menor Maior = <> > < ou >= 18 == != .

Uma tabela verdade é o conjunto de todas as possibilidades combinatórias entre os valores das variáveis lógicas. Estes operadores funcionam como conectivos para a formação de novas proposições. Exemplos: a) 2+5 = 3+2  F (falso) b) 3*5 <> 2*3  V (verdadeiro) Uma terceira categoria de operadores que podemos utilizar na construção de algoritmos é chamada de operadores lógicos. temos que conhecer a tabela verdade para cada um dos operadores.Lógica de Programação igual Menor ou <= igual O resultado de uma relação é sempre um valor lógico (verdadeiro ou falso). Os principais operadores lógicos são: Operações Conjunção (e) Disjunção (ou) Negação (não) Operadores E OU NAO Linguagem C && || ! Linguagem PHP Os resultados das operações lógicas são sempre valores lógicos (verdadeiro ou falso). Para trabalharmos adequadamente com operadores lógicos. conforme apresentado a seguir: A F F V V B F V F V AEB F F F V A F B F A OU B F 19 .

lógicas e relacionais. Parênteses mais internos Funções matemáticas ^ * / resto + operadores relacionais não e ou 20 . os operadores e as funções matemáticas possuem uma hierarquia de prioridade.Lógica de Programação F V V V F V V V V A F V Exemplos: a) 3 > 6 OU 4 < 5 F OU V Resultado: V b) 4 < 7 E 5 > 9 V E F Resultado: F NÃO( A) V F Na resolução das expressões aritméticas.

(A>C) AND (C<=D) (A>=C) AND (D>=C) ( ) ( ) (A+B) > 10 OR (A+B) = (C+D) ( ) 21 .5)) < 10 8 < 16 ou abs (-7) 8 < 16 Não( V ) F ou V ou ou V 7 < V < 10 10 Exercícios Sugeridos 1) Sabendo que A=3. C=3 e D=6. informe se as expressões abaixo são verdadeiras ou falsas. B=7 e C=4. informe se as expressões abaixo são verdadeiras ou falsas.Lógica de Programação Exemplo: Não( 2^3 < 4^2) ou abs(int(15/-2)) < 10 Não Não Não 8 < 16 ou abs (int(-7. (A+C) > B ( ) B >= (A+2) ( ) C = (B-C) ( ) (B+A) <= C ( ) (C+A) > B ( ) 2) Sabendo que A=5. B=4.

por exemplo. x = 5.098 Nome := "teste de atribuição" Z := verdadeiro Nas linguagens C e PHP o símbolo de atribuição é =.Lógica de Programação Unidade 4 . A sintaxe utilizada será: Identificador := expressão2 onde identificador é o nome da variável que receberá o valor da expressão.1 Comando de Atribuição O comando de atribuição permite-nos atribuir um valor para uma variável. sendo que tipo do dado atribuído para a variável deve ser compatível com o tipo declarado para a variável. 2 22 . nestas linguagens a igualdade é representada por ==. Exemplo: X := 0 Y := 10 + 7 A := 0.Comandos de Atribuição. Já. Entrada e Saída de Dados 4.

o algoritmo mostrará os valores de variáveis. //Algoritmo Exemplo variaveis numerico x. y. devemos ter uma representação correspondente em nível de algoritmo para a saída de dados. Ler variável Sendo que variável receberá um valor vindo de "fora" do algoritmo para que algum processamento ocorra. Assim.Lógica de Programação 4. Utilizaremos o comando ler para efetuar a entrada de dados para o algoritmo. conforme sintaxe abaixo. 4. Utilizaremos o comando escrever para efetuar a saída de dados do algoritmo.3 Comando de Saída de Dados Além do comando de entrada de dados será muito comum o uso de comandos que proporcionem a saída de dados gerados pelo computador. conforme sintaxe abaixo: Escrever variável.4)/3 Escrever "O resultado foi: ". a. devemos ter uma representação correspondente em nível de algoritmo para a entrada de dados. Assim. res FIM 23 . constantes e/ou expressões. expressão Neste exemplo. constante. será muito comum o uso de comandos que proporcionam a entrada de dados para o computador.2 Comando de Entrada de Dados Na prática de construção de programas. res caracter nome INICIO Escrever "Entre com o primeiro valor:" Ler x Escrever "Entre com o segundo valor:" Ler y Escrever "Entre com o nome da pessoa:" Ler nome a:= x * 3 / y res := (a * 2.

Estruturas de Sequenciação. caso contrário. da mesma forma como elas foram escritas. Utilizaremos a seguinte representação para estruturas de seleção: se (condição) entao comando 1 comando 2 comando 3 . Temos ainda a possibilidade de outras representações mais elaboradas. os comandos somente serão executados se a condição for verdadeira. fim_se No caso acima. Seleção e Repetição 5. o programa continua executando os próximos passos logo após o símbolo de fechamento de chaves.Lógica de Programação Unidade 5 .1 Sequência A estrutura de sequência é a estrutura mais simples que utilizamos na construção de algoritmos estruturados. representada por uma expressão lógica.. Ela é formada por um conjunto de instruções (ou comandos) que serão executadas numa sequência linear de cima para baixo e da esquerda para a direita. conforme abaixo: Exemplo: INICIO Ler a Ler b c := a + b Escrever c FIM 5. como as que seguem: 24 .2 Seleção Uma estrutura de seleção permite a escolha de um conjunto de ações e/ou estruturas que serão executadas a partir do resultado de uma condição (simples ou composta). ou seja. Utilizamos as palavras inicio e fim para delimitar o bloco de sequência..

usando para isso simplesmente papel e lápis para registrar o que teoricamente ocorre em cada passo..Lógica de Programação se (condição) entao comandos .... Caso não haja condições verdadeiras serão executados os comandos definidos dentro do bloco senão. senao se (condição)entao comandos .. senao comandos .. serão executados os comandos apenas de uma das condições e somente se ela for verdadeira.. fim_se ou se (condição) entao comandos . Teste de Mesa É uma simulação da execução de um programa ou plano.. fim_se fim_se fim_se Nesses dois casos descritos acima... senao se (condição) entao comandos . Serve para visualizarmos todas as etapas que o computador realiza durante a execução do algoritmo.. senao comandos .. Exemplo de Algoritmo Receba a nota da prova1 25 .

5) Construa um algoritmo para pagamento de comissão de vendedores de peças. sendo informado o estoque mínimo e o estoque máximo. 4) Desenvolva um algoritmo que leia 4 números. João precisa que você faça um algoritmo que leia a variável P (peso do peixe) e verifique se há 26 . levando em consideração que sua comissão será de 5% do total da venda e que você tem os seguintes dados: preço unitário da peça e quantidade vendida. processamento e saída no algoritmo abaixo. Toda vez que ele traz um peso de peixes maior que o estabelecido pelo regulamento de pesca do Estado (50 quilos) deve pagar uma multa de R$ 4. Receba código da peça Receba valor da peça Receba quantidade de peças Calcule o valor total da peça Mostre o código da peça e seu valor total 2) Faça um algoritmo para calcular o estoque médio de uma peça. 6) João comprou um microcomputador para controlar o rendimento diário de seu trabalho. some todos os resultados e mostre o resultado. converta esse valor para real e mostre o resultado.00 por quilo excedente.Lógica de Programação Receba a nota de prova2 Receba a nota de prova3 Receba a nota da prova4 Some todas as notas e divida o resultado por 4 Mostre o resultado da divisão Faça o teste de mesa: Nota da Prova 1 Nota da Prova 2 Nota da Prova 3 Nota da Prova 4 Utilize a tabela abaixo: Exercícios 1) Identifique os dados de entrada. calcule o quadrado de cada um. leia valores em dólar. 3) Construa um algoritmo que leia a cotação do dólar.

mostre o número original e finalize o programa. calcule o quadrado de cada um e some todos. 10) A Secretaria do Meio Ambiente que controla o índice de poluição mantém três grupos de indústrias que são altamente poluentes do meio ambiente. Quando o número de horas exceder a 50. sendo 100 funcionários teríamos que escrevê-lo 100 vezes. 27 . fazer a repetição de um conjunto de comandos 100 vezes sem ter que reescrevê-lo novamente. calcule o excesso de pagamento armazenando-o na variável E. 11) Elabore um algoritmo que. Neste caso o mesmo cálculo é efetuado para cada um dos funcionários. Faça um algoritmo que leia o índice de poluição medido e emita a notificação adequada aos diferentes grupos de empresas. Para solucionar este problema precisaríamos escrever o algoritmo em questão uma vez para cada funcionário. Por exemplo. classifique-o em uma das seguintes categorias: INFANTIL A: 5 a 7 anos INFANTIL B: 8 a 11 anos JUVENIL A: 12 a 13 anos JUVENIL B: 14 a 17 anos ADULTOS: Maiores de 18 anos. Se o índice sobe para 0. Se houver. 5. O índice de poluição aceitável varia de 0.Lógica de Programação excesso. calcule o salário sabendo-se que ele ganha R$ 10. positivo ou negativo. Após. A hora excedente de trabalho vale R$ 20. No final do processamento mostrar o salário total e o salário excedente.05 até 0. 9) Escreva um algoritmo que leia um número inteiro e mostre uma mensagem dizendo se este número é par ou ímpar.30 as indústrias do 1° grupo são intimadas a suspenderem suas atividades. pode-se citar o caso em que se deseja realizar o mesmo processamento para um conjunto de dados diferentes. respectivamente código e número de horas trabalhadas de um operário. ou seja. dada a idade de um nadador. como a folha de pagamento de uma empresa de 100 funcionários. Se o índice crescer para 0. 7) Elabore um algoritmo que leia as variáveis C e N. 8) Escreva um algoritmo que leia quatro números.00 por hora. mostre o resultado de todos.25. Se o índice atingir 0. gravar na variável E (excesso) e na variável M o valor da multa que João deverá pagar.3 Repetição Laços Condicionais e Contados A estrutura de repetição permite que uma sequência de comandos seja executada um certo número de vezes até que uma determinada condição seja satisfeita. caso contrário zerar tal variável.4 as indústrias do 1° e 2° grupo são intimadas a suspenderem suas atividades. Outro modo de resolver essa questão seria utilizar a mesma sequência de comandos. Caso contrário. mostrar tais variáveis com o conteúdo zero.50 todos os grupos devem ser notificados a paralisarem suas atividades. Se o quadrado do terceiro for maior que mil (1000).00. Caso contrário. ou seja.

Esse tipo de estrutura usa variável de controle. previamente. Repetição com Teste no Início Caracteriza-se por uma estrutura que efetua um teste lógico no início do laço. fim_enquanto Repetição com Teste no Final 28 . Laços Contados Quando se conhece. Se o resultado do teste for verdadeiro o laço é executado retornando novamente ao teste lógico e assim o processo será repetido enquanto a condição testada for verdadeira. As estruturas de repetição que implementam esse tipo de laço usam testes no início e testes no final do laço. Sintaxe: faca enquanto (cond) comando 1 comando 2 .Lógica de Programação A estrutura de repetição é também chamada de laço ou loop e se divide em: Laços Condicionais Quando não se conhece o número de vezes que um conjunto de comandos no interior do laço será repetido.. quantas vezes o conjunto de comandos será executado. A repetição ou não dos comandos dependerá do resultado de uma condição..

No AMBAP é implementada somente repetição teste condicional no início. em várias linguagens de programação existem as duas formas apresentadas. Sintaxe: faca comando 1 comando 2 . se o resultado for falso o laço é executado novamente e este processo é repetido até que o resultado da condição seja verdadeiro. Esse tipo de laço nada mais é que uma estrutura dotada de mecanismos próprios para contar o número de vezes que o laço vai ser executado obedecendo os limites fixados.. porém. Neste caso o laço é executado pelo menos uma vez e então a condição é testada. 3 29 ... A diferença que existe dessa estrutura para a anterior é o fato de ser executada pelo menos uma vez antes de passar pela condição de teste3. enquanto (cond) Repetição com Variável de Controle É utilizada quando se conhece previamente o número de vezes que se deseja executar um determinado conjunto de comandos. por isso constam na apostila. Sintaxe: para variavel de valor_inicio ate valor_final passo incremento comando 1 comando 2 .Lógica de Programação Caracteriza-se por uma estrutura que permite que um laço seja executado até que o resultado do teste lógico seja verdadeiro..

o menor valor e calcule a média dos números lidos. 3) Escreva um algoritmo que leia dois números inteiros (inicial e final) e mostre os números pares desse intervalo. Caso a expressão passo seja omitida. deve mostrar também quantos são e qual é a soma desses números. . incrementada de incremento. executando comando1. o valor padrão 1 é assumido. Além disso.Lógica de Programação proximo onde: variável é inicializada com o valor de valor_inicio e. 4) Construa um algoritmo que leia 500 valores inteiros positivos e encontre o maior valor. até que variável atinja o valor_final. 2) Escreva um algoritmo que leia o nome o sexo a altura e o peso de um grupo de 250 pessoas e informe: Média das alturas das mulheres e o nome do homem mais pesado. Exercícios Sugeridos 1) Escreva um algoritmo que leia as notas finais dos alunos de uma disciplina e calcule a média da turma... subsequentemente. comando2. 30 .

podendo restringir seu uso apenas a vetores homogêneos (em que todos os dados da estrutura tem o mesmo tipo) ou aceitar vetores heterogêneos (em que cada dado pode ser de um tipo diferente). que podem ser referenciados por um mesmo nome e acessados por um índice. val INICIO val := 50 escrever "entre com ". soma FIM Observando o código anterior. val. e em seguida é utilizado no cálculo da variável Soma. " valores" para i de 1 ate val ler vet[ i ] proximo soma:=0 para i de 1 ate val soma = soma + vet[ i ] proximo escrever "a soma foi".1 Vetores Vetores são estruturas de dados que permitem o armazenamento de um conjunto de dados. o uso do vetor é razoavelmente claro. 31 . i.Lógica de Programação Unidade 6 . Também pode ser possível construir vetores multi-dimensionais.Vetores e Matrizes (Arrays) 6. Diferentes linguagens implementam vetores de diferentes formas. No exemplo abaixo observamos um exemplo de um vetor homogêneo unidimensional (o tipo mais utilizado e que deve ser o primeiro que o aluno deve entender e dominar). Exemplo: //Algoritmo Soma_Valores variaveis matriz numerico vet[50] numerico soma. Inicialmente ele é utilizado para armazenar os valores que vão sendo lidos. indexados por mais de um índice.

isto pode não ser possível em exemplos mais complexos. por serem mais comuns. como os sugeridos a seguir. com o cálculo da variável Soma durante a leitura. uma resposta diferente é fornecida pelo sistema. 32 . Uma matriz de 2 dimensões estará sempre fazendo menção a linhas e colunas e será representada por seu nome e tamanho. 2) Faça um algoritmo também baseado no exemplo. exiba todos os números do vetor de forma ordenada. conforme a figura. Porém. A matriz pode ser declarada da seguinte forma: variaveis matriz numerico M[10. uma matriz Tabela[8. em que após a leitura de todos os dados. 6. pergunte ao usuário se ele deseja a multiplicação dos dados lidos. matrizes de 3 ou mais dimensões.10] Exercícios Sugeridos 1) Crie uma novo algoritmo. Trabalharemos somente com matrizes de 2 dimensões. que após terminada a entrada de dados. em algum momento. por se relacionar diretamente com a utilização de tabelas. Dessa forma. mas podem ser necessárias.1 Matrizes A matriz mais comum é a de duas dimensões (linha e coluna).5] indica que tem 8 linhas e 5 colunas.Lógica de Programação Obviamente o exemplo acima poderia ser reproduzido sem o uso de vetores. sua soma ou o cálculo de sua média. com base no algoritmo sobre vetores. Conforme a entrada informada pelo usuário.

Um dos métodos mais utilizados na programação estruturada é o método TOP-DOWN (de cima para baixo) que se caracteriza por: Antes de iniciar a construção do programa. que controlará todas as tarefas distribuídas em subrotinas. Isso facilita a correção. Isso também facilita a manutenção (alterações posteriores necessárias). O método Top-Down pode ser graficamente visualizado conforme a figura: 33 . para que seja compreendido mais facilmente. por exemplo.Lógica de Programação Unidade 7 . somente saber quais são.Subrotinas (procedimentos e funções) 7. O processo de dividir uma subrotina em outras é denominado refinamento sucessivo. Deve-se ter em mente como será o funcionamento do programa principal. Além de facilitar a compreensão do algoritmo. surge a necessidade de dividir um grande problema em problemas menores. Dessa forma.1 Utilização de subrotinas À medida que a complexidade de um algoritmo aumenta. São definidos vários algoritmos. um para cada rotina em separado. se uma rotina para verificar se um número é ou não primo está incorreta. Não é necessário saber como funcionarão. o programador deverá ter em mente as tarefas principais que esse programa deverá executar. para que se tenha uma visão do que será executado em cada módulo de programa. pois. Uma vez definido o programa principal. Rotinas que ficam demasiado complexas podem ainda ser divididas em diversas outras rotinas mais simples. cada parte menor (módulo) tem um algoritmo mais simples. sabe-se exatamente qual é o trecho do programa que deve ser arrumado. detalha-se então as subrotinas. O processo de se programar um computador torna-se bastante simples quando aplicado algum método para utilização das subrotinas. as subrotinas possibilitam que determinados trechos de programas sejam aproveitados em outros programas. e esse trecho menor é chamado de subrotina.

trechos de programas independentes mas que.Lógica de Programação Existem dois tipos de sub-rotinas a serem utilizados na programação. Exemplo: procedimento NomeProcedimento ( lista de parâmetros ) inicio <comandos> fim A lista de parâmetros. ou seja. são todos de entrada e obrigatoriamente há uma e somente uma saída ou retorno para o programa principal. Exemplos: . produz a comunicação de dados entre o procedimento e quem o chamou.. devem ser solicitados pelo programa principal. é que apenas uma informação é retornada ao programa que a chamou. retorno) // 5 é parâmetro de entrada e retorno é parâmetro de saída escrever retorno .01.3 Funções É um caso particular de procedimentos. se existentes... sendo que também pode ter vários parâmetros de entrada..80) // com parâmetros de entrada somente . 7. os parâmetros.24. de saída ou ambos. Algumas linguagens obrigam que a chamada de função nunca seja sozinha. mas sim fazendo parte de um comando de atribuição ou de uma expressão. A diferença porém.. para serem processados.2 Procedimentos São. conhecidos como procedimentos (procedures) e funções (functions). Fatorial (5. As diferenças entre eles são apresentadas a seguir. limpa_tela(01.. 7. como os procedimentos. na realidade. A sua declaração segue o seguinte formato: Funcao NomeFunção ( lista de parâmetros) inicio <comandos> retornar ( parâmetro ) fim Exemplos do uso de funções: variaveis 34 .. O procedimento pode ter de nenhum a vários parâmetros.. definida no cabeçalho do procedimento. limpa_tela // sem nenhum parâmetro .

A variável X presente na rotina 2 não interfere na variável X que está na rotina 1 (são independentes). no final ou ainda em um arquivo separado. 1. As variáveis X e Y não serão visualizadas pelo programa principal. dependendo da linguagem utilizada. A estas peculiaridades Escopo de Variáveis. as rotinas 1. dentro da Rotina 1. a variável A é definida novamente. Nesse caso.1. B) variaveis numerico x inicio x := A + B retornar(x) fim //Programa principal Inicio Ler A Ler B escrever "Soma de A e B:". Uma função pode ainda retornar um valor verdadeiro (v) ou Falso (f).B) Fim As rotinas podem ficar no início de um programa. Soma(A.1 e 2 "enxergam" as variáveis A e B. Dessa forma. denomina-se 35 .B Funcao Soma (A. porém.Lógica de Programação numerico A. o novo valor da variável será válido para a rotina 1.

1 Conteúdo Dinâmico .O servidor procura por este arquivo e o retorna para o navegador. com conteúdo imutável. imagens.Processamento de dados de formulários . ou seja. ou seja. etc. Para isso criou-se as linguagens conhecidas como Server side. a cada clique disparamos o seguinte processo:  1.Conceito A linguagem HTML permite a criação de páginas para a Web contendo texto. linguagens que são processadas no servidor web e nos permitem uma gama de recursos que até então não existiam. Agora veja a diferença quando navegamos por um site com conteúdo dinâmico: 36 . mas uma limitação desta linguagem é que não é possível produzir conteúdo que sofra mudanças de acordo com fatores externos.Conteúdo Dinâmico 8. 2.Utilização de variáveis .Lógica de Programação Unidade 8 .Acesso a bancos de dados Quando navegamos por um site chamado estático.O navegador solicita ao servidor uma página HTML. como por exemplo: .

37 . mantido pela SUN) e o PHP (PHP Hypertext Preprocessor. retorna ao navegador este resultado. formatado em HTML. 2. mantido pelo PHP Group). da Microsoft e o PHP. que processa os comandos contidos neste arquivo. do PHP Group. 8. Após o processamento o interpretador retorna para o servidor Web o resultado deste processamento.2 Linguagens: Entre as linguagens mais populares atualmente no desenvolvimento de sites dinâmicos podemos citar o ASP (Active Server Pages. Resumo: . JSP (Java Server Pages. 3. mantido pela Microsoft). .Lógica de Programação  1. O Servidor então. O navegador solicita ao servidor um arquivo de linguagem server side. 4.As duas principais linguagens utilizadas no desenvolvimento de websites dinâmicos são o ASP.Websites dinâmicos possuem como principal característica páginas que têm conteúdos que podem variar de acordo com fatores externos ao código HTML. O servidor procura por este arquivo e passa para o interpretador desta linguagem.

o que nos leva ao nosso próximo tópico: 9. que embora contendo pequenos bugs. e uma página PHP que fará a mesma coisa. Hoje o PHP se encontra na versão 5 e possui suporte à conexão com os mais diversos bancos de dados. como o Bloco de Notas.. Após a adição de um pacote para tratamento de dados de formulário e outro que dava suporte à conexão com bancos de dados mSQL (miniSQL). que cumprimenta o usuário que está entrando em nosso site. XML. XML. Devido a esta característica..html <html> <head> <title>Teste 1</title> 38 . já era utilizada por milhares de websites.Lógica de Programação Unidade 9 . porém chamando o usuário pelo seu nome. Originalmente a sigla queria dizer Personal Home Page. Este exemplo apenas ilustra a utilização de delimitadores. JavaSript. LDAP. Todo arquivo PHP deve possuir a extensão . 9. utilizada no início da web principalmente para o tratamento de dados de formulários com os famosos “scripts CGI”. geração dinâmica de gráficos. Não se preocupe neste momento com sintaxe e comandos PHP.. etc. A linguagem que mais influenciou o PHP foi à linguagem Perl. Orientação a Objetos. etc. Exemplo 1: index.. Mas não basta que informemos ao servidor web que este arquivo deve ser passado para o interpretador. A primeira versão do PHP utilizada em larga escala foi à versão 3. um arquivo PHP pode ser criado em praticamente qualquer editor disponível no mercado.Linguagem PHP PHP é uma linguagem server side que foi criada originalmente pelo programador Rasmus Lerdorf para utilização em seu site pessoal. É esta extensão que permite ao servidor web “saber” que este arquivo deve ser repassado ao interpretador PHP antes de retornar o resultado para o navegador. um arquivo PHP nada mais é do que um arquivo texto. a linguagem foi disponibilizada para o público e passou a receber contribuições de diversos programadores. desde os mais avançados até os mais simples.1 Como criar um arquivo PHP Por ser uma linguagem interpretada. significado que demonstrava bem que a linguagem ainda dava seus primeiros e despretensiosos passos.). devemos informar ao interpretador que partes deste arquivo devem ser processadas como código PHP.php.2 Delimitando o código PHP Vejamos a diferença de uma página HTML comum. para possibilitar ao servidor web distingui-lo dos demais arquivos (HTML.

<?php echo $usuario. . e por consequência.<% e %> Não recomendável pela possibilidade de confusão com arquivos ASP. ignorado pelo interpretador. o interpretador reconhece como válidas as seguintes alternativas: . 9. que possuem uma tag que inicia exatamente pelos caracteres < e ?. que utilizam exatamente à mesma notação. Tudo o que estiver entre estas duas tags é automaticamente processado pelo interpretador PHP como código. . ?> <body bgcolor=”#FFFFFF”> Olá. ?>! </body> </html> Note que temos dois pares de tags que não são HTML. 9. A não ser que haja um forte motivo para utilizar um dos delimitadores acima. por exemplo. Usuário! </body> </html> Exemplo 2: index. enquanto que o restante é tratado como HTML comum.4 Separadores de instruções Existem duas formas de separar instruções em PHP: 39 .php <html> <head> <title>Teste 1</title> </head> <?php $usuario = „Paulo‟.<? e ?> Não recomendável pela possibilidade de confusão com arquivos XML.3 Delimitadores alternativos Embora as tags de delimitação de código PHP que são utilizadas como padrão pelos programadores sejam as tags <?php e ?>. representados pela tag <?php e a sua tag de fechamento. recomendamos enfaticamente o uso dos delimitadores padrão: <?php e ?>. como JavaScript.Lógica de Programação </head> <body bgcolor=”#FFFFFF”> Olá. ?>.<script language=”php”> e </script> Não recomendável por se tratar da notação padrão para scripts client side (que são executados no lado cliente).

Para delimitar blocos de códigos em Estruturas de Controle (que veremos mais adiante) utilizamos chaves: Exemplo: Delimitando blocos if ($usuario == „Paulo‟) { echo “Olá. $usuario!”. como no exemplo abaixo: Exemplo: Delimitando comandos <?php $usuario = „Paulo‟. 9. $usuario!”. utilizados para grandes descrições ou para anular a execução de uma série de linhas de código. ou blocos comentados: São comentários mais extensos. } Note que o comando que define o bloco de código não é terminado por ponto e vírgula. Para isso utilizamos uma notação semelhante à tags HTML: iniciamos o comentário por uma barra e um asterisco e o finalizamos com um asterisco e uma barra: Exemplo: Bloco comentado <?php /* Este é um comentário em mais de uma linha. */ ?> 40 . ?> . Todo este bloco será ignorado pelo interpretador PHP.Para separar linhas de comandos utilizamos o ponto e vírgula. Comentários são absolutamente ignorados pelo interpretador. ?> Comentários em mais de uma linha.5 Comentários Comentários servem.Comentários de uma linha ou linhas comentadas: São comentários curtos que começam e terminam na mesma linha. principalmente para auxiliar o programador ou à equipe de programadores a se orientar dentro de um código e para ajudar na tarefa de debug de um arquivo PHP. Para comentar uma linha utilizamos duas barras: Exemplo: Comentário de uma linha <?php // Este é um comentário de uma linha.Lógica de Programação . echo “Olá. Existem duas formas de comentários disponíveis em PHP: .

é uma boa prática de programação definirmos o nome de uma constante sempre utilizando apenas caracteres maiúsculos. são estruturas de dados cujo valor é definido apenas uma vez. Utilizamos estruturas de dados para que possamos trabalhar mais de uma vez com o mesmo dado em um programa. „Paulo‟). valor [. /* A partir deste momento a variável usuario troca completamente de valor. // Inicializamos a variável usuario com o valor Paulo $usuario = „João‟. FALSE).Lógica de Programação 9. Em PHP existem três estruturas básicas de dados.Constantes . Constantes são declaradas através do comando define. Veja o exemplo.*/ ?> 9. insensibilidade_à_caixa]). define(nome_da_constante. não podendo ser modificado.6 Estruturas de dados Estruturas de dados podem ser entendidas como “compartimentos” que nos permitem armazenar informações. contendo o valor João. Uma variável é uma estrutura de dado que nos permite guardar apenas um valor por vez.Arrays 9. assim como os arrays em PHP são denominadas pelo sinal de dólar. „Brasil‟. define (Pais. Veja o exemplo: Exemplo: Declarando constantes <?php define (USUARIO. ao contrário das variáveis.Variáveis .7 Variáveis Variáveis são a estrutura de dados mais comumente utilizada. que veremos com mais detalhes a seguir: . ainda utilizando a variável $usuario: Exemplo: Utilizando variáveis <?php $usuario = „Paulo‟. Embora o PHP aceite o nome de constante escrito em caracteres minúsculos. ?> com a seguinte sintaxe: 41 . Variáveis.8 Constantes Constantes.

Assim sendo nosso exemplo de saudação ao usuário. estruturas de dados chamada compostas. etc. utilizamos a seguinte notação: $nome_do_array[indice]. ou seja. devemos utilizar o comando array para indicar que esta estrutura é de fato uma matriz. Por default este parâmetro é TRUE. ao contrário do uso coloquial.9 Arrays Arrays são vetores ou matrizes.Lógica de Programação O parâmetro insensibilidade_à_caixa.. ou seja. toda em caixa alta. Estes dados são acessados através do que chamamos de índice. João. PAIS. Na segunda linha de nosso exemplo. a constante pode ser chamada de qualquer forma – Pais. Veja o exemplo de uma definição de array: Exemplo: Definindo um array <?php $usuarios = array(„Paulo‟. utilizando um array. Como não definimos explicitamente os índices deste array. que tem como parâmetros possíveis TRUE (verdadeiro) ou FALSE (falso) é opcional. „João‟). poderia ser escrito da seguinte forma: Exemplo: Acessando um elemento de um array 42 . Em PHP os arrays são definidos de uma forma mista: ao mesmo tempo em que declaramos o nome do array com o sinal de dólar. É importante notar que. o primeiro elemento de um array ordenado é sempre definido pelo índice zero. pais. eles são automaticamente definidos pelo interpretador de acordo com a ordem dos elementos. PaIs. a constante deve ser chamada sempre se respeitando maiúsculas e minúsculas. Caso queiramos chamar um elemento específico deste array.. – enquanto que na primeira linha o interpretador PHP só reconhecerá a constante se ela for chamada exatamente como foi definida. ?> Neste exemplo definimos um array chamado usuarios contendo dois elementos: Paulo e João. pois têm como característica a possibilidade de armazenar mais de um dado ao mesmo tempo. 9. por exemplo.

arrays cujo índice é explicitamente definido por nós: Exemplo: Declarando um array associativo <?php $usuarios = array( „Paulo‟ => „Paulo da Silva‟. ?> E para chamarmos algum dos elementos deste array utilizamos exatamente à mesma forma mencionada anteriormente: Exemplo: Acessando um elemento de um array associativo <?php echo $usuarios[„Paulo‟].Comentários em PHP são marcados por duas barras quando forem comentários de apenas uma linha ou delimitados por barra e asterisco e asetrisco e barra quando forem comentários em mais de uma linha. pois podem armazenar mais de um dado ao mesmo tempo. .Em PHP possuímos três estruturas básicas de dados: Variáveis.Para delimitarmos comandos em PHP utilizamos o ponto e vírgula. Todas as estruturas de dados em PHP são representadas pelo sinal de dólar. sendo estes últimos chamados de estruturas compostas. . ?>! </body> </html> Podemos também criar o que chamamos de arrays associativos. ?> Resumo: .Lógica de Programação <html> <head> <title>Teste 1</title> </head> <?php $usuarios = array(„Paulo‟. . „João‟). ou seja.Strings ou texto. ?> <body bgcolor=”#FFFFFF”> Olá. „João‟ => „João Paulo da Costa‟). <?php echo $usuarios[1]. . 9.Numéricos – inteiros e de ponto flutuante.10 Tipos de Dados Suportados Existem 3 tipos básicos suportados pelo interpretador PHP: . Strings 43 .Booleanos Veremos a seguir cada um destes tipos com maiores detalhes. enquanto que para blocos de códigos em estruturas de controle usamos as chaves. Constantes e Arrays.

São eles: . ou seja. Veja o seguinte exemplo para uma melhor compreensão das diferenças: Exemplo: Utilização de aspas simples e duplas <?php $var1 = “teste”. por exemplo. ?> A diferença no uso das aspas simples ou duplas está na forma como o interpretador PHP tratará o conteúdo da string. Strings são sempre delimitadas por aspas. Os dois exemplos abaixo são variáveis que contém strings em seu valor: Exemplo: Declarando strings <?php $var1 = „Teste‟. No caso da utilização de aspas simples a interpolação não ocorre. caracteres especiais. que podem ser tanto duplas quanto simples. As aspas duplas também permitem ao interpretador reconhecer caracteres especiais. letras. também conhecidos como float ou double. ?> O primeiro comando echo resultará no texto: Isto é um teste Enquanto que o segundo produzirá como resultado: Isto é um $var1 Numéricos Numéricos são os tipos que representam números. $var2 = „teste‟. echo „Isto é um $var1‟. $var2 = “Teste”. sejam números. etc. como o caractere de nova linha. No caso das aspas duplas poderá ocorrer o que chamamos de interpolação. Este texto pode conter qualquer tipo de caractere. echo “Isto é um $var2”.Inteiros . assim como não ocorre o reconhecimento de caracteres especiais. Tipos numéricos são representados pela ausência de aspas: Exemplo: Declarando variáveis numéricas 44 .De ponto flutuante. acentos.Lógica de Programação Strings podem ser compreendidas como texto. o interpretador PHP automaticamente converterá a variável para seu valor. se uma string contiver uma variável.

O inteiro 0 (zero) . ?> Neste exemplo nossa variável $var1 começa contendo uma string. ?> Booleanos Um tipo booleano é o que representa apenas dois valores possíveis: verdadeiro ou falso. a não ser nos seguintes casos: . $var1 += 5.O float 0. Na segunda linha ela passa a conter um inteiro. Normalmente estes valores são representados pelas palavras reservadas TRUE e FALSE: Exemplo: Declarando uma variável booleana <?php $ativo = TRUE.A string vazia „‟ ou “” . ?> É importante ressaltar que o interpretador PHP sempre considerará um valor como sendo verdadeiro. $var3 = -5. O parâmetro tipo deve conter um destes possíveis valores: 45 . $var2 = 0. PHP procura fazer a conversão de tipos automaticamente.O booleano FALSE .A string “0” ou „0‟ .7.0 .Um array vazio Conversão de tipos A exemplo de outras linguagens web. Exemplo: conversão automática de tipos <?php $var1 = “1”. que possui a seguinte sintaxe: settype(variável. enquanto que a partir da terceira linha seu valor passa a ser um float. tipo).5.Lógica de Programação <?php $var1 = 10. $var1 += 2. Também é possível alterar o tipo de dado de uma variável utilizando-se o comando settype.

Boolean . nosso exemplo de transformação de tipos poderia ser reescrito de forma à não ser necessário modificar o valor da variável: Exemplo: modificando o tipo de uma variável com a função settype <?php $var1 = “1”. Os comandos contidos no bloco delimitado pelas chaves só serão executados no caso da condição ser verdadeira.string Sendo assim.Lógica de Programação . „float‟). „integer‟).float . numérico e booleano.Para realizar a conversão entre tipos efetuamos operações com a variável ou utilizamos o comando settype.Loops Veremos agora cada uma das estruturas com mais detalhes. Exemplo: Utilizando uma condicional if 46 . como o próprio nome já diz. settype($var1.integer . settype($var1.PHP suporta os seguintes tipos básicos: string.11 Estruturas de Controle Estruturas de controle são comandos que nos permitem controlar a forma como nosso programa será executado. Condicionais Estruturas condicionais. Existem dois tipos de estruturas de controle: . 9. São elas: If Sintaxe: if (condição) { comandos } Descrição: O if é a estrutura condicional mais simples. ?> Resumo .Condicionais . são estruturas que impõem uma condição para que um ou mais comandos sejam executados. .

múltiplas condições e o que fazer se a condição for falsa. ainda. quando queremos testar uma gama muito grande de condições.Lógica de Programação if ($usuario == „Paulo‟) { echo “Olá. A instrução default é opcional e diz para o interpretador PHP o que fazer se todas as condições expostas nas instruções case forem falsas. Cada instrução case testa pela igualdade da variável com o valor. Paulo. case valor2: comandos break. Note que a limitação que ocorre com o condicional switch é que apenas a igualdade é testada. } O if suporta. Exemplo: Utilizando uma condicional switch 47 .”. A instrução break é obrigatória entre cases. ou seja. Isto é feito através das condições else if e else: if (condição1) { comandos } else if (condição2) { comandos } else { comandos } Switch sintaxe: switch(variável) { case valor1: comandos break. pois é ela que separa os blocos de instruções que serão executadas dependendo de cada condição. default: comandos } Descrição: O condicional switch é comumente utilizado para evitar instruções if-else if muito longas.

São elas: For sintaxe: for (inicialização_variável. break. testamos uma condição e a incrementamos ou decrementamos para que o loop tenha continuidade. $c < 10. While sintaxe: while(condição) { comandos } 48 . case „João‟: echo “Olá João”. Exemplo: Utilizando um loop for for ($c = 0. $c++) { echo “Esta é a $c ª iteração de nosso loop de exemplo. } Em nosso exemplo teremos 10 iterações em nosso loop (de 0 a 9). break. } Loops (laços de repetição) Loops são estruturas que causam a repetição de uma série de instruções dependendo ou não de uma condição.”. condição_variável.”. default: echo “Usuário desconhecido”.Lógica de Programação switch($usuario) { case „Paulo‟: echo “Olá Paulo. operação) { comandos } Descrição: Um loop for é uma estrutura de controle que causará a repetição de comandos com um número finito de iterações. Para isso criamos uma variável contadora.

} while ($c < 10) Note que se tivéssemos inicializado a nossa variável contadora com o valor 1 e testássemos à condição $c < 1 ainda assim teríamos uma execução do loop. Se esta linha estivesse fora do bloco a ser executado pelo loop também teríamos um loop infinito. } Note que para reproduzir o comportamento de nosso loop for com um loop while precisamos incluir duas instruções explícitas: Na primeira linha inicializamos nossa variável com o valor zero.). portanto. pois a cada iteração a variável seria reinicializada com o valor zero e. do-while sintaxe: do { comandos } while (condição) Descrição: O loop do-while é extremamente parecido com o loop while. já que a condição é testada apenas no final da primeira iteração. 49 . do { echo “Esta é a $c ª iteração de nosso loop de teste. mas possui uma diferença importantíssima: o bloco de comandos será executado sempre pelo menos uma vez. pois o incremento jamais aconteceria e a variável seria sempre menor do que 10. while ($c < 10) { echo “Esta é a $c ª iteração de nosso loop de teste. $c++. Exemplo: Utilizando um loop do-while $c = 0. seria sempre menor do que 10.”.Lógica de Programação Descrição: Um loop while é executado quantas vezes forem necessárias até que a condição especificada seja satisfeita (seja verdadeira). pois a condição só começa a ser testada após a primeira iteração. Se esta linha estivesse dentro do bloco a ser executado pelo loop teríamos o que chamamos de loop infinito. Exemplo: Utilizando um loop while $c = 0. Na última linha de nosso bloco de instruções incrementamos a variável (o equivalente à operação $c = $c + 1. $c++.”.

} Note que esta forma de percorrer um array. arg3]) { Comandos. Funções (subrotinas) A sintaxe básica para definir uma função é: function nome_da_função([arg1. arg2. } 50 .”<BR>”.$usuarios[$c]. . ou seja. $c < count($usuarios). Obtendo-se o número de elementos de um array temos condições de percorrer um array com um loop for: Exemplo: percorrendo um array com um loop for for ($c = 0. sendo o array multidimensional ou não. [return <valor de retorno>].Lógica de Programação Arrays (vetores e matrizes) Para sabermos quantos elementos existem em um array utilizamos à função count: count (array [. 0 (zero) – É o modo default. . ao contrário do loop foreach.. Exemplo: Retornando o número de elementos em um array $numero_usuarios = count ($usuarios). “. só funcionará com arrays de índices numéricos. O parâmetro modo é opcional e pode conter um dos seguintes valores: 1 ou COUNT_RECURSIVE – Conta recursivamente o número de elementos em um array multidimensional. modo]).. $c++) { echo “Olá. faz a contagem de forma não-recursiva.

utiliza-se o seguinte formato de declaração de função: tipo function nome_da_funcao(tipo arg1. Para efeito de documentação. o tipo de retorno não deve ser declarado. sendo necessário que o programador esteja atento para que a função retorne o tipo desejado.. pois se não for passado o tipo esperado não é emitido nenhum alerta pelo interpretador PHP. já que este não testa os tipos. Isso significa que em muitos casos o programador deve estar atento ao tipos dos valores passados como parâmetros.Lógica de Programação Qualquer código PHP válido pode estar contido no interior de uma função. . Como a checagem de tipos em PHP é dinâmica. É recomendável que esteja tudo bem documentado para facilitar a leitura e compreensão do código. pois o PHP não aceita a declaração de tipos..). tipo arg2. 51 . Este formato só deve ser utilizado na documentação do script.

Os comentários devem ser delimitados por /* no início e */ no final. Sintaxe básica: 52 . Linguagem estruturada. baseada na linguagem B de Thompson que era uma evolução da antiga linguagem BCPL. uma das quais precisa ser denomindada main. Definições de funções adicionais podem preceder ou suceder a função main. mas temos por conveniência manter a legibilidade. entre outras. As principais características da linguagem C são:  A união de conceitos de linguagem de montagem e programação de alto nível (o programador usufrui recursos de hardware sem a necessidade de conhecer o assembly da máquina). O programa sempre começará executando a função main. Ritchie e Ken Thompsom no laboratório Bell em 1972. Existem versões orientadas a objeto e visuais como C++ e C++ Builder. Linguagem compilada. Podem ser usados também os caracteres // para comentários de uma linha. Os comandos são executados na ordem em que foram escritos. As linhas de código são sempre encerradas por um “. A linguagem ficou contida nos laboratórios até o final da década de 70.1 Estrutura básica de um programa em C Um programa em C consiste em uma ou várias funções. Possui poucos comandos.      10. Todo programa deverá conter a função main. A formatação dos programas é completamente livre.Lógica de Programação Unidade 10 - Linguagem C A linguagem C foi primeiramente criada por Dennis M. momento que começou a popularização do sistema operacional UNIX e consequentemente o C (o UNIX é desenvolvido em C). Para escrever um programa em linguagem C é necessário seguir algumas regras gerais:        Toda função deve ser iniciada por uma chave de abertura { e encerrada por uma chave de fechamento }. Toda função é sucedida de parêntesis ( ). Não possui crítica eficiente para erros de execução. (ponto-e-vírgula)” . Uma linguagem em constante evolução.

2 Comando if O comando if instrui o computador a tomar uma decisão simples. //declaração da função processa void main (void) // função principal main { float raio. // comando para limpar a tela printf(“Raio: “).. area. return(a). } Tipo função (lista de argumentos) { Declaração das variáveis locais à função . } 10. scanf(“%f”.h> float processa(float r)... //declaração de variáveis locais a=3. Se o valor entre parênteses da expressão de controle for verdadeiro ele executa as instruções. getche(). as instruções serão ignoradas. Exemplo: if (x%2) 53 . printf(“Area: %f”.Lógica de Programação /* Os comentários podem ser colocados em qualquer parte do programa */ Declaração de variáveis globais void main (void) { Declaração de variáveis locais . &raio). caso seja falso. //delcaração de variáveis locais clrscr ()... Comandos.1415*r*r.. . . O comando if encadeado e o comando switch possuem a mesma sintaxe da linguagem PhP.. } Exemplo de um programa em C: #include <stdio. área)..h> #include <conio. } float processa (float r) //implementação da função processa { float a. Comandos. area = processa(raio). ou executadas as que estão contidas no bloco do else.

3 Estruturas de repetição Comando for: for (inicialização. total = %i”. total). conta++ } Comando do. } Exemplo: while (conta < 10) { total = total + conta. 10. a). Exemplo: do { y--. conta. } Comando While sintaxe: while (expressão teste) { comandos. } while (expressão teste). } Exemplo: for (a=1.while: do { comandos. a<100. else printf (“x é par “).4 Arrays (vetores e matrizes) 54 ..Lógica de Programação printf (“x é impar”). } while (y). a++) { printf(“\n %i”. teste. x++. incremento) { comandos. printf(“conta = %i. 10.

55 . } O tipo de uma função é determinado pelo tipo de valor que ela retorna pelo comando return e não pelo tipo de seus argumentos. Declaração: tipo variavel [tamanho]. cabe ao programador verificar o correto dimensionamento. Declaração tipo nome_função (declaração dos parâmetros) void main(void) { a=nome_função(lista dos parâmetros). A linguagem C não valida limites dos vetores. return (valor). //vetor tipo variavel [tamanho] [tamanho]. os vetores bidimensionais são chamados de matrizes.Lógica de Programação Um vetor ou matriz é um tipo de dado usado para representar uma certa quantidade de valores homogêneos. Vetores possuem uma ou mais dimensões. deve-se declarar a função. //matriz 10. O primeiro índice é o zero. A declaração de uma função é chamada de protótipo e é uma instrução geralmente colocada no início do programa que estabelece o tipo da função e os argumentos que ela recebe. como convenção. A função recebe um certo número de parâmetros e retorna apenas um valor. Da mesma maneira que são declaradas as variáveis. } tipo nome_função(lista dos parâmetros) { declaração das variáveis locais comandos.5 Funções (subrotinas) Uma função é uma unidade de código de programa autônoma desenhada para cumprir uma tarefa particular.

não davam mais suporte às necessidades. caracterizou-se principalmente por um motivo: complexidade. como o C ou Pascal. O desenvolvimento orientado a objetos impõe (implicitamente) uma disciplina que diminui. de manutenção. como na visão estruturada. combinadas à estrutura de linguagens imperativas. O modelo de desenvolvimento de sistemas da época já não atendia à demanda e não conseguia suprir. Um programa será então um grande objeto composto de outros objetos formando assim o que se chama de mecanismo. E estas últimas se responsabilizaram pela existência da maioria dos grandes softwares produzidos nos dias atuais em todo o mundo. pois a complexidade dos sistemas já havia chegado a tal ponto que nem os programadores conseguiam dominá-la mais.  Tempo de vida do software curto. tudo é objeto. tenha sido a principal causa do surgimento da Orientação a Objetos. Isto se deve ao fato de que aqui a ênfase é em objetos e classes. de forma adequada. Ou ao mínimo.  Grande dificuldade de manutenção. bem como o próprio paradigma. Esse nome foi dado porque. o qual define um contexto de negócio e seus respectivos cenários. principalmente. são complicados de serem resolvidos pela programação estruturada. possivelmente. tais como:  Falta de produtividade das equipes. Toda essa situação acabou levando os profissionais da época a buscar uma solução alternativa.  Atraso na entrega do software ao usuário. usaram para batizar este novo paradigma. que surgem as linguagens orientadas a objetos. que muitas vezes. são facilmente solucionados pela orientação a objetos.  Custos elevados de desenvolvimento e. Problemas. na década de 70. a grande maioria dos esforços inúteis provenientes da programação estruturada e/ou técnicas baseadas em banco de dados. todas as necessidades e/ou tarefas que envolviam a construção de um sistema de informação. um mesmo mundo.1 Conceitos básicos 56 . Sabia-se que as linguagens estruturadas. se não todos. Na Orientação a Objetos não existe um conceito de sistema. ocorrida entre as décadas de 1960 e 1970. A Crise do Software. e não em sistemas e subsistemas.Lógica de Programação Unidade 11 - Fundamentos Orientação a Objetos Orientação a Objetos é o nome que os pesquisadores da computação. 11. O paradigma da Orientação a Objetos (OO) busca bases filosóficas para tentar traduzir um mundo mais humano às instruções que o processador realmente entende. Essa forma de trabalho acarretava diversos problemas. e esta. de acordo com a visão de mundo desses pesquisadores.  Falta de qualidade e confiabilidade do software. E são de viagens deste tipo. se pretende que seja. Um paradigma é uma maneira diferente de se tentar enxergar uma mesma coisa.

Lógica de Programação

Para compreender a essência da Orientação a Objetos é necessário conhecer e entender alguns conceitos. Alguns deles foram herdados do paradigma estruturado e receberam um enfoque um pouco diferente de sua aplicação. Para analisar problemas complexos, a metodologia de orientação a objetos utiliza os seguintes métodos:  Abstração;  Hierarquização;  Encapsulamento;  Modularização;  Classificação;  Relacionamento. Abstração Abstração é a habilidade de ignorar os aspectos não relevantes de um assunto para o propósito em questão, tornando possível uma concentração maior nos assuntos principais. Quando se quer diminuir a complexidade, seleciona-se parte do que está sendo analisado, em vez de tentar compreender o todo. Selecionados os objetos, é necessário definir os procedimentos desses objetos, ou seja, definir o comportamento de cada objeto selecionado. Isto vem de acordo com o escopo do sistema. Só serão definidos os procedimentos que ajudarão a resolver o problema pelo qual o sistema está sendo criado. Definir procedimentos errados pode significar que o escopo do sistema e seus objetivos não foram bem entendidos e atendidos. Abstrações permitem gerenciar a complexidade e concentrar a atenção nas características essenciais de um objeto. Uma abstração é dependente da perspectiva: o que é importante em um contexto pode não ser importante em outro. Levando em consideração essa definição, pode-se afirmar que o Princípio da Abstração é aplicado em todos os demais Princípios da Orientação a Objetos. Hierarquização Após dividir uma forma complexa em várias partes, é comum a hierarquização destas partes, ou seja, ordenação e organização delas. Essa organização, normalmente, parte do mais geral para o mais específico. É o que se chama de hierarquização. Por exemplo, a figura projeta uma hierarquia com a percepção do tipo de objeto Pessoa no nível mais alto, o que significa que Pessoa é um tipo mais geral de objeto que Empregado e que Estudante. Empregado e Estudante são subtipos de Pessoa, ou, da forma reversa, Pessoa é um supertipo de Empregado e de Estudante. Todavia, hierarquizar um todo não significa priorizar determinada parte.

57

Lógica de Programação

O nível de detalhe do exercício da hierarquização depende única e exclusivamente do observador. A hierarquização de um sistema dá origem, normalmente, a poucos subsistemas, porque estes utilizam elementos comuns. Por exemplo, no microcomputador, o elemento memória é utilizado por todos os componentes: CPU, teclado e vídeo. Outro fato a se considerar para o nível de detalhamento da hierarquização é o objetivo e contexto do negócio, ou seja, para um bom entendimento do problema e, consequentemente, a criação de uma solução adequada a ele, é importante não perder o foco do objetivo que se deseja e o contexto do negócio ao qual se está trabalhando. Isso ajuda a delimitar o nível de detalhe do trabalho de hierarquização. Encapsulamento Encapsulamento é um mecanismo que utilizamos para esconder detalhes de estruturas complexas, que de outra forma iriam interferir na análise. O objetivo do encapsulamento é restringir ou definir o escopo da informação, para obter legibilidade, manutenibilidade e principalmente reutilizabilidade no desenvolvimento de sistemas. O encapsulamento protege os dados de um objeto contra corrupção. Se todos os programas pudessem acessar os dados de qualquer maneira que os usuários desejassem, os dados poderiam se facilmente adulterados ou usados para fins indevidos. O encapsulamento protege os dados contra utilização arbitrária e que fujam aos objetivos. O encapsulamento esconde, dos usuários de um objeto, os detalhes da implementação interna. Os usuários compreendem quais operações podem ser solicitadas de um objeto, mas não conhecem os detalhes de como a operação é executada. Todas as características específicas dos dados de um objeto e a codificação de suas operações ficam escondidas. Classificação Classificar é associar o objeto analisado a uma determinada categoria. Cada categoria possui características próprias. Ao se comparar as características do objeto analisado com as características daquela categoria, é que se pode dizer se um objeto pode ser ou não classificado como pertencente àquela categoria, definindo-se assim um tipo de objeto. Um tipo de objeto é uma categoria de objeto.

58

Lógica de Programação

Os tipos de objeto são importantes porque eles criam os elementos conceituais básicos para se projetar os sistemas. Na programação baseada em objetos, esses elementos básicos orientam o projetista na definição de classes e suas estruturas. Além disso, os tipos de objeto fornecem os índices para a operação do sistema. Por exemplo, operações tais como Contratar, Promover e Demitir estão intimamente ligadas ao tipo de objeto Empregado, porque elas alteram o estado de um empregado. Em outras palavras, um objeto só deve ser manipulado via operações associadas ao seu tipo. Sem tipos de objeto, portanto, as operações não podem ser definidas adequadamente. Modularização Modularizar é juntar partes com algumas semelhanças. Para melhor entendermos um sistema complexo, juntamos categorias com algumas características comuns em módulos. Este conceito é bem empregado na fase de projeto do software. É através da aplicação dele que conseguimos organizar melhor os componentes de sistema, auxiliando no entendimento da construção, da manutenção e, muitas vezes, na implantação do software. Relacionamento Para o funcionamento do todo, é necessário que as partes funcionem separadamente, mas em conjunto. Este funcionamento em conjunto (cooperação) é possível porque as partes se relacionam entre si. O relacionamento entre os objetos é feito através de mensagens, passadas de uma parte para outra. Uma empresa, por exemplo, é composta de diversos departamentos, funcionando autonomamente. Mas, para que a empresa como um todo atinja seu objetivo (ou seja, lucre), é necessário um relacionamento entre estes departamentos, para que funcionem em conjunto. Este relacionamento é possível através da troca de mensagens entre os integrantes dos departamentos. No paradigma da Orientação a Objetos, as mensagens trocadas entre os objetos podem ser entendidas como solicitações. Essa solicitação faz com que uma determinada operação seja ativada. A operação executa o método adequado e, opcionalmente, devolve uma resposta. A mensagem que constitui a solicitação contém o nome do objeto, o nome da operação e, às vezes, um grupo de parâmetros. Dessa forma, é possível realizar uma modelagem que espelha, o mais fiel possível, a realidade. Afinal, empresas, departamentos, setores e pessoas relacionam-se através de mensagens enviadas uns aos outros, ou seja, através de solicitações. Objetos podem ser muito complexos, porque objetos podem ser feitos de outros objetos, que, por sua vez, podem ser feitos de outros objetos, e assim por diante. O usuário de um objeto não precisa tomar conhecimento de sua complexidade interna, apenas precisa saber como se comunicar com ele e como ele reage.

11.2 Classe
O termo classe se refere à implementação, no software, do tipo de objeto. Tipo de objeto é uma noção conceitual. Ele especifica uma família de objetos, sem estipular como eles são implementados. Os tipos de objeto são identificados durante as fases de Levantamento de Requisito e Análise. Os detalhes das classes são determinados na Análise e no Projeto. Uma classe é uma implementação de um tipo de objeto. Ela tem uma estrutura de dados e métodos que especificam as operações que podem ser feitas com aquela estrutura de dados. 59

que está em outro objeto. o conceito de generalização é visto como herança.Lógica de Programação 11. solicitando o cancelamento de sua matrícula. então. de modo a formar uma classe mais abrangente. Agregação Agregar significa juntar. mas em compensação. Polimorfismo 60 . Por exemplo: um objeto da classe Nota Fiscal faz referência a objetos do tipo Produto. seu Currículo deve ser excluído junto. Generalização/Especialização Especialização é quando.3 Colaboração Os objetos colaboram entre si. este deve pedir para ele enviando uma mensagem. com novos atributos ou serviços que a tornam mais restrita. Podemos. ou seja. identificar basicamente dois tipos de herança: herança de INTERFACE e de IMPLEMENTAÇÃO. mas se ela for excluída os produtos não precisam ser excluídos de seu cadastro original. entre outras coisas. serviços e atributos uma só vez. dizemos que agregação é o ato de agregar duas ou mais classes para formar uma nova classe. por exemplo. Por exemplo: um objeto da classe Aluno. Podemos especializar a classe Cliente em Pessoa Física e Pessoa Jurídica. O Currículo de um Aluno é algo pessoal e intransferível. diz-se que se herda a interface da classe. grudar. veremos os tipos de colaboração que podem existir entre objetos. Referência: quando o todo somente faz referência às partes. colar. Herdar a implementação significa que instâncias da classe especializada terão parte de seus estados definidos e também controlados pela classe mais geral. criamos uma outra. Esse princípio permite representar membros comuns. Dessa forma. de uma lista de produtos. onde podemos identificar um relacionamento do tipo Todo-Parte. Esse relacionamento (todo-parte) pode ser visto de duas formas: Composição: quando o todo não existe sem as partes. as operações definidas na classe mais geral também se aplicam à classe especializada. Generalização é a operação inversa. o que permite reaproveitamento de código. para uma universidade. não pode cancelar sua própria matrícula. todos os métodos declarados. não existe sem seu Currículo. ou seja. ou seja. Se um Aluno for excluído. A seguir. Em programação. dada uma determinada classe ou categoria. Permite a reutilização de especificações comuns. É importante entender que generalização é o mecanismo para expressar a similaridade entre classes. é a remoção de uma ou mais características de determinada classe. Esta disponibilização de funcionalidades se dá através de troca de mensagens entre os objetos. Ele deve enviar uma mensagem ao objeto Setor de Matrículas. Se um objeto precisa de uma informação que não é sua. Por exemplo: uma empresa possui o seu cadastro de Clientes. Herdar uma interface significa assumir o compromisso de oferecer as operações definidas pela interface. a fim de disponibilizar as funcionalidades requeridas pelo sistema. A Nota Fiscal é composta. Neste contexto. Um objeto Aluno.

Estão listados a seguir os principais ganhos para o desenvolvedor.4 Benefícios da Orientação a Objetos A programação orientada encapsula dados (atributos) e métodos (comportamentos) em objetos.. graduação. fazer a mesma coisa de várias formas ou de forma diferente (poli = muito. Contudo. A questão anterior na verdade que saber se é possível criar uma operação que mude seu código em tempo de execução.Lógica de Programação Muito provavelmente em alguns dos primeiros programas estruturados que criamos nos deparamos com uma pequena dúvida: “. maior a capacidade do programa em causar o menor dano possível aos dados e evitar uma saída drástica do sistema. E para a matrícula em um curso de graduação precisa-se somente do RG da pessoa e do código da disciplina que ela deseja cursar. para o Setor de Matrículas. caso este troque a Metodologia Tradicional pela Orientada ao Objeto: Exatidão – Devido à característica do desenvolvimento estruturado. o desenvolvimento pode ser feito de maneira quase que interativa com o usuário. morfismo = formas). Já para a matrícula de um curso de especialização é necessário o RG e a identificação do curso que a pessoa deseja seguir. Potencialidade – Definimos como potencialidade. a forma com que sua matrícula vai se realizar vai depender do nível de ensino do curso em que ele quer se matricular: extensão. dando maior flexibilidade ao sistema. Somente com o polimorfismo é que se pode realizar a mesma ação – no caso aqui se trata da ação de Matricular – de várias formas distintas. os dados e os métodos de um objeto estão intimamente associados entre si.. etc. a forma como o programa reage aos erros imprevistos tais como uma falha na impressora. ou um disco cheio. No desenvolvimento OOP. Esse tipo de questionamento é o princípio do polimorfismo. Por exemplo: Levando em consideração o desenho abaixo – Um Aluno comunica-se com o Setor de Matrículas – podemos entender que um Aluno pode solicitar a realização de sua matrícula. 11.será que eu poderia criar um procedimento em que o número de parâmetros modificasse em tempo de execução?”. Quanto maior for a potencialidade. especialização. A pouca quantidade de código programável também reduz os problemas inerentes às mudanças das especificações durante o desenvolvimento do projeto. A grande vantagem de serem permitidas implementações de polimorfismo é a flexibilidade. Ou seja. em um determinado curso ou disciplinas. onde se elabora um projeto e DEPOIS se faz os programas. Para a matrícula em um curso de extensão necessita-se somente do nome e do RG da pessoa. podemos ter no final um sistema que não atenda perfeitamente seus objetivos depois de implementado. 61 . o que faz com que este risco caia significativamente.

maior será sua capacidade em adequar-se as especificações definidas pelos analistas. a maioria dos programadores profissionais já reutiliza códigos criados. Descrever os métodos de uma classe Pessoa. 62 . Exercícios Descrever os atributos de uma classe Pessoa. De fato. porém a perfeita reutilização consiste na utilização COMPLETA de um código gerado para algum sistema SEM qualquer outra adaptação prévia. Descrever os atributos de uma classe ContaCorrente. Reutilização – A capacidade de se otimizar a produtividade do programador depende diretamente da maneira como o software disponibiliza a reutilização do código gerado. Descrever os métodos de uma classe ContaCorrente. Descrever os atributos de uma classe Carro.Lógica de Programação Extensibilidade – Dizemos que quanto maior for a extensibilidade do software. Descrever os métodos de uma classe Carro.

4OP2*OP3 e mostrar os valores lidos e o resultado. 9. 10. 7. num domínio real. Escreva um algoritmo para ler dois inteiros (variáveis OP1 e OP2) e efetuar as operações de adição. segundo a função y(x)=3x+2. 63 . OP2 e OP3. Faça um algoritmo que leia três notas de um aluno e calcule e escreva a média final deste aluno. Escreva um algoritmo para calcular a área de um triângulo. Calcule a média aritmética dos resultados obtidos. Escreva um algoritmo para ler três números quaisquer e calcular a média aritmética entre eles. Escreva um algoritmo para calcular a média de quatro números inteiros e exibir o resultado final. 8.y)=2x+3y2. fornecida a distância total percorrida e o volume do combustível consumido para percorrê-la (medido em litros). num domínio real. Após.Lógica de Programação Unidade 12 1. 15. 11. final. dividir o primeiro pelo segundo. 6. Escrever os valores lidos. 16. Escreva um algoritmo para ler dois inteiros (variáveis OP1 e OP2) e imprimir o resultado do quadrado da diferença do primeiro valor pelo segundo. Multiplicar o primeiro por 4 e o segundo por 6. Escrever os números lidos e a média calculada. exibindo o resultado 3. 3 e 5. 14. os calculados e a média aritmética. 13. Escreva um algoritmo para calcular e escrever o consumo médio de um automóvel (medido em Km/l). Escreva um algoritmo para ler dois números. Escreva um algoritmo para efetuar a leitura de um número inteiro e apresentar o resultado do quadrado deste número. multiplicação e divisão de OP1 por OP2 apresentando ao final os quatro resultados obtidos. Escreva um algoritmo para ler dois números quaisquer. Escreva um algoritmo para calcular a função f(x. Exercícios de Fixação Escreva um algoritmo para calcular a média entre dois números quaisquer. calcular o valor de RESULTADO segundo a expressão: 12. Mostrar os números lidos e o resultado calculado. respectivamente. RESULTADO = OP1^2 . Considerar que a média é ponderada e que os pesos das notas são 2. Escreva um algoritmo para ler dois números quaisquer. calcular a soma deles e após mostrar os números lidos e o resultado da soma precedido da palavra "Resultado:". Escreva um algoritmo para ler os seguintes números: OP1. 2. Escreva um algoritmo para calcular o valor de y como função de x. 4. 5. subtração.

. calcular e imprimir o perímetro da circunferência. isósceles ou escaleno. B. B.. sabendo-se que a primeira avaliação tem peso 2. Em primeiro lugar. mostrando a mensagem “APROVADO” caso a nota final seja maior ou superior a 7.. Uma loja fornece 5% de desconto para funcionários e 10% de desconto para clientes especiais. 18. se for. C... caso a nota final esteja no intervalo [0.. Atenção para a divisão por 0! “+” “-” “*” “/” operação de soma operação de subtração operação de multiplicação operação de divisão 21... clientes. Informar também se o aluno foi aprovado. utilizando seleção encadeada (ou aninhada). Coloque-os em ordem crescente. verifique se podem ser valores de lados um triângulo e. 20 reais. Faça um programa que calcule o valor total a ser pago por uma pessoa. Faça um algoritmo que leia 2 valores numéricos e um símbolo.... FOI . Faça um programa que lê dois valores. Se o valor lido for 2. C.Lógica de Programação 17. O programa deverá informar: a) o valor total pago pelos 5 b) o valor da compra média c) nome dos clientes que efetuaram compras superiores a d) o número de clientes que efetuaram compras inferiores a 50 reais. determine se o triângulo é equilátero. 25.. Sejam 3 números distintos A. Caso o símbolo seja um dos relacionados abaixo efetue a operação correspondente com os valores.. efetuada. 7) REPROVADO . 64 .. Modifique o algoritmo da média do aluno para informar: APROVADO . Ao final do algoritmo deve ser mostrado o salário bruto e o salário líquido do professor.. devese estabelecer qual será o seu salário bruto para efetuar o desconto e ter o valor do salário líquido..... Caso o primeiro valor lido seja igual a 1.. O programa deverá ler o valor total da compra efetuada e um código que identifique se o comprador é um cliente comum ou um dos dois tipos de clientes que recebem desconto. 22.. Faça um algoritmo que calcule a média ponderada de um aluno. a partir de suas 3 notas obtidas no curso.. caso a nota final esteja no intervalo [10. Construa um programa que receba os nomes de 5 clientes de uma loja e o valor (em reais) que cada um destes clientes pagou por sua compra. E se o valor lido for diferente destes dois valores.... a segunda tem peso 4 e a terceira tem peso 4. 5) 20.. ao final. a mensagem : “A MEDIA FINAL DE . Dados 3 valores A. 24. calcular e imprimir a área desta circunferência...0. Mostre. 19.” . Para fazer este programa você deverá possuir alguns dados. caso a nota final esteja no intervalo [5. tais como: valor da hora aula. 7] RECUPERAÇÃO. o primeiro servindo de indicador de operação e o segundo correspondendo ao raio de uma circunferência. 23. número de aulas dadas no mês e percentual de desconto do INSS. imprimir uma mensagem dizendo que o indicador de operação foi mal fornecido. Escreva um algoritmo que efetue e cálculo do salário líquido de um professor..

+ 1/n O algoritmo deve escrever cada termo gerado e o valor final de S. O índice de poluição aceitável varia de 0. soma: Escreva um algoritmo que lê um valor n inteiro e positivo e que calcula a seguinte S := 1 + 1/2 + 1/3 + 1/4 + . 32. as do 1º e do 2º grupos são intimadas a suspenderem suas atividades. O departamento que controla o índice de poluição do meio ambiente fiscaliza 3 grupos de indústrias que são altamente poluidoras do meio ambiente.conceito A e e a 7 9 3 conceito conceito conceito E C B 30. referentes ao pagamento parcelado. 27. EX = 1 + 1 / 1! + 1 / 2! + 1 / 3! + 1 / N! 65 . se o índice sobe para 0. 29. a1 (o primeiro termo da progressão) e r (a razão da progressão) e escreva os n termos desta progressão.Lógica de Programação 26. A partir do preço à vista de um determinado produto. escrever os três valores A. Escreva um programa que lê o índice de poluição medido e emite a notificação adequada aos diferentes grupos de empresas.25. o acréscimo é de 20%. 31.conceito D notas 6 notas 8 nota 10 . dar uma mensagem indicando isto. 28. Escreva um algoritmo que leia um valor N inteiro e positivo e que calcule e escreva o valor de EX. B.3 as indústrias do 1º grupo são intimadas a suspenderem suas atividades. e se o índice sobe para 0.. dada a sua nota. escrever os três valores A.5. e C são quaisquer valores reais. Faça um programa que lê 4 valores I. escrever os três valores A. mostre uma tabela contendo o valor lido e o fatorial deste valor. Escreva um algoritmo que leia um número n que indica quantos valores devem ser lidos a seguir. b) se I = 2. B e C onde I é um número inteiro e positivo e A. Fazer um programa para imprimir o conceito de um aluno. Se o índice sobe para 0. Supor notas inteiras somente. bem como a soma dos elementos. Elabore um algoritmo que verifique se um dado número inteiro positivo é PAR ou ÍMPAR.05 até 0. A. 33. d) se I não for um dos três valores acima. O critério para conceitos é o seguinte: nota inferiores nota de 3 a 5 . O programa deve escrever os valores lidos e: a) se I = 1. calcular o preço total a pagar e o valor da prestação mensal. Se o pagamento for parcelado em três vezes deverá ser dado um acréscimo de 10% no total a ser pago. Se for parcelado em 5 vezes. Para cada número lido. B. Escreva um algoritmo que leia um número n (número de termos de uma progressão aritmética). 34. B e C em ordem decrescente. B e C em ordem crescente. todos os três grupos devem ser notificados a paralisarem suas atividades. c) se I = 3..4. e C de forma que o maior valor fique entre os outros dois.

38.0 a 10. contém o valor da idade igual a zero.. Construa um algoritmo que permita fazer um levantamento do estoque de vinhos de uma adega.9 de 5. que leia o número imaginado e os chutes. iii. que não entrará nos cálculos. 39. Sul. A última linha. Elabore um algoritmo dentro desse contexto. Foi feita uma estatística nas 20 principais cidades brasileiras para coletar dados sobre acidentes de trânsito.9 de 9. pertencem ii. 66 qual a média de veículos nas cidades brasileiras qual a média de acidentes com vítimas entre as cidades do Rio Grande do código da cidade estado (RS.0 a 8. forneceu o sexo do entrevistado e sua resposta (sim ou não). encerrando. ao final mostre quantas tentativas foram necessárias para descobrir o número. d. Como dica.. na qual um pensa um número e o outro deve fazer chutes até acertar o número imaginado. a quantidade de vinhos é desconhecida. Este programa deverá ser executado até que o sexo X seja informado pelo usuário.0 os dados de cada aluno (número de matrícula e nota numérica final) serão fornecidos pelo usuário a tabela de conceitos segue abaixo: Nota Conceito D C B A 36. Especifique a porcentagem de cada tipo sobre o total geral de vinhos. Para isso. 37. Calcule e escreva a média das idades deste grupo de indivíduos. Imagine uma brincadeira entre dois colegas. utilize como finalizador „F‟ de fim. e. „B‟ para branco e „R‟ para rose. Uma certa firma fez uma pesquisa de mercado para saber se as pessoas gostaram ou não de um novo produto. Calcule e escreva os itens que seguem:  o número de pessoas que responderam sim. ii. sendo: „T‟para tinto. i. . c. Faça um algoritmo que mostre os conceitos finais dos alunos de uma classe de 75 alunos. SC.Lógica de Programação 35. PR. assim sua execução. 40. a cada tentativa é dito se o chute foi alto ou baixo. Faça um algoritmo que leia um indeterminado número de linhas contendo cada uma a idade de um indivíduo.) número de veículos de passeio (em 2007) número de acidentes de trânsito com vítimas (em 2007) qual o maior e o menor índice de acidentes de trânsito e a que cidades Deseja-se saber: . considerando: i. RJ. Foram obtidos os seguintes dados: b. de 0.0 a 4. tendo como dados de entrada tipos de vinho.9 de 7.0 a 6. SP.

quais elementos de M que estão repetidos e quantas vezes cada um deles é repetido com uma mensagem dizendo que aparece X vezes em M. Apresente o vetor B. sendo este a junção dos dois vetores. C deverá ter o dobro de elementos de A e B. d. Depois leia um vetor B também com doze elementos. a. Leia doze elementos de um vetor colocá-los em ordem decrescente e apresente os elementos ordenados. b. e. Verifique. 49. Escreva M e as somas calculadas. Abaixo da diagonal principal. A esquerda abaixo da diagonal principal e acima da diagonal secundária. a porcentagem de pessoas do sexo masculino que responderam não. o primeiro elemento de A passa a ser o último de B. Apresente os dois vetores. soma dos elementos da diagonal secundária (i+j=n+1). soma dos elementos da matriz toda.Lógica de Programação  o número de pessoas que responderam não. Leia oito elementos de um vetor A. 42.  a porcentagem de pessoas do sexo feminino que responderam sim. Escreva uma matriz que leia uma matriz M(6. 67 . 47. Leia um vetor A com doze elementos. 45. Leia vinte elementos de um vetor A e construa um vetor B de mesma dimensão com os mesmos elementos de A. Acima das diagonais principal e secundária. 43. soma dos elementos da diagonal principal (i=j). Construa um vetor B de mesma dimensão com os elementos do vetor A multiplicados por três. Após sua leitura. Leia dois vetores A e B com quinze elementos cada. c. Apresente os valores de C.6) e calcule as somas das partes indicadas: a. ou seja. Escreva as somas calculadas. coloque os seus elementos em ordem crescente. soma dos elementos da coluna 5. O segundo elemento de A passa a ser o penúltimo de B e assim por diante. c. Escreva uma matriz M(5. Acima da diagonal secundária. sendo que estes deverão estar invertidos. Coloque os elementos de B em ordem crescente. 48. Construa um vetor C.3) e a escreva. 44. Leia dez elementos de um vetor. 46. Construa um vetor C. 41. b. efetue as seguintes somas: soma dos elementos da linha 3. onde cada elemento de C é a soma do elemento correspondente de A com B. d.5). a seguir. Desta forma. Considerando uma matriz M(5.

Lógica de Programação 68 .

Sign up to vote on this title
UsefulNot useful