


















































Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Muitos anos se passaram desde os primórdios da história da computação, mas apesar de já termos vivido vários paradigmas de programação, existe uma base de conhecimento que não mudou e não mudará nunca ? a Lógica de Programação.
Tipologia: Notas de estudo
1 / 58
Esta página não é visível na pré-visualização
Não perca as partes importantes!



















































AAPPOOSSTTIILLAA DDEE
L LÓÓGGIICCAA DDEE
P PRROOGGRRAAMMAAÇÇÃÃOO
P PAARRTTEE II
L LÓÓGGIICCAA (^) DDEE PPRROOGGRRAAMMAAÇÇÃÃOO
Muitos anos se passaram desde os primórdios da história da computação, mas apesar de já termos vivido vários paradigmas de programação, existe uma base de conhecimento que não mudou e não mudará nunca – a Lógica de Programação.
Faço uma associação direta da Lógica de Programação com o Raciocínio Matemático, onde o importante é a interpretação de um problema e a utilização correta de uma fórmula, e não a sintaxe pré-definida da mesma. O saber da Lógica está no “praticar”.
Não existem “fórmulas” em Informática, o que existe é o aperfeiçoamento de nossa forma de pensar e raciocinar sobre um problema, podendo extrair do mesmo uma solução eficiente e eficaz, sob um determinado ângulo de visão. Assim, verificamos que é preciso aprender a pensar sobre os problemas, extraindo deles o máximo de informações.
A solução que criamos para um determinado problema necessita ser exteriorizada e expressa numa linguagem publicamente conhecida. Assim, utilizamos a lógica de programação para desenvolver nossas soluções e os algoritmos para apresentar essas soluções ao mundo.
Venho acompanhando nos últimos anos vários livros de Algoritmos e Estruturas de Dados. Todos ensinam como representamos estruturas de controle e atribuições, ou como declaramos variáveis, mas nenhum deles – que eu tenha lido até o momento –, orientou o aluno na forma de pensar. Precisamos mais do que “fórmulas”, precisamos aprender a pensar.
Os princípios da programação estruturada surgidos no final da década de 60 – introduzidos por Dijkstra – levaram a necessidade de se ter uma linguagem que implementasse essas idéias, já que as linguagens de época (FORTRAN, COBOL e BASIC) não permitiam aplicar claramente as técnicas ensinadas. Assim, o professor Niklaus Wirth e
Na Programação Estruturada, ao desenvolvermos um algoritmo, temos como objeto um produto final – o programa. Todavia, para termos esta transição, passamos por várias fases, no sentido “cima para baixo”, onde cada fase é documentada e principalmente obtida por “refinamento” da fase anterior, até chegarmos a um nível de detalhamento que permita implementar o algoritmo diretamente na linguagem de programação.
A solução final de um problema é obtida através de soluções de subproblemas, o que permite dividir o programa em módulos com subfunções claramente delimitadas, que podem, inclusive, ser implementados separadamente, por diversos programadores de uma equipe.
São representadas pela seqüência simples, o comando condicional e o comando repetitivo, e fornecem ao programador um aumento da legibilidade e compreensão de cada módulo de programa. Assim, temos como uma das principais normas da Programação Estruturada : não usar comandos de desvio (GOTO).
Medimos a confiabilidade de um sistema através de sua resposta ao uso constante, no tocante a:
Atualmente, a sociedade está totalmente dependente dos sistemas de computação. Assim, aumenta exponencialmente a importância do nosso trabalho. Nos fins dos anos 60, constatou-se que as sistemáticas usadas pelos programadores eram os grandes responsáveis pela baixa confiabilidade dos programas. Como solução destes problemas, surgiu a Programação Estruturada (PE).
As revisões sofridas por um programa (releases) tanto para correção de erros quanto para mudanças de especificação, são consideradas como manutenção de software. Os programas devem passar por testes exaustivos de confiabilidade antes de serem colocados em produção. Falhas nesta fase levam a altos níveis de manutenção, que conseqüentemente, levam a altos custos.
Sabemos que ao desenvolver programas necessitamos de nossa criatividade, para que tenhamos soluções eficazes e eficientes. Todavia, não podemos representar nossas soluções em algoritmos totalmente escritos em português. Em programação, todas as vezes que executarmos um algoritmo a partir de um estado inicial x , devemos sempre obter o mesmo estado final y. Desta forma, é fácil perceber que a linguagem natural, não formalizada, geraria ambigüidades. Assim, temos o PORTUGOL, que é uma pseudolinguagem de programação (simbiose do Português com o ALGOL e PASCAL), que permite pensarmos no problema e não na máquina que vai executar o algoritmo. Além disso, não perdemos a flexibilidade e continuamos a ter a proximidade com a linguagem humana, facilitando, portanto, a interpretação.
As crianças aprendem facilmente como adicionar e subtrair valores. Suas dificuldades começam no momento em que elas se deparam com problemas e necessitam identificar quais operações trarão soluções para os mesmos.
Vejamos alguns exercícios de Raciocínio Matemático, que ajudarão a “exercitar” nosso cérebro. No final desta apostila, vocês encontrarão o gabarito, mas não olhem antes de tentar resolvê-los. Todos serão corrigidos em sala de aula.
(a) 5 (b) 6 (c) 7 (d) 8 (e) 9
(a) 13 (b) 25 (c) 26 (d) 27 (e) 28
( ) Verdadeiro ( ) Falso
(a) 15% (b) 20% (c) 25% (d) 30% (e) 40%
Use a descrição abaixo para resolver os exercícios 8 e 9. Chapeuzinho Vermelho ao entrar na floresta, perdeu a noção dos dias da semana. A Raposa e o Lobo Mau eram duas estranhas criaturas que freqüentavam a floresta. A Raposa mentia às segundas, terças e quartas-feiras, e falava a verdade nos outros dias da
semana. O Lobo Mau mentia às quintas, sextas e sábados, mas falava a verdade nos outros dias da semana.
A partir dessas afirmações, Chapeuzinho Vermelho descobriu qual era o dia da semana. Qual era?
(a) O filme “Fogo contra Fogo” está sendo exibido (b) Luis e Julio não estão enganados (c) Julio está enganado, mas Luis não. (d) Luis está enganado, mas Julio não. (e) José não irá ao cinema.
Segundo Wirth, “programas são formulações concretas de algoritmos abstratos, baseados em representações e estruturas específicas de dados”.
Por outro lado, devemos perceber que o algoritmo descrito revela uma situação perfeita, sem condicionais, sem exceções. Assim como na nossa rotina é improvável termos situações perfeitas, essas exceções também ocorrem nos programas de computador.
Vamos refazer este algoritmo de forma a introduzir algumas condições.
Solução 2 Algoritmo Trajeto_Casa_Trabalho_V
início
se houver lugar disponível então Sentar senão
Escolher o melhor lugar em pé e ali permanecer fim-se
Quando chegar próximo do local a saltar, dar o sinal para descida No ponto, descer do ônibus, pela porta dianteira Andar até o trabalho fim-se fim
Com certeza, a brincadeira que fiz da condição “Se o ônibus não parar” deve ter levado vocês a pensarem em inúmeras novas condições, como por exemplo: qual seria a sua reação, se num dia de chuva, o ônibus passasse por sobre uma poça e lhe sujasse toda a roupa?
Veja quão complexo pode se tornar um “simples” algoritmo. Devemos lembrar que detalhes são essenciais na confecção de um algoritmo, todavia, eles devem estar de acordo com o contexto. Além disso, é importante que venhamos a relatar apenas os detalhes relevantes.
Por exemplo, a solução 2 está apropriada para ensinarmos uma pessoa que não está acostumada a andar de ônibus. Todavia, este algoritmo causaria problemas se estivéssemos programando um robô. Considerando esta situação, deveríamos ser mais precisos no passo “Quando chegar próximo do local a saltar, dar o sinal de descida”. Nesse caso, deveríamos dizer “A x metros do local a saltar, dar o sinal de descida” ou “Na altura x da Rua y ...”.
Assim, lembrem-se de usar o BOM SENSO!
entender um algoritmo, lidamos fisicamente com um texto, mas mentalmente temos processos.
Toda linguagem é composta de sintaxe e semântica, onde a sintaxe corresponde à forma e a semântica corresponde ao conteúdo. Vocês devem aprender a sintaxe dos comandos, mas a principal preocupação deve ser de “como usar esses comandos”.
Regras para criação de bons algoritmos
Método para desenvolvimento de algoritmos
Conselho: Só tente conseguir o ótimo, depois de realizar o bom.
Assim, a variável é o local da memória onde guardamos os dados e o nome da variável é um identificador conforme definição anterior.
SalarioBruto NomeFuncionario
Toda variável necessita ser declarada, ou seja, reserva-se um local da memória informando que tipo de dados residirão ali. Assim, a sintaxe de declaração de uma variável é : variável : tipo de dados ; ou variável1, variável2, ..., variáveln : tipo de dados ;
Exemplo:
Se declararmos as variáveis A, B e C da seguinte forma: declare A : inteiro; B : caracter; C : lógico;
estamos criando áreas na memória identificadas por A, B e C, que só poderão receber, respectivamente, valores inteiros, alfanuméricos e lógicos (Verdadeiro ou Falso).
Ao armazenarmos variáveis na memória do computador, precisamos dizer que tipo elas são, para que seja reservado o espaço adequado, além de ser dado o trabalho correto a elas. Além dos tipos básicos de dados citados abaixo, podemos criar nossos próprios tipos.
INTEIRO: qualquer número inteiro, negativo, nulo ou positivo Ex.: -15, 0, 101
REAL: qualquer número real, negativo, nulo ou positivo Ex.: -1, -0.5, 0, 5, 9.
CARACTER: qualquer conjunto de caracteres alfanuméricos Ex.: “AB”, “ 123”, “ A123” , “CASA”
LÓGICO: conjunto de valores ( FALSO ou VERDADEIRO )
Comentários devem ser inseridos no algoritmo a fim de esclarecer o desenvolvimento do mesmo. Os comentários são inseridos entre { e }.
{ Texto de comentário delimitado por chaves }
Ao criarmos uma variável, partimos do princípio que em algum momento ou vários momentos dentro do nosso algoritmo, ela receberá valores, ou seja, armazenaremos dados na memória através de nossas variáveis. Para atribuirmos um valor ou uma expressão a uma variável, utilizamos o comando de atribuição ←. Assim, a sintaxe do comando é:
identificador ←←←← expressão ;
Salario ← 1000 Nome ← ‘Ana’