Sei sulla pagina 1di 12

CURSO ON-LINE DE LGICA DE PROGRAMAO / PROGRAMAO ORIENTADA A OBJETOS / TESTES (TEORIA E EXERCCIOS) PARA O CARGO 25: ANALISTA DE INFORMTICA/DESENVOLVIMENTO

DE SISTEMAS MPU/2010. PROFESSOR: ALEXANDRE LNIN CARNEIRO

AULA 0 - APRESENTAO

ATENO ESTE CURSO ON-LINE ABRANGE OS ITENS VII, XIII E XV DO EDITAL PARA O

CARGO 25 DO CERTAME MPU 2010.

Ol, colegas, Meu nome Lnin Carneiro. Sou Analista de Planejamento e Oramento do Ministrio do Planejamento, da rea de Tecnologia da Informao. Trabalho na Secretaria de Planejamento e Investimentos Estratgicos SPI, na Coordenao de Sistemas de Planejamento. Fui funcionrio do Serpro, Ibama e Receita Federal. Sempre trabalhando na rea de informtica. Tenho mestrado em Cincia da Computao, pela Universidade de Braslia, rea de concentrao: Inteligncia Artificial. Relaciono o mestrado aqui, pois trabalhei com algoritmos inteligentes. Sou professor de informtica desde os 18 anos (1990), tendo lecionado em cursos tcnicos, graduao e ps-graduao. Minhas principais disciplinas na graduao so ligadas rea de programao: algoritmos, estruturas de dados, programao estruturada e orientada a objetos, linguagens formais e compiladores e inteligncia artificial. Fiquei honrado com o convite do Ponto dos Concursos para ministrar este curso de contedo especfico para a rea de Tecnologia da Informao. Analisei o edital e escolhi estes tpicos para iniciarmos esta parceria. Sim, parceria. Vamos juntos estudar os itens deste curso para que voc possa obter sucesso nesta empreitada. Estou certo de que

1
www.pontodosconcursos.com.br

CURSO ON-LINE DE LGICA DE PROGRAMAO / PROGRAMAO ORIENTADA A OBJETOS / TESTES (TEORIA E EXERCCIOS) PARA O CARGO 25: ANALISTA DE INFORMTICA/DESENVOLVIMENTO DE SISTEMAS MPU/2010. PROFESSOR: LNIN CARNEIRO

com dedicao, minha e sua, a tarefa ser cumprida com perfeio. Vamos l! Falta pouco! Aproveite bem nossas aulas! Esta aula uma demonstrao, possuindo um contedo reduzido. Ela foi construda para que voc possa avaliar a qualidade do meu trabalho. Aproveite para aquecer os motores! O curso, que ora apresento, aborda os itens VII, XIII e XV (parte especfica) EXERCCIOS, do concurso em MPU/2010, 4 aulas cargo 25: ANALISTA desta DE aula INFORMTICA/DESENVOLVIMENTO DE SISTEMAS. um curso em TEORIA E dividido semanais, alm demonstrativa. Eis os assuntos que trabalharemos durante as quatro semanas do curso (extrado do edital): VII LGICA DE PROGRAMAO: Construo de algoritmos; tipos de dados simples e estruturados; variveis e constantes; comandos de atribuio, entrada e sada; avaliao de expresses; funes prdefinidas; conceito de bloco de comandos; estruturas de controle, seleo, repetio e desvio; operadores e expresses; passagem de parmetros; recursividade; conceitos bsicos de programao estruturada e orientada a objetos; mtodos de ordenao, pesquisa e hashing. XIII PROGRAMAO ORIENTADA A OBJETOS: Conceitos bsicos: classes, objetos, mtodos, mensagens, sobrecarga, herana, polimorfismo, interfaces e pacotes; tratamento de exceo. XV TESTES: Teste funcional e de unidade. Quero destacar que o nosso curso foi preparado para o certame do MPU, com contedo atualizado e concentrado nos tpicos descritos acima. Sempre que possvel, alm da teoria e dos exerccios

2
www.pontodosconcursos.com.br

CURSO ON-LINE DE LGICA DE PROGRAMAO / PROGRAMAO ORIENTADA A OBJETOS / TESTES (TEORIA E EXERCCIOS) PARA O CARGO 25: ANALISTA DE INFORMTICA/DESENVOLVIMENTO DE SISTEMAS MPU/2010. PROFESSOR: LNIN CARNEIRO

selecionados, trarei para as aulas minhas experincias em provas de programao. Veja abaixo a organizao do contedo. Aula 0. Aula Demonstrativa: Mtodo de Ordenao Bolha. Aula 1. LGICA DE PROGRAMAO: Construo de algoritmos; tipos de dados simples; variveis e constantes; comandos de atribuio, entrada e sada; avaliao de expresses; funes pr-definidas; conceito de bloco de comandos; estruturas de controle, seleo, repetio e desvio; operadores e expresses; conceitos bsicos de programao estruturada; Aula 2. Modularizao; procedimentos e funes; passagem de parmetros; hashing. Aula 3. PROGRAMAO ORIENTADA A OBJETOS: Conceitos bsicos: classes, objetos, mtodos, mensagens, sobrecarga, herana, polimorfismo, interfaces e pacotes; tratamento de exceo. Aula 4. TESTES: Teste funcional e de unidade. Simulado. Observe que os itens modularizao e procedimentos e funes, presentes na aula 2, no constam explicitamente do edital, mas devem ser abordados e cobrados. Nosso curso de Lgica de Programao, Programao Orientada a Objetos e Testes para o MPU abordar, em teoria e exerccios, o que importante dentro dos tpicos relacionados na programao das aulas. Procurarei ser objetivo, sem divagaes ou aprofundamentos desnecessrios. Ser um curso focado na prova e consciente de que estamos na reta final. Em alguns momentos precisaremos evocar alguns recursividade; mtodos de ordenao, pesquisa e

3
www.pontodosconcursos.com.br

CURSO ON-LINE DE LGICA DE PROGRAMAO / PROGRAMAO ORIENTADA A OBJETOS / TESTES (TEORIA E EXERCCIOS) PARA O CARGO 25: ANALISTA DE INFORMTICA/DESENVOLVIMENTO DE SISTEMAS MPU/2010. PROFESSOR: LNIN CARNEIRO

conceitos importantes para entender a matria, mas manteremos o foco no certame e tpicos indicados.

ATENO: esta uma aula demonstrativa para que voc possa avaliar meu trabalho. Para esta demonstrao, selecionei alguns tpicos da primeira aula.

Aula 0 Demonstrativa: Mtodo de Ordenao Bolha

1. Conceitos de Ordenao Ordenao o processo de re-arranjo de determinado conjunto de objetos de acordo com um critrio (ordem) especfico. O objetivo da ordenao facilitar e aumentar a eficincia na localizao dos membros de um conjunto de dados. Por exemplo: listas telefnicas, cadastro de usurios, dicionrios etc. um dos processos mais frequentes e importantes em processamento de dados, sendo uma tarefa que prepara os dados para que as demais operaes sejam executadas de forma mais eficiente. Alm da relevncia para os usurios da computao, a ordenao muito utilizada para demonstrar meios de se obter ganhos significativos de desempenho atravs do desenvolvimento de algoritmos sofisticados. Em muitos casos, so utilizados para testar tcnicas de implementao e otimizao, especialmente quando o mtodo de ordenao est bem definido. O processo de classificao afetado pelas caractersticas do ambiente no qual os dados esto armazenados (ou estaro durante o processo): memria principal ou secundria. Uma das caractersticas mais importantes de uma memria primria o fato de que o tempo de 4
www.pontodosconcursos.com.br

CURSO ON-LINE DE LGICA DE PROGRAMAO / PROGRAMAO ORIENTADA A OBJETOS / TESTES (TEORIA E EXERCCIOS) PARA O CARGO 25: ANALISTA DE INFORMTICA/DESENVOLVIMENTO DE SISTEMAS MPU/2010. PROFESSOR: LNIN CARNEIRO

acesso a qualquer um de seus endereos constante e igual para todos os dados. Isto significa que a sequncia na qual so acessados os dados na memria primria no afeta o tempo mdio de acesso a um dado, j que constante. J os dados armazenados em memria secundria devem ser, antes, transferidos para a memria primria, para possibilitar as aes do processador sobre tais dados. Na viso da ordenao de dados, pode-se concluir que os mtodos de classificao de dados armazenados em memria principal podem envolver a manipulao destes dados em qualquer seqncia, ao passo que os mtodos de classificao de dados armazenados em um disco magntico devem manipular os dados bloco a bloco. Chamamos o processo de classificao de um conjunto de dados em memria primria de classificao interna, enquanto que a classificao de um conjunto de dados no inteiramente armazenado na memria primria denominado classificao externa. Neste curso sero analisadas cinco das principais famlias de algoritmos de classificao interna. Cada uma destas famlias abriga algoritmos que seguem um mesmo princpio na classificao dos dados. Estas famlias so: Classificao por Insero: dividem a tabela em dois segmentos, sendo o 1o ordenado e o 2o no ordenado. A seguir, todos os elementos do 2o segmento vo, um a um, sendo inseridos no 1o segmento. Os principais algoritmos desta famlia so insero direta com busca seqencial, insero direta com busca binria e incrementos decrescentes (shellsort). Classificao por Trocas: efetuam a classificao por comparao entre pares de chaves, trocando-as de posio caso estejam fora de ordem. Os principais algoritmos desta famlia so bubblesort, shakesort, combsort e quicksort. Classificao por Seleo: selecionam, a cada iterao, a chave de menor (ou maior) valor da tabela, colocando-a em sua posio correta (incio ou final) dentro da tabela por permutao com a 5
www.pontodosconcursos.com.br

CURSO ON-LINE DE LGICA DE PROGRAMAO / PROGRAMAO ORIENTADA A OBJETOS / TESTES (TEORIA E EXERCCIOS) PARA O CARGO 25: ANALISTA DE INFORMTICA/DESENVOLVIMENTO DE SISTEMAS MPU/2010. PROFESSOR: LNIN CARNEIRO

chave que ocupa aquela posio. Os principais algoritmos desta famlia so o de seleo direta (selectsort) e o heapsort. Classificao por Intercalao: divide a tabela em dois ou mais segmentos, ordena estes segmentos e depois os intercalam, terminando, ao final, com um nico segmento (toda a tabela) ordenado. O principal algoritmo desta famlia o mergesort. Classificao por Distribuio de Chaves: cada elemento sucessivamente, distribudo em slots (escaninhos)conforme o valor dos dgitos de sua chave. O principal algoritmo desta famlia o radixsort.

IMPORTANTE
Nesta aula abordaremos o mtodo de ordenao chamado mtodo da bolha (bubble sort), que um exemplo de mtodo de ordenao por troca.
2. Mtodo da Bolha (Bubble Sort). Os mtodos que trabalham por troca efetuam a classificao por meio de comparaes entre pares de chaves, trocando-as de posio caso estejam fora da ordem. Dentre todos os mtodos de ordeno, o Bubble Sort , certamente, o mais conhecido e simples. Seu princpio norteador a troca de valores entre posies consecutivas, fazendo com que os valores mais altos (conforme o critrio de ordenao) "borbulhem" para o final do arranjo. Assim, em poucas palavras o mtodo: Considere o seguinte arranjo desordenado: Compara pares de chaves, trocando-as caso no estejam ordenadas; Enquanto houverem pares desordenados, continua o processo.

6
www.pontodosconcursos.com.br

CURSO ON-LINE DE LGICA DE PROGRAMAO / PROGRAMAO ORIENTADA A OBJETOS / TESTES (TEORIA E EXERCCIOS) PARA O CARGO 25: ANALISTA DE INFORMTICA/DESENVOLVIMENTO DE SISTEMAS MPU/2010. PROFESSOR: LNIN CARNEIRO

1) O algoritmo faz a comparao entre os dois primeiros elementos do arranjo (par):

2) J que os dois primeiros elementos esto desordenados (critrio de ordenao crescente), o mtodo determina que suas posies sejam trocadas.

3) O processo continua, tomando-se os dois prximos elementos (segundo e terceiro). Observe que, seguindo este algoritmo, o maior elemento sempre ficar do lado direito do par e ser parte da prxima comparao.

4) Aps esta passagem de comparaes, o maior elemento estar presente na ltima posio do arranjo. Dizemos que ele boubulhou para a ltima posio.

7
www.pontodosconcursos.com.br

CURSO ON-LINE DE LGICA DE PROGRAMAO / PROGRAMAO ORIENTADA A OBJETOS / TESTES (TEORIA E EXERCCIOS) PARA O CARGO 25: ANALISTA DE INFORMTICA/DESENVOLVIMENTO DE SISTEMAS MPU/2010. PROFESSOR: LNIN CARNEIRO

5) Uma vez que o maior elemento est na ltima posio, basta repetir o processo reiniciando as comparaes (volte ao item 1). Caso seja realizada uma passagem sem que exista alguma troca, ento o algoritmo encerra. Se no houve troca, os elementos esto em ordem. Veja: 2 passagem 3 passagem 4 passagem

1. Algoritmo Bolha 2. Constantes 3. TAMANHO = 2000 4. Declarao de variveis 5. vet: vetor[1..TAMANHO] de inteiros 6. indice, temp : inteiro 7. troca: lgico 8. Incio 9. troca = VERDADEIRO 10. Enquanto troca Faa // se troca for falso, interrompe 11. troca = FALSO 12. Para indice de 1 at TAMANHO Faa 13. Se vet[indice] > vet[indice + 1] Ento 14. temp = vet[indice] 15. vet[indice] = vet[indice + 1] 16. vet[indice + 1] = temp 17. troca = verdadeiro 18. Fim-Se 19. Fim-para 20. Fim-Enquanto 21. Fim. 8
www.pontodosconcursos.com.br

CURSO ON-LINE DE LGICA DE PROGRAMAO / PROGRAMAO ORIENTADA A OBJETOS / TESTES (TEORIA E EXERCCIOS) PARA O CARGO 25: ANALISTA DE INFORMTICA/DESENVOLVIMENTO DE SISTEMAS MPU/2010. PROFESSOR: LNIN CARNEIRO

Esta uma implementao bem simples e sem otimizaes. Optei por mostr-la para que voc possa entender claramente os conceitos apresentados. Observe como o algoritmo compara duas posies consecutivas do vetor linha 13 e realiza a troca caso estejam fora da ordem (linhas 14 a 17). Este procedimento de comparar e trocar ocorre tantas quantas forem as posies do vetor, indicadas pela constante TAMANHO. Na linha 12 uma estrutura de repetio para ser executada uma vez para cada posio do vetor. Se, ao final do lao, ao menos uma troca for realizada, ento a estrutura enquanto ser executada novamente. para isto que serve a varivel lgica trocou. Ela, ao iniciar a repetio recebe o valor falso e, se permanecer assim, indica que no houve trocas, pois seu valor s alterado para VERDADEIRO se ocorrer alguma troca. Dessa forma, o lao Enquanto ser interrompido e o algoritmo finalizado. Existem variaes desta implementao que melhoram o desempenho. Por exemplo, poderamos criar uma varivel para indicar o ltimo elemento a ser comparado, j que a cada varredura o ltimo elemento estar na ordem correta e no ser preciso mais compar-lo. Poderamos, ainda, criar outra varivel para indicar a posio em que ocorreu a ltima troca e assim reduzir a posio final de comparao da prxima rodada a esta ltima posio de troca. Se, aps tal troca no ocorrer outra, isto significa que os elementos dali para diante esto ordenados. Estas modificaes melhoram o desempenho do algoritmo em alguns casos, mas no a ponto de elevar a categoria do algoritmo. , sim, um dos algoritmos mais lentos para ordenao de dados. Algumas modificaes relevantes:

9
www.pontodosconcursos.com.br

CURSO ON-LINE DE LGICA DE PROGRAMAO / PROGRAMAO ORIENTADA A OBJETOS / TESTES (TEORIA E EXERCCIOS) PARA O CARGO 25: ANALISTA DE INFORMTICA/DESENVOLVIMENTO DE SISTEMAS MPU/2010. PROFESSOR: LNIN CARNEIRO

Mtodo do Pente (CombSort): melhoramento que compara chaves que distam uma certa distncia h umas das outras. Melhora em relao ao Bubble Sort em at 27x Mtodo da Agitao (ShakeSort): outra variao do mtodo da bolha, onde ao final de cada iterao, outra executada em sentido inverso. H ganho apenas na diminuio do nmero de comparaes. O nmero de trocas o mesmo. Faamos uma breve anlise da complexidade deste algoritmo. Consideremos como itens relevantes para a anlise a quantidade de trocas e de comparaes. Consideremos, nesta anlise, a implementao mais corriqueira do mtodo, onde o tamanho do vetor reduzido a cada iterao. No pior caso, quando a lista est com os nmeros em ordem invertida: Considere N como a quantidade de elementos a serem ordenados. a) N-1 comparaes e N-1 trocas para colocar um elemento na ordem correta. b) N-2 comparaes e N-2 trocas para colocar o 2 elemento no lugar. c) Continua reduzindo at que faa 1 comparao para colocar o ltimo elemento no lugar. d) Ao final disso teremos um total de 1 + 2 + 3 + ... + N-1 comparaes e trocas. e) 1 + 2 + 3 + ... + N-1 = (N-1).N / 2 = (N2 N)/2 comparaes e trocas. f) Ordem quadrtica N2 Isso equivale a dizer que, no pior caso, se temos 5 elementos, sero realizadas 25 comparaes e trocas. Se tivermos 10 elementos, sero 100; se forem 1000, ento sero 1.000.000 de operaes. Observe como 10
www.pontodosconcursos.com.br

CURSO ON-LINE DE LGICA DE PROGRAMAO / PROGRAMAO ORIENTADA A OBJETOS / TESTES (TEORIA E EXERCCIOS) PARA O CARGO 25: ANALISTA DE INFORMTICA/DESENVOLVIMENTO DE SISTEMAS MPU/2010. PROFESSOR: LNIN CARNEIRO

a quantidade de operaes cresce exponencialmente em funo da quantidade de elementos. No melhor caso, quando os elementos esto em ordem, sero realizadas N-1 comparaes e nenhuma troca. Vejamos algumas questes j aplicadas em provas. 01. (FCC - 2009 - TRT - 15 Regio - Analista Judicirio) So algoritmos de classificao por trocas apenas os mtodos a) SelectionSort e InsertionSort. b) MergeSort e BubbleSort. c) QuickSort e SelectionSort. d) BubbleSort e QuickSort. e) InsertionSort e MergeSort. GABARITO: D Comentrio: Veja a tabela abaixo.
Classificao por Insero Mtodo Insero Direta com Busca Sequencial INSERO DIRETA COM BUSCA BINRIA Incrementos Decrescentes (Shellsort) Bolha (BubbleSort) Pente (CombSort) Agitao (ShakeSort) Partio e Troca (QuickSort) Direta (SelectSort) HeapSort MergeSort (Intercalao Simples) RadixSort (Indexao Direta)

Troca

Seleo

Intercalao Distribuio de Chaves

02. (CESPE - 2009 - ANAC - Tcnico Administrativo - Informtica) O desempenho de um sistema computacional depende de vrios fatores, como volume de dados, capacidade do sistema e adequao dos algoritmos, das estruturas de dados e dos objetos que so utilizados para realizar as operaes. Acerca desse assunto, julgue os itens que se seguem. A ordenao de um vetor contendo n elementos, utilizando-se algoritmo de bolha, realiza, no pior caso, mais que n/2 comparaes. ( ) Certo ( ) Errado

11
www.pontodosconcursos.com.br

CURSO ON-LINE DE LGICA DE PROGRAMAO / PROGRAMAO ORIENTADA A OBJETOS / TESTES (TEORIA E EXERCCIOS) PARA O CARGO 25: ANALISTA DE INFORMTICA/DESENVOLVIMENTO DE SISTEMAS MPU/2010. PROFESSOR: LNIN CARNEIRO

GABARITO: CERTO Comentrio: O mtodo da Bolha realiza a ordenao, no pior caso, em n2 comparaes. Imagine se fossem n/2 comparaes. Nem todos os elementos do arranjo seriam comparados! 03. (ESAF - 2005 - Receita Federal - Auditor Fiscal da Receita Federal rea Tecnologia da Informao - Prova 3) Analise as seguintes afirmaes relacionadas a noes bsicas de programao: I. A idia bsica do algoritmo de ordenao bubble sort montar uma rvore com os dados a serem ordenados, percorrer esses dados pela ltima camada denominada folhas e, a cada passagem, comparar cada elemento da folha com o seu sucessor. Se os elementos no esto ordenados deve-se troc-los de posio. Comentrios: Vamos aproveitar apenas este primeiro item da questo. O mtodo bolha no cria rvores. Ele transfere um elemento para sua posio final a cada passagem de comparaes. Bem, chegamos ao final de nossa aula demonstrativa! Espero vocs em breve. timos estudos! Lnin

12
www.pontodosconcursos.com.br

Potrebbero piacerti anche