CMP1044 - s Professor Vicente Paulo de Camargo
Estrutura Geral de um Computador Unidade de Entrada UCP Memória Unidade de Saída
Para que um computador execute certas tarefas, ele necessita ser alimentado com um conjunto de instruções Assim, um computador, geralmente, precisa ser alimentado com dados através das suas unidades de entrada Esses dados são processados na UCP com a execução de certas operações Por fim, os dados processados implicam em resultados específicos, alguns dos quais poderão ser apresentados nas unidades de saída
Para resolver um problema no computador, de maneira semelhante ao que resolvemos no dia-a-dia, é necessário descrever esse problema de uma forma clara e precisa, através de uma sequência de passos a serem seguidos até se atingir a solução Essa sequência de passos deve seguir uma determinada lógica Vamos compreender o que vem a ser lógica
Lógica Há uma camisa dentro do guarda-roupa Sabe-se que para pegar a camisa deve-se primeiro abrir a porta do guarda-roupa Com isso, no nosso cotidiano, sempre que pensamos estamos utilizando a lógica A lógica é uma parte da filosofia que estuda as leis do raciocínio
Lógica A lógica é, portanto, uma sequência coerente, regular e necessária de ações Considere o seguinte exemplo para se adquirir um medicamento em uma farmácia: pegar o medicamento fornecer a receita sair da farmácia com o medicamento pagar o medicamento Essa sequência não está coerente com a realidade, pois o correto é: fornecer a receita obter o medicamento pagar o medicamento sair da farmácia com o medicamento
Lógica Quando se programa um computador é fundamental aplicar a lógica para que se possa obter a solução correta de um problema Assim, o treino constante da habilidade da lógica é primordial para aprimorar a capacidade de resolver problemas através da programação de computadores Uma maneira importante para isso é aprender a pensar de forma estruturada, pois permite solucionar problemas através de um padrão
Lógica Para resolver um problema no computador, de maneira semelhante ao que resolvemos no dia-a-dia, é necessário descrever esse problema de uma forma clara e precisa, através de uma sequência de passos a serem seguidos até se atingir a solução Essa sequência de passos deve seguir uma determinada lógica Essa lógica de passos é denominada de algoritmo
Um algoritmo é um conjunto finito de regras que fornece uma sequência de operações para resolver um problema específico Um algoritmo deve sempre terminar após um número finito de passos Cada passo de um algoritmo deve ser bem definido Um algoritmo poderá ter nenhuma ou várias entradas, que são os dados que serão fornecidos para serem processados e apresentar um determinado resultado
Um algoritmo poderá apresentar resultados emsaídas específicas As entradas em um algoritmo são fornecidas através de simulação do uso das unidades de entrada de um computador (teclado, mouse e outros). Em um algoritmo uma entrada de dados será representada por uma instrução específica que represente a leitura desses dados As saídas de um algoritmo são fornecidas através da simulação do uso das unidades de saída de um computador (monitor de video, impressora e outros) Em um algoritmo uma saída de dados será representada por uma instrução específica que represente a escrita desses dados
Importante: Como o algoritmo é a representação dos passos que são executados para se obter uma determinada solução então, o algoritmo é uma representação da solução de um problema que, posteriormente, poderá ser codificado e executado no computador na forma de um programa em uma linguagem de programação (C++, Java, Python, Ruby, PHP, JavaScript e outras)
Há diversas maneiras para se chegar a um resultado, ou melhor, para se obter uma determinada solução O importante é chegar na solução Mas, o melhor ainda é atingir a solução de forma eficiente e eficaz
Eficiência e Eficácia De acordo com Peter Drucker, pai da Administração Moderna: A eficiência consiste em fazer certo as coisas (nível operacional) A eficácia consiste em fazer as coisas certas (nível gerencial)
Exemplo de Eficiência e Eficácia: Há um vazamento de água Um funcionário tenta enxugar a água com pano Em um primeiro momento consegue Mas, percebe, posteriormente que continua o vazamento Pega outro pano e tentar enxugar novamente Ele está sendo eficiente, mas não eficaz Mas, outro funcionário analisou a situação e descobriu que a água está vazando devido a uma torneira aberta Ele fechou a torneira e o vazamento parou Neste caso, esse último funcionário foi eficiente e eficaz
Maneiras de representar algoritmos Há diversas maneiras para representar algoritmos Descrição narrativa Fluxograma Pseudocódigo (portugol)
Descrição narrativa Essa representação permite descrever cada passo do algoritmo através de uma descrição simples com o uso de nossa lingua nativa A vantagem dessa representação é que não há necessidade de se aprender nenhum conceito novo, pois já se conhece o idioma A desvantagem dessa representação está no fato da lingua natural permitir interpretações diferentes de uma mesma situação, não sendo confiável maneirahá diversas maneiras para representar algoritmos
Fluxograma Essa representação permite descrever cada passo do algoritmo com o uso de elementos gráficos com padronização mundial Como desvantagens do fluxograma tem-se: Pode não detalhar os dados suficientemente Deve-se conhecer os simbolos do fluxograma Não permite uma padronização das soluções
Fluxograma (exemplo) Considere o exemplo de um fluxograma que permite simular a ação de descascar batatas Inicio Pegar faca Pegar bacia Enquanto houve batatas Colocar água na bacia Pegar batatas Colocar água na bacia Fim
Pseudocódigo (portugol) Essa representação permite descrever cada passo do algoritmo de uma maneira padronizada Essa representação permite estabelecer algoritmos estruturados Essa é a melhor maneira de representar a descrição dos passos de um algoritmo
Pseudocódigo (Exemplo) Considere a situação resolver uma prova : // resolver prova Inicio ler a prova pegar a caneta enquanto (houver questão em branco) e (tempo não terminou) se (souber questão) resolvê-la senão pular para outra questão entregar prova
e Linguagem de Programação algoritmo Programa fonte Programa executável Java, c++, Python, Ruby, JavaScript, Cobol tradutor Compilador/interpretador
Exercícios 01.Crie um algoritmo que represente as ações em uma receita de um bolo 02.Crie um algoritmo que simule a leitura de um livro
FIM