Gilson de Souza Carvalho gaucho.gilson@hotmail.com 1
Carga Horária: 72 horas Nº Créditos: 04 aulas Objetivo: Lógica de Programação II Resolver problemas usando os comandos básicos da linguagem (C). Com a base dada nesta disciplina você estará em condições de explorar os comandos da linguagem (C). Para acompanhar o curso e testar seus programas, vocês vão precisar de uma IDE, do inglês Integrated Development Environment ou Ambiente de Desenvolvimento Integrado, é um programa de computador que reúne características e ferramentas de apoio ao desenvolvimento de software com o objetivo de agilizar este processo. A programação só se aprende praticando, por isso imprescindível fazer os exercícios para poder acompanhar o curso. 2
Tutoriais: http://linguagemc.com.br/ides-e-compiladores-c/ 3
Critérios de Avaliação Provas escritas, exercícios, estudos de casos, participação e assiduidade. A1 = Prova Bimestral (UEG)...6,00 A2 = Prova/Exercícios/etc...4,00 4
Emenda Tipos de dados, escalares, vetores e matrizes, cadeias de caracteres e structs. Modularização de programas: funções. Passagem de parâmetros. Conceito de recursão e sua aplicação. Manipulação de arquivos. Implementação de algoritmos em uma linguagem de programação. Laboratório de programação 5
Básica: Lógica de Programação II Bibliografia Guimarães,A.M.; Lajes,N.A.C. Algoritmos e Estruturas de Dados, Rio de Janeiro: LTC Editora S/A., 1994. Farrer,H. Algoritmos Estruturados, Rio de Janeiro: Editora Guanabara Dois, 1999. Forbellone, A. L. V.; Eberspacher, H. F.; Lógica de Programação: a construção de algoritmos e estruturas de dados, São Paulo: Pearson, 2010. ASCENCIO, A. F. G. et al; Fundamentos da Programação de Computadores - 3ª ed. Pearson, 2012. 6
Bibliografia Complementar: Ascencio, A. F. G; Fundamentos da Programação de Computadores, São Paulo, Prentice Hall, 2002. Forbellone, A.L.V.; Eberspacher, H.F. Lógica de Programação, São Paulo: Makron Books, 2000. Lopes, A., Garcia, G. Introdução à programação- 500 algoritmos resolvidos, Rio de Janeiro: Elsevier, 2002. Dan Swait JR.,J. Fundamentos Computacionais - Algoritmos e Estruturas de Dados, São Paulo: McGraw- Hill, 1991. 7
Bibliografia Complementar: Tremblay,J.P.; Bunt,R.B. Ciências dos Computadores: Uma Abordagem Algorítmica, São Paulo: McGraw-Hill, 1983. Wirth,N. Programação Sistemática, Rio de Janeiro: Campus, 1978. Salvetti, D.D.; Barbosa, L.M. Algoritmos, São Paulo: Makron Books, 1998. Sebesta, R.W. Conceitos de Linguagens de Programação, Porto Alegre: Bookman, 2000. Brookshear, J.G. Ciência da Computação Uma Visão Abrangente, Porto Alegre: Bookman, 2000. 8
Modularização Lógica de Programação II 9
No geral, problemas complexos exigem algoritmos complexos. Mas sempre é possível dividir um problema grande em problemas menores. Desta forma, cada parte menor tem um algoritmo mais simples, e é estre trecho menor que é chamado de sub-rotina. Uma sub-rotina é na verdade, um programa, e sendo um programa poderá efetuar diversas operações computacionais(entrada, processamento e saída) e deverá ser tratada como foram os programas projetados até este momento. 10
As sub-rotinas são utilizadas na divisão de algoritmos complexos, permitindo assim possuir a modularização de um determinado problema, considerado grande e de difícil solução. Ao se trabalhar com esta técnica, pode-se deparar com a necessidade de se dividir uma sub-rotina em outras tantas quantas forem necessárias, buscando uma solução mais simples de uma parte do problema maior. O processo de dividir sub-rotinas em outras é denominado Método de Refinamento Sucessivo. 11
Método Top-Down ( cima pra baixo ) O processo de programar um computador torna-se bastante simples quando aplicado o método de utilização de sub-rotinas (módulos de programas). Porém, a utilização dessas sub-rotinas deverá ser feita com aplicação do método top-down. 12
Um método bastante adequado para a programação de um computador é trabalhar com o conceito de programação estruturada, o que facilita a aplicação deste processo de trabalho. O método mais adequado para a programação estruturada é o Top-Down (de cima para baixo) o qual se caracteriza basicamente por: 13
Antes de iniciar a construção do programa, o programador deverá ter em mente as tarefas principais que este deverá executar. Não é necessário saber como funcionarão, somente saber quantas são. Conhecidas todas as tarefas a serem executadas, tem-se em mente como deverá ser o programa principal, o qual vai controlar todas as outras tarefas distribuídas em suas sub-rotinas. 14
Tendo definido o programa principal, é iniciado o processo de detalhamento para cada sub-rotina. Desta forma são definidos vários algoritmos, um para cada rotina em separado, para que se tenha uma visão do que deverá ser executado em cada módulo de programa. Existem programadores que estabelecem o número máximo de linhas de programa que uma rotina deverá possuir. Se o número de linhas ultrapassa o limite preestabelecido, a rotina em desenvolvimento é dividida em outra sub- rotina (é neste ponto que se aplica o método de refinamento sucessivo). 15
A utilização do método de cima para baixo permite que seja efetuado cada módulo do programa em separado. Desta forma, cada um pode ser testado separadamente garantindo que o programa completo esteja sem erro ao seu término. 16
Outro detalhe a ser considerado é que muitas vezes existem em um programa trechos de códigos que são repetidos várias vezes. Esses trechos poderão ser utilizados como sub-rotinas, proporcionando um programa menor e mais fácil de ser alterado num futuro próximo. 17
A modularização nada mais é que separar em partes um determinado programa objetivando a facilidade de manutenção do mesmo. Essas partes podem ser identificadas como funções. 18