apostila ltp 2012

Upload: igor-felipe

Post on 17-Jul-2015

316 views

Category:

Documents


0 download

TRANSCRIPT

APOSTILA DE LTP Conceitos Iniciais de Lgica e Tcnicas de Programao - PORTUGOL Prof. Marcelo Cunha de Oliveira Aluno: N. Data: 01/02/2012 Turmas: 1AI/ 1AM

1. Introduo Com a finalidade de reduzir a interveno humana na utilizao do computador, aumenta-se cada vez mais o ritmo de automao das suas operaes. Porm, para que o computador possa ajudar a resolver nossos problemas de uma forma eficiente, devemos aprender a program-lo. O objetivo principal da Lgica de Programao demonstrar tcnicas para resoluo de problemas e consequentemente automatizao de tarefas. O aprendizado da Lgica essencial para formao de um bom programador, servindo como base para o aprendizado de todas as linguagens de programao, estruturadas ou no. De um modo geral esses conhecimentos sero de supra importncia, pois ajudaro no cotidiano, desenvolvendo um raciocnio lgico rpido e eficiente. 1.1 Abordagem contextual Lgica a forma de ordenar o pensamento. Isto faz com que insistamos em questionar vrias formas de pensar. A partir desse princpio podemos montar etapas que sero executadas para solucionar problemas. Os computadores utilizam um mtodo especfico para comunicao, segundo este mtodo, no h meio termo, existe apenas o verdadeiro e o falso. Como esta forma de comunicao to precisa e lgica, o ser humano tem necessidade de aprender a organizar seu pensamento de forma que o computador possa "compreend-lo". O meio encontrado para possibilitar essa comunicao foi o Algoritmo. Usar a lgica um fator a ser considerado por todos, principalmente pelos profissionais da rea de tecnologia de informao (programadores, analista de sistemas e de suporte), pois seu dia-a-dia dentro das organizaes solucionar problemas e atingir objetivos apresentados por seus usurios com eficincia e eficcia, utilizando recursos computacionais. Para concluir todas estas definies, podemos dizer que lgica a cincia que estuda as leis e critrios de validade que regem o pensamento e a demonstrao, ou seja, cincia dos princpios formais do raciocnio. 2. Definio de Algoritmo A palavra algoritmo, primeira vista, parece-nos estranha. Embora possua designao desconhecida, fazemos uso constantemente de algoritmos em nosso cotidiano: a maneira como uma pessoa toma banho por exemplo um algoritmo. Outros algoritmos freqentemente encontrados so: Instrues para se utilizar um aparelho eletrodomstico; Uma receita para preparo de algum prato; Instrues para instalao de um vdeo game; 1

A regra para determinao de mximos e mnimos de funes por derivadas sucessivas; A maneira como as contas de gua, luz e telefone so calculadas mensalmente, etc;

So vrios os conceitos para algoritmo. Escolhemos alguns para serem apresentados aqui: Um conjunto finito de regras que prov uma seqncia de operaes para resolver um tipo de problema especfico [KNUTH] Seqncia ordenada, e no ambgua, de passos que levam soluo de um dado problema [TREMBLAY] Processo de clculo, ou de resoluo de um grupo de problemas semelhantes, em que se estipulam, com generalidade e sem restries, as regras formais para a obteno do resultado ou da soluo do problema [AURLIO] a descrio, de forma lgica, dos passos a serem executados no cumprimento de determinada tarefa a forma pela qual descrevemos solues de problemas do nosso mundo, a fim de serem implementadas utilizando os recursos do mundo computacional. Como este possu severas limitaes em relao ao nosso mundo, exige que sejam impostas algumas regras bsicas na forma de solucionar os problemas para que possamos utilizar os recursos de hardware e software disponveis Seqncia de procedimentos que so executados seqencialmente com o objetivo de resolver um problema especificado (conhecido). 2.1 Formas de Representao Algoritmos podem ser representados, dentre outras maneiras, por: 2.1.1. Descrio Narrativa Faz-se uso do portugus para descrever algoritmos. EXEMPLO: Receita de Bolo: Providencie manteiga, ovos, 2 Kg de massa, etc. Misture os ingredientes Despeje a mistura na frma de bolo Leve a frma ao forno Espere 20 minutos Retire a frma do forno Deixe esfriar Prove

2

VANTAGENS: O portugus bastante conhecido por ns. DESVANTAGENS: Impreciso; Pouca confiabilidade (a impreciso acarreta a desconfiana); Extenso (normalmente, escreve-se muito para dizer pouca coisa). 2.1.2. Fluxograma Utilizao de smbolos grficos para representar algoritmos. No fluxograma existem smbolos padronizados para incio, entrada de dados, clculos, sada de dados, fim, etc.

3

VANTAGENS: Uma das ferramentas mais conhecidas; Figuras dizem muito mais que palavras; Padro mundial. DESVANTAGENS: Faz com que a soluo do problema j esteja amarrada a dispositivos fsicos; Pouca ateno aos dados, no oferecendo recursos para descrev-los ou representlos; Complica-se medida que o algoritmo cresce. 2.1.3. Linguagem Algortmica Consiste na definio de uma pseudolinguagem de programao, cujos comandos so em portugus, para representar algoritmos. EXEMPLO: Algoritmo calculaDobro Algoritmo calculaDobro Inicio Leia(num); Dobro 2 * num Escreva(dobro) Fim VANTAGENS: Independncia fsica da soluo (soluo lgica apenas); Usa o portugus como base; Podem-se definir quais e como os dados vo estar estruturados; Passagem quase imediata do algoritmo para uma linguagem de programao qualquer. DESVANTAGENS: Exige a definio de uma linguagem no real para trabalho; No padronizado. Exerccios Propostos 1. H trs suspeitos de um crime: o cozinheiro, a governanta e o mordomo. Sabe-se que o crime foi efetivamente cometido por um ou por mais de um deles, j que podem ter agido individualmente ou no. Sabe-se, ainda que: A) se o cozinheiro inocente, ento a governanta culpada; B) ou o mordomo culpado ou a governanta culpada, mas no os dois; C) o mordomo no inocente. Logo: (a) a governanta e o mordomo so os culpados (b) o cozinheiro e o mordomo so os culpados (c) somente a governanta culpada (d) somente o cozinheiro inocente (e) somente o mordomo culpado. 4

2. Qual o nmero que completa a seqncia: 1, 1, 2, 3, 5, .. (a) 5 (b) 6 (c) 7 (d) 8 (e) 9 Use a descrio abaixo para resolver os exerccios 3 e 4. Chapeuzinho Vermelho ao entrar na floresta, perdeu a noo dos dias da semana. A Raposa e o Lobo Mau eram duas estranhas criaturas que freqentavam a floresta. A Raposa mentia s segundas, teras e quartas-feiras, e falava a verdade nos outros dias da semana. O Lobo Mau mentia s quintas, sextas e sbados, mas falava a verdade nos outros dias da semana.

3. Um dia Chapeuzinho Vermelho encontrou a Raposa e o Lobo Mau descansando sombra de uma rvore. Eles disseram: Raposa: Ontem foi um dos meus dias de mentir Lobo Mau: Ontem foi um dos meus dias de mentir A partir dessas afirmaes, Chapeuzinho Vermelho descobriu qual era o dia da semana. Qual era? 4. Em qual dia da semana possvel a Raposa fazer as seguintes afirmaes? Eu menti ontem. Eu mentirei amanh. 5. Faa um algoritmo para Ir de casa para o escola de nibus. 6. Faa um algoritmo para somar dois nmeros e multiplicar o resultado pelo primeiro nmero. 7. Descreva com detalhes a seqncia lgica para preparar um macarro instantneo

5

2.2 Um Ambiente para Escrever Algoritmos Descreveremos uma mquina hipottica para a qual escreveremos nossos algoritmos. O nosso computador hipottico apresentar a seguinte organizao:

Cada uma das partes constituintes da figura acima tem os seguintes significados: 1 - Dispositivo de entrada (o teclado): o meio pelo qual os dados que sero trabalhados pelo algoritmo vo ser introduzidos em nosso computador hipottico; 2 - Unidade Lgica e Aritmtica (ULA): Parte responsvel pelas operaes matemticas e avaliaes lgicas; 3 - Unidade de Controle: Exerce controle sobre as demais partes do nosso computador. uma verdadeira gerente que distribui tarefas s outras unidades; 4 - Memria: Guarda o algoritmo a ser executado e os dados a serem utilizados pelo mesmo. Todo dado fornecido ao computador e o resultado de suas operaes ficam guardados na memria; 5 - Dispositivo de Sada (vdeo e impressora): o meio que se dispe para apresentao dos resultados obtidos.

6

2.2.1. Funcionamento do Nosso Computador Todos os computadores, independentemente dos seus tamanhos, so conceitualmente semelhantes ao esquema da figura anterior (h algumas diferenas, mas no trataremos aqui dos casos especiais). Resumidamente, podemos afirmar que existem 4 (quatro) operaes bsicas que qualquer computador pode executar: a) operaes de entrada e sada: ler dados do teclado e escrever dados na tela so exemplos destas operaes. Elas servem para introduzir dados na memria do nosso computador e exibir dados que j estejam l armazenados; b) operaes aritmticas: so utilizadas na realizao de operaes matemticas (adio, subtrao, multiplicao e diviso); c) operaes lgicas e relacionais: tm aplicabilidade em comparaes, testes de condies lgicas (2 > 6 ? X = Y ?); d) movimentao de dados entre os vrios componentes: as operaes aritmticas so executadas na Unidade Lgica e Aritmtica, necessitando da transferncia dos dados para essa unidade e da volta do resultado final para ser guardado na memria. Exemplo de algoritmo: "Como fazer um bolo" Pegar Farinha 1 xcara Pegar Ovos dzia Pegar Leite 100 ml ENTRADA Pegar Manteiga 100 g Pegar Fermento 1 colher pequena Pegar Forma de Bolo Pegar Batedeira _______________________________________________________________________ Misturar a farinha ao leite Bater os ovos na batedeira at ficar em neve Misturar os demais ingredientes PROCESSAMENTO Colocar manteiga na forma Colocar a massa do bolo na forma Pr-aquecer o formo a 180 por 15 min Colocar no forno durante 20 minutos _______________________________________________________________________ Guardar todo o material Retirar o bolo do forno Esfriar e comer

SADA

7

2.3 Algoritmo x Programa Um algoritmo uma seqncia lgica de aes a serem executadas para se executar uma determinada tarefa. Um programa a formalizao de um algoritmo em uma determinada linguagem de programao, segundo suas regras de sintaxe e semntica, de forma a permitir que o computador possa entender a seqncia de aes. 2.4 Pseudocdigo Os algoritmos so descritos em uma linguagem chamada pseudocdigo. O pseudocdigo uma notao algortmica muito prxima da linguagem natural. Este nome uma aluso posterior implementao em uma linguagem de programao. Por isso os algoritmos so independentes das linguagens de programao. O algoritmo deve ser fcil de interpretar e fcil de codificar. Ou seja, ele deve ser o intermedirio entre a linguagem falada e a linguagem de programao. Diante disso, podemos pensar em usar diariamente o portugus para expressar nossos algoritmos. No entanto, esta uma compreenso incompleta do problema. O uso de uma tcnica formal para notao de algoritmos proporciona diversas vantagens como: A facilidade na argumentao de uma maneira razovel e concisa para a transmisso de nossas idias; A impossibilidade da existncia de ambigidade na avaliao de nossos algoritmos. O Portugol uma pseudolinguagem de programao. A idia permitir que com um conjunto bsico de aes seja possvel pensarmos no problema a ser resolvido e no na mquina que ir resolv-lo, por outro lado, o mesmo no deve ficar muito distante desta mquina, ou seja, uma soluo facilmente implementada no computador. 2.5 Fases de um Algoritmo Quando temos um problema e vamos utilizar um computador para resolv-lo inevitavelmente temos que passar pelas seguintes etapas: Definir o problema; Realizar um estudo da situao atual e verificar quais a(s) forma(s) de resolver o problema; Terminada a fase de estudo, utilizar uma linguagem de programao para escrever o programa que dever a princpio, resolver o problema; Analisar junto aos usurios se o problema foi resolvido. Se a soluo no foi encontrada, dever ser retornado para a fase de estudo para descobrir onde est a falha. Estas so de forma bem geral, as etapas que um analista passa, desde a apresentao do problema at a sua efetiva soluo.

8

3. Tipos de dados Na implementao de algoritmos, necessrio que no momento em que formos trabalhar com variveis, indiquemos o tipo de informao que uma varivel pode conter. Esses tipos so: inteiro, real, caracter, literal e lgico. 3.1 Inteiro As variveis do tipo inteiro so para armazenamento de nmeros inteiros positivos ou negativos. Serve tanto para variveis como para constantes. 3.2 Real As variveis do tipo reais so para o armazenamento de nmeros que possuam casas decimais. Serve tanto para variveis como para constantes. 3.3 Caracter Especficas para armazenamento de apenas um caracter. Ex: sexo, caso seja M ou F. 3.4 Literal Especficas para dados que contenham letras e/ou nmeros. Pode em determinados momentos conter somente dados numricos ou somente literais. 3.5 Lgico Este tipo de estrutura de dados permite representar dois (e s dois) estados: verdadeiro ou falso. Este tipo pode ser representado atravs dos dois estados existentes na codificao binrio: 1 verdadeiro; 0 falso. Este tipo de dados usualmente aplicado em situaes reais que unicamente denotam dois estados possveis. 4. Variveis e Constantes Variveis e constantes so os elementos bsicos que um algoritmo manipula. Variveis devem receber nomes para poderem ser referenciadas e modificadas quando necessrio. Um algoritmo deve conter declaraes que especificam de que tipo so as variveis que ele utilizar e s vezes um valor inicial. Tipos podem ser, por exemplo, inteiros, reais, caracteres, etc. As expresses combinam variveis e constantes para calcular novos valores. 4.1 Identificadores Representam os nomes escolhidos para rotular as variveis, procedimentos e funes, normalmente, obedecem as seguintes regras: Iniciar sempre por uma letra (a - z, A - Z) ou um underscore ( _ ); O restante do identificador deve conter apenas letras, underscores ou dgitos (0 - 9). No pode conter outros caracteres; Pode ter qualquer tamanho; Cada identificador deve ter um nome nico (no permitido o caractere espao no nome da varivel); Os nomes escolhidos devem explicitar seu contedo; Um identificador no pode ter o nome igual a uma palavra reservada.

9

Exemplos de identificadores vlidos: PAGAMENTO Soma_Total MaiorValor Media1 _Media Exemplos de identificadores invlidos: %Quantidade - O smbolo % no permitido 4Vendedor - No pode comear com um nmero Soma Total - No pode ter espaos entre as letras 4.2 Constante Uma constante como seu prprio nome diz, mantm sempre o mesmo valor, no podendo ser alterado, diferente da varivel que pode receber outros valores. Ou seja, so valores que indiscutivelmente podem ser alterados no decorrer do programa. O maior benefcio na utilizao de constantes o aumento da legibilidade do cdigo. Ex.: pi, estaes do ano constantes numricas; Domingo constante literal; 2 + 2 = 4 constante lgica verdadeiro. 4.2.1 Declaraes Constante nome_da_constante valor atribuda a constante Ex.: Constante Idade 65 Quando uma constante declarada, no necessrio definir o tipo da constante, pois o que define o tipo da constante a sua atribuio. Se for atribudo a uma constante o valor 'teste' o tipo da constante ser literal e assim sucessivamente. 4.3 Varivel Como o prprio nome sugere, as variveis so representaes de valores que podem variar, ou seja, so estruturas lgicas que armazenam valores que podem ser modificados a qualquer momento pelo algoritmo. So responsveis por armazenar valores que ajudam na resoluo do problema. Para cada tipo de dado, h um tipo de varivel que possa armazen-lo. Pode-se imaginar as variveis como um local onde so guardadas informaes. Similar a um armrio de uma academia onde cada atleta possui um local especfico para guardar seus volumes, da mesma maneira uma varivel, como um armrio, um local especfico para armazenamento de dados. Cada tipo de varivel guarda suas informaes e quando faz-se necessrio as informaes, pode-se solicit-las. Embora uma varivel possa assumir diferentes valores, ela s pode armazenar um valor a cada instante. Ex.: Idade varivel inteira; Nome varivel literal; Estado_civil varivel lgica. 10

4.3.1 Declaraes Antes de se utilizar uma varivel em algum cdigo temos que declar-la, ou seja, dizer ao programa reservar um espao em memria para aquela informao, este processo de declarao e feito em um trecho bem definido do cdigo. Sintaxe: Declare nome_da_varialvel tipo_da_variavel Ex.: Declare idade, contador inteiro sexo caracter nome, endereco literal As variveis s podem armazenar valores de um mesmo tipo. 5. Operadores e Expresses 5.1 Operadores So meios pelo qual incrementamos, decrementamos, comparamos e avaliamos dados dentro do computador. Eles esto divididos em alguns grupos bsicos: Operadores Aritmticos; Operadores Lgicos; Operadores Relacionais; Operador de Atribuio.

5.1.1 Operadores Aritmticos Denominamos expresso aritmtica aquela cujos operadores so aritmticos e cujos operandos so constantes e/ou variveis do tipo numrico (inteiro ou real), ou seja, so operadores utilizados para efetuar operaes matemticas entre dois valores que tm como resultado final um valor do tipo numrico, em outras palavras so smbolos que executam operaes matemticas. Alm da adio, subtrao, multiplicao e diviso, podem utilizar tambm o operador para exponenciao. Os smbolos para os operadores aritmticos so:

5.1.1.1 Prioridades das Operaes Aritmticas 1 ( ) Parnteses 2 Exponenciao Ex.: 3 Multiplicao, diviso (o que aparecer primeiro) 4 + ou (o que aparecer primeiro)

1 + 7 * 2 ** 2 1 = 28 ou ento 3 * (1 2) + 4 * 2 = 5 11

5.1.2 Operadores Relacionais Os operadores relacionais so utilizados para comparar valores literais, caracteres e nmeros. Os valores a serem comparados podem ser caracteres ou variveis. Estes operadores sempre retornam valores lgicos (verdadeiro ou falso). Para estabelecer prioridades no que diz respeito a qual operao executar primeiro, utilize os parnteses. Os operadores relacionais so: Descrio Smbolo Igual a = Diferente de Maior que > Menor que < Maior igual a >= Menor igual a B A= B A = B + C OU B C E B