Beruflich Dokumente
Kultur Dokumente
ENGENHARIA ELETRÔNICA I
Prof. Dr. Fábio de Sousa Cardoso
fscard@gmail.com
Ementa da Disciplina
• Algoritmo é uma sequencia de operações que devem ser executadas em uma ordem
definida com o propósito de solucionar um determinado problema.
• Esta definição pode caracterizar tanto um receita de bolo com o conjunto de instruções para
montagem de um automóvel. No nosso caso, serviria para definir o conjunto de atividades que o
computador deve desempenhar para solucionar um problema.
• O algoritmo é geralmente representado através de modelos de fácil compreensão pelos
humanos, mas incompreensíveis para o computador. Para que o computador possa executar
um algoritmo, é necessário que este algoritmo seja traduzido para uma linguagem que seja
entendida pelo computador - a linguagem de programação. Ao traduzir-se um algoritmo para
uma linguagem de programação obtém-se um Programa.
Algoritmo
Exemplo de Algoritmo - Boa parte das atividades do dia-a-dia pode ser descrita através de
algoritmos. Por exemplo, o ato de trocar um pneu furado em um carro consiste em:
• Pegar as ferramentas no porta-malas;
• Retirar o estepe;
• Instalar o macaco;
• Levantar o carro parcialmente;
• Afrouxar os parafusos do pneu furado;Retirar o pneu furado;
• Instalar o novo pneu;
• Abaixar o carro
• Apertar bem as porcas;
• Guardar o pneu furado e as ferramentas.
• A sequencia descrita pode ser completada com várias observações.
− O que fazer se o macaco não estiver no porta-malas?
− O que fazer se o estepe também estiver vazio?
− Deve-se sempre puxar o freio de mão antes de executar estas operações.
Algoritmo
• Por outro lado, algumas ações devem ser levadas a cabo após executar a troca do pneu. Por
exemplo: limpar as mãos e consertar o pneu furado.
• Se o responsável pela construção do algoritmo tiver que se preocupar com todas as
possibilidades do ambiente de execução do mesmo, e além disso, com todas as necessidades
de tratamento pós-execução, nenhum algoritmo será completo. Sempre alguma condição
poderá ser esquecida.
• Assim, antes de se construir um algoritmo, deve-se especificar as condições de inicio (dados de
entrada) e as de término (dados de saída). No caso acima, teremos:
− Condição de entrada: um carro com todos os equipamentos de segurança em condições,
parado e freado, com um pneu furado.
− Condição de saída: um carro parado, freado, com todos os equipamentos de segurança em
condições, exceto pelo pneu estepe vazio, com todos os pneus OK.
Algoritmo
• Além disso, alguém pode argumentar que as ações não estão suficientemente detalhadas para
compreensão. Para uma pessoa acostumada a trocar pneus furados as explicações são
suficientes, mas será que um selvagem, que nunca viu um carro antes, saberá utilizar
corretamente um macaco para elevá-lo?
• Assim, a função “levantar o carro” seria melhor descrita como: − Empunhe o cabo da manivela
do macaco; comece a girar a manivela no sentido horário, mantendo este movimento até que o
pneu do carro esteja suspenso a pelo menos 10 cm do chão; solte a manivela.
• Boa parte dos problemas tratados no computados é resolvida por sequencia de instruções
(algoritmos) compostas por um agrupamento de atividades por si só complexas.
Algoritmo
• Da mesma forma que foi necessário detalhar o uso do macaco para o selvagem, também estas
atividades complexas devem ser detalhadas até a um nível em que o computador seja capaz de
reconhecê-las e executá-las.
• Devido à velocidade com que o computador processa cada uma destas instruções
simplificadas, não há problema em descrever e tratar uma atividade complexa através de
milhares de outras atividades básicas.
Representação de Algoritmos
• Devido à pequena capacidade de memorização humana, os procedimentos-componentes
devem ser armazenados em algum lugar, para permitir o acesso rápido e o fácil entendimento.
Para isto, podem ser utilizadas desde folhas de papel até o auxilio de computadores.
• Qualquer que seja o tipo de armazenamento, estes procedimentos/algoritmos devem ser
descritos por algum modelo. Nos exemplos anteriores utilizamo-nos da própria língua
portuguesa, que é um modelo de representação com que estamos acostumados a trabalhar.
• A língua portuguesa traz, contudo, uma série de inconvenientes:
− Certas palavras têm dupla interpretação;
− Exigem-se regras de concordância bastante definidas;
− A pontuação pode alterar completamente o significado de uma frase.
Algoritmo
Representação de Algoritmos
• A língua falada costuma apresentar construções complexas, bastantes distintas da
simplicidade das linguagens entendidas pelos computadores.
• Os modelos de representação de algoritmos devem ser mais restritos, diminuindo a liberdade
de expressão do “construtor de algoritmos”, mas com isso eliminando os problemas de
interpretação, concordância e pontuação. Estes modelos devem ainda utilizar-se da
apresentação gráfica para tornar os algoritmos mais fáceis de serem compreendidos.
• A linguagem de programação C proporciona estas características para a representação de
algoritmos.
Algoritmo
Representação de Algoritmos
• Partes de um Programa em C - Um exemplo bastante conhecido de representação de
programas é o de receitas culinárias. Estas têm a seguinte estrutura:
− Nome da receita;
− Ingredientes: descreve todo o material necessário durante p preparo da receita;
− Modo de preparar: descreve como agrupar e tratar os ingredientes.
• Além disso, toda receita vem com muitos comentários relativos a detalhes que poderiam
passar despercebidos e estragar o resultado final. Os comentários servem para chamar a
atenção do cozinheiro e explicar melhor o porque de cada passo.
Algoritmo
Representação de Algoritmos
• Da mesma forma um bom programa terá 4 partes:
• Além disso, a forma como as linhas do programa estão dispostas fisicamente, identação, deve
ser feita de maneira a tornar a listagem do programa o mais clara quanto possível, permitindo
assim uma boa legibilidade do programa.
Algoritmo
Representação de Algoritmos
• Para que um programa apresente uma boa estética deve-se seguir regras básicas, como:
− Coloque cada comando em uma linha separada;
− Insira uma linha em branco antes de cada seção do programa e sempre que apropriado em
uma sequencia de comandos para destacar blocos de comandos;
− Mantenha-se fiel a identação dos comandos de modo a enfatizar a relação entre palavras
reservadas e comandos que compreendem estruturas de controle, seções de programas, etc.
Processo de Desenvolvimento de Software
- Empresas definem seus próprios processos baseados em técnicas e métodos de acordo com
sua realidade e sua necessidade.
- Várias áreas (e técnicas) estão relacionadas com esses assunto: Engenharia de Software,
Gestão de Projetos , Gestão de Requisitos, Modelagem de Software (UML), Desenvolvimento de
Projetos Ágeis, Scrum, etc.
Processo de Desenvolvimento de Software
Segundo Nível
• Modularização de grandes programas, isto é, divisão do programa em pequenas etapas, que
são módulos ou subprogramas, que nada mais são que um conjunto de comandos agrupados
com a finalidade de executar uma determinada função. A primeira etapa, por onde começa a
execução do trabalho, recebe o nome “Programa Principal”, e as outras são os sub-programas
propriamente ditos, executados sempre que ocorre uma chamada dos mesmos. Para que os
sub-programas possam ser chamados, eles devem receber um nome, e a unidade que deseja
chamá-lo o faz através de seu nome.
• Um sub-programa por sua vez, pode chamar outro sub-programa e assim por diante.
• A modularização possui várias vantagens, como por exemplo:
− Permite a divisão de tarefas em equipes, onde cada módula pode ser elaborado por um
programa diferente;
− Facilita o teste, pois cada módula pode ser testado individualmente e depois incorporado ao
conjunto; − Permite o uso do mesmo módula várias vezes.
Processo de Desenvolvimento de Software
Terceiro Nível
• Elaboração do programa usando dentro de cada módulo um numero limitado de “estruturas
básicas de fluxo de controle”, isto é, instruções.
• Os módulos são construídos por programas. No programa, cada um de seus passos pertence a
uma das três estruturas básicas:
− Operação elementar;
− Operação de controle (Estrutura) especificando uma seleção entre seqüências de passos;
− Operação de controle (Estrutura) especificando a repetição de uma seqüência de passos.
Processo de Desenvolvimento de Software
DOCUMENTAÇÃO:
• Os programas devem ser lidos e entendidos por quem os confeccionou e por outras em toda a
sua vida útil, uma vez que podem necessitar correção, manutenção e modificação. Para que
isto ocorra, eles precisam ser muito bem documentados.
• Um programa bem documentado possui as seguintes características:
− É convenientemente identado de modo a mostrar sua estrutura lógica. Os comandos devem ser
alinhados de acordo com o nível a que pertencem, ou seja, a estrutura na qual eles estão
contidos deve estar destacada;
− Possui comentários que auxiliam a sua compreensão por outras pessoas não responsáveis por
sua elaboração;
− Contém uma declaração de variáveis em um dicionário de dados. O dicionário de dados
especifica formalmente o conteúdo de cada dado utilizado no corpo do programa e indica os
valores que cada um deles pode assumir.