Sistemas Operacionais e Introdução à Programação Introdução à Lógica de Programação 1
Lógica: técnica de de encadear pensamentos para atingir determinado objetivo Entender o problema a ser resolvido Decompor o problema em partes menores, para sua simplificação Determinar as operações elementares necessárias para a solução Determinar a sequência com que essas operações devem ser realizadas 2
Problema exemplo: Há três recipientes com tamanhos distintos: um com 8 litros, outro com 5 litros e o terceiro com 3 litros. O recipiente com 4 litros está completamente cheio. Deseja-se colocar 4 litros em dois recipientes. Considere que os recipientes não são graduados. i) Qual o resultado esperado? ii) Quais as operações elementares? iii) Qual a sequência de operações para resolvê-lo? 3
A resolução de problemas envolve a descrição dos pensamentos em uma sequência de instruções a ser seguida para cumprir uma tarefa. Definir a sequência lógica: passos a serem executados até atingir um objetivo ou solução de um problema Instruções: regras (ordens) ou normas definidas para a realização ou uso de alguma coisa. Em computação, é uma ação elementar a ser executada pelo computador Uma instrução isolada não faz muito sentido Portanto, é importante saber traduzir a resolução de um problema em uma sequência de instruções que o computador saiba fazer. 4
Problema exemplo: Estando você inicialmente fora do carro, identifique as instruções e a respectiva sequência lógica para pô-lo em movimento. Outro problema: Descreva as instruções e respectiva sequência lógica para localizar uma palavra em um dicionário. 5
Algoritmo: uma sequência finita de passos que levam a execução de uma tarefa. Uma receita, com uma sequência de instruções que cumprem uma meta específica A definição de uma tarefa deve ser clara e precisa: não pode ser vaga, dúbia ou redundante Propriedades de algoritmos: Ações simples e bem definidas (não ambíguas) Sequência ordenada de ações Sequência finita de passos 6
Algoritmos: exemplos Procedimentos para operações aritméticas básicas: adição, subtração, multiplicação, divisão,... Procedimentos em manuais de aparelhos eletrônicos: gravação de um programa de TV em DVD, digitalização de um documento em uma impressora multifuncional,... Uma coreografia Uma receita de bolo Uma pesquisa em uma lista telefônica Procedimento para obtenção de passaporte 7
Exemplos de algoritmos: A) soma de dois números quaisquer pelo computador, os quais devem ser fornecidos pelo teclado 1. Ler o primeiro número pelo teclado 2. Ler o segundo número pelo teclado 3. Somar os dois números 4. Apresentar o resultado na tela 8
Exemplos de algoritmos: B) Par ou ímpar entre usuário e computador: 1. Apresentar as opções para o usuário: P (Par) e I (Ímpar) 2. Ler do teclado a opção do usuário 3. Ler do teclado o número escolhido pelo usuário 4. Sortear um número aleatório 5. Somar número do usuário e número do computador 6. Se escolha do usuário for par e soma for par, então usuário vence e termina algoritmo 7. Se escolha do usuário for ímpar e soma for ímpar, então usuário vence e termina algoritmo 8. Computador vence 9
Exemplos de algoritmos: C) Identificar a causa da queda de energia: Numa determinada noite acontece uma queda de energia. Você sabe que pode encontrar uma vela na gaveta da cozinha, um lampião embaixo da cama, fusíveis de reserva no armário da sala, e fósforos na estante da cozinha. Descreva a sequência de passos que poderia ser utilizada para diagnosticar e resolver o problema, que pode ter sido causado por: i) Queima de um fusível ii) Queda na subestação da companhia elétrica 10
Exemplos de algoritmos: D) Problema da travessia: um barqueiro precisa levar um saco de milho, uma galinha e uma raposa para o outro lado do rio. Porém o barco somente é capaz de levar uma coisa de cada vez (além do barqueiro). Qual a sequência de travessias necessária para atravessar o milho, a galinha e a raposa? 11
Exemplos de algoritmos: E) Desenho de uma figura uma folha de papel: 1. Dobre a folha de papel de forma que a margem superior fique perfeitamente alinhada com a margem esquerda. 2. Mantendo a folha dobrada, dobre sua porção inferior de forma que o eixo da dobradura coincida com a linha entre a junção da ponta superior direita da folha com a margem esquerda, e o ponto onde a margem direita iniciou a primeira dobradura 3. Pressione a segunda dobradura, de forma que o papel fique com um vinco 4. Desfaça a segunda dobradura 5.Desfaça a primeira dobradura 6. Pegue uma caneta 12
Exemplos de algoritmos: E) Desenho de uma figura em uma folha de papel (cont): 7. Posicione a ponta da caneta a um dedo de distância das margens superior e esquerda, e pressione-a para que fique marcado um ponto 8. Posicione a ponta da caneta a um dedo de distância das margens superior e direita, e pressione-a para que fique marcado um ponto 9. Posicione a ponta da caneta a um dedo de distância das margens direita e do vinco da segunda dobradura, e pressione-a para que fique marcado um ponto 10. Posicione a ponta da caneta a um dedo de distância das margens esquerda e do vinco da segunda dobradura, e pressione-a para que fique marcado um ponto 13
Exemplos de algoritmos: E) Desenho de uma figura em uma folha de papel (cont): 11. Posicione a ponta da caneta no ponto entre as margens superior e esquerda. 12. Mantendo a ponta da caneta no papel, risque até o ponto entre as margens superior e direita 13. Mantendo a ponta da caneta no papel, risque até o ponto entre as margens direita e o vinco da segunda dobradura 14. Mantendo a ponta da caneta no papel, risque até o ponto entre as margens esquerda e o vinco da segunda dobradura 15. Mantendo a ponta da caneta no papel, risque até o ponto entre as margens esquerda e superior 16. Tire a ponta da caneta do papel 17. Fim 14
Exemplos de algoritmos: F) Há três hastes. Uma das hastes serve de suporte para três discos de tamanhos diferentes. Um disco menor sempre é colocado sobre um disco maior. A figura abaixo ilustra as hastes e os discos: Desejam-se mover os três discos para a haste da direita. Porém só pode se mover um disco por vez, e um disco maior nunca pode ficar sobre um disco menor. Operações possíveis: Move disco,haste Descreva o algoritmo para resolver esse problema. 15
Uma solução narrativa: 1. Move disco p para a haste 2 2. Move disco m para a haste 3 3. Move disco p para a haste 3 4. Move disco g para a haste 2 5. Move disco p para a haste 1 6.Move disco m para a haste 2 7. Move disco p para a haste 2 Uma solução em forma gráfica 16
Exemplos de algoritmos: Refaça o algoritmo para o caso de haver quatro discos. Quantos passos teria o algoritmo para qualquer número de discos? 17
Programas: tradução dos algoritmos em uma linguagem de programação, para que possam ser executados pelo computador Linguagens de programação: Muito mais rígidas e específicas que linguagem natural (a que usamos) Não dão margem a subjetividade... Exemplos: C, C++, Java, PHP, Pascal, Assembly, Python, Ruby, Perl, Cobol, C#, Fortran,... 18
Algoritmo de soma de dois números traduzido para linguagem C: int main() { int x, y, soma; } printf( Entre com primeiro número: ); scanf( %d, &x); printf( Entre com segundo número: ); scanf( %d, &y); soma = x + y; printf( Soma = %d\n, soma); return 0; Edição, compilação e execução desse programa 19
Exercícios: 1) Faça um algoritmo detalhado para trocar o pneu de um carro 2) Faça um algoritmo para dividir um número por outro, sabendo que você tem disponível apenas a operação de subtração 3) Faça um algoritmo para encontrar as raízes de uma equação de 2 o grau 4) Faça um algoritmo para desenhar um polígono qualquer, sabendo que as operações possíveis são: ponha caneta no papel, tire caneta do papel, risque X centímetros, mude a direção de risco. 20