Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 Prof. Me. Marcelo Santos Profa. Me. Vanessa Lessa Aula 1 Algoritmos CST em Tecnologia da Informação 2 Apresentação da disciplina Plano de Ensino Conteúdo Programático Avaliação Softwares utilizados O que impulsiona o trabalho de um projetista de computadores Código fonte e código objeto Algoritmos Fluxograma O que vamos ver hoje? 3 Ementa Algoritmos. Estrutura de Dados. Introdução à linguagem de programação C para desenvolvimento de softwares básicos e de controle. Fundamentos de programação estruturada. Tipos de dados não estruturados. Objetivos Gerais Apresentar ao aluno as noções mais básicas de programação de computadores através do ensino de algoritmos com o uso de uma linguagem e ambiente de programação. Bibliografia MANZANO, José A. N. G. Algoritmos: técnicas de programação. – 2. ed. – SP: Érica, 2015. SILVA, Eduardo L. Programação de Computadores. - SP, Pearson Education do Brasil, 2015. SOFFNER, R. Algoritmos e Programação em Linguagem C. Saraiva, 2013. Plano de Ensino 4 1. Introdução a Programação; 2. Técnicas básicas de programação; 3. Estrutura de dados; 4. Linguagem C; 5. Funções; 6. Utilização de arquivos, diretórios e discos; 7. Vetores e Matrizes; 8. Funções de entrada e saída. Conteúdo Programático 5 Aulas Teóricas: N559 – Algoritmos – Prova (0 - 10) – Profa. Vanessa Lessa Aulas Práticas: E107 – Algoritmos – Prova (0-7) – Trabalho(0-3) Avaliação 6 Fluxograma Usaremos o Flowgorithm http://www.flowgorithm.org/ Algoritmos Dev C++ (disponível de forma gratuita para download no seguinte link: https://sourceforge.net/projects/orwelldevcpp/). CodeBlocks (https://www.codeblocks.org/downloads/) Sugestões online Compilador online: https://www.onlinegdb.com/online_c_compiler Plataforma de desenvolvimento online: https://repl.it Softwares utilizados 7 Muitas pessoas pensam que a programação de computadores é uma arte misteriosa. Quando lhe perguntam como chegar a um local específico, você responde com um programa, mesmo que você provavelmente o chame de ‘instruções’. Suas instruções podem não funcionar porque você se esqueceu de uma curva ou não se deu conta de um beco que a pessoa iria encontrar no meio do caminho. Programadores de computador chamam esse tipo de erro de bug. A diferença entre o Código Fonte e o Código Objeto é que o Código Fonte é uma coleção de instruções de computador escritas usando um manual legível por humanos a partir de uma linguagem de programação, enquanto o Código Objeto (Object Code) representa uma sequência de instruções em uma linguagem de máquina e é a saída após o compilador converter o código fonte. Código fonte e código objeto 8 Difference between source code and object code (2018) afirma que antes de desenvolver o software deve haver uma compreensão dos requisitos (funcionais e não funcionais). Os analistas obtêm as funcionalidades necessárias do usuário e as documentam. Esse documento contém justamente a especificação dos requisitos do sistema (SRS – System Requirement Specification). Ele fornece a documentação descritiva das funcionalidades necessárias. Com base nesse documento, o sistema poderá ser projetado. O projeto do sistema pode ser feito usando fluxogramas, diagramas de fluxo de dados (DFD – Data Flow Diagrams). As saídas da fase de design pode ser a produção do design de banco de dados, design de processo etc. O que é o código fonte? 9 Após a fase de design ser concluída, esses projetos podem ser implementados usando uma linguagem de programação relevante por um programador. Existem muitas linguagens de programação. Algumas delas são C, C++, C#, Python, Java etc. O programador pode selecionar a linguagem de programação de acordo com o projeto do software e converter os diagramas e documentação em programas de computador. As instruções foram escritas para alcançar as funcionalidades do software necessário usando a linguagem de programação. As instruções têm uma sintaxe semelhante ao idioma inglês e legível por um ser humano. Esta coleção de instruções escritas usando uma linguagem de programação legível por humanos é chamada de código fonte. O que é o código fonte? 10 Difference between source code and object code (2018) apresenta que o código fonte é compreensível por humanos porque possui uma sintaxe semelhante à do inglês. Não é compreensível por um computador ou uma máquina. Os computadores ou máquinas compreendem uma linguagem binária que consiste em zeros e um. Portanto, é necessário converter o código fonte em um formato compreensível pela máquina. O compilador converte o código fonte em uma linguagem binária ou linguagem de máquina. Esse código convertido é conhecido como código objeto que é compreensível pelo computador. (As instruções dadas pelo ser humano são compreensíveis pelo computador a partir dessa conversão). O que é código objeto? Fonte: https://pixabay.com/photos/code-code-editor-coding-computer-1839406/ 11 Um algoritmo é uma sequência de etapas para resolver um problema específico ou pode ser definido como sendo um conjunto ordenado de etapas inequívocas que produz um resultado e termina em um tempo finito. Muitos profissionais da área de programação de computadores (principalmente os mais experientes, cautelosos e cuidadosos) preferem elaborar seus programas com base em um projeto que aborde todos os aspectos técnicos do desenvolvimento, com atenção especial sempre à parte do projeto lógico. O projeto de desenvolvimento de sistemas (conjunto de programas de computador com o mesmo propósito e interligados) segue diversas etapas de um processo normalmente conhecido como análise de sistemas. Algoritmos 12 A partir desse princípio, o algoritmo possui as seguintes características: Input (Entrada): um algoritmo pode ou não exigir a entrada de dados. Output (Saída): espera-se que cada algoritmo produza pelo menos um resultado (processo). Definiteness (Definitividade): cada instrução deve ser clara e inequívoca. Finiteness (Finitude): caso as instruções de um algoritmo forem executadas, o algoritmo deve terminar após um número finito de etapas. Algoritmos 13 Etapa 1 – Defina a entrada de seus algoritmos: muitos algoritmos recebem dados para serem processados, por exemplo, para calcular a área de entrada do retângulo, pode ser a altura e a largura do retângulo. Etapa 2 – Definir as variáveis: As variáveis do algoritmo permitem que você as utilize por mais de um lugar. Podemos definir duas variáveis para altura e largura do retângulo como HEIGHT e WIDTH (ou H & W). Etapa 3 – Descreva as operações do algoritmo: Use a variável de entrada para fins de cálculo, por exemplo. Para encontrar a área do retângulo, multiplique as variáveis ALTURA e LARGURA e armazene o valor em uma nova variável que poderíamos nomear como sendo AREA. As operações de um algoritmo podem assumir a forma de várias etapas e dependendo do valor das variáveis de entrada. Etapa 4 – Saída dos resultados das operações do seu algoritmo: No caso da área do retângulo a saída será o valor armazenado na variável AREA. Caso as variáveis de entrada descreverem um retângulo com uma altura de 5 e uma largura de 2, o algoritmo produziria o valor de 10. Algoritmos - Como escrever algoritmos 14 O algoritmo é uma representação passo a passo de uma solução para um determinado problema, o que facilita para entender todo o contexto, utiliza um procedimento definido e não depende de nenhuma linguagem de programação, por esse motivo é fácil compreender, mesmo sem um conhecimento prévio de programação. Algoritmos Fonte: https://www.shutterstock.com/image-photo/document-management-data-system- business-internet-1416401996 15 De acordo com Walia (2020), o primeiro design do fluxograma foi desenvolvido em 1945, por John Von Neumann. Diferentemente de um algoritmo, o Fluxograma utiliza símbolospara projetar uma solução para um problema. Ao olhar para um fluxograma, você pode entender as operações e a sequência de operações que serão executadas em um sistema. O fluxograma é frequentemente considerado como sendo a planta de um projeto usado para resolver um problema específico. Os símbolos de identificação gráfica representam sempre uma operação ou conjunto de operações similares, podendo ser identificados por um rótulo relacionado à própria ação do símbolo em uso, somente quando necessário. Os símbolos devem ser conectados uns aos outros por linhas de setas que mostrem explicitamente a direção do fluxo a ser executado pelo programa. Fluxograma 16 A estrutura visual do diagrama deve, a princípio, estar orientada no sentido de cima para baixo, da direita para a esquerda e ser desenhada no centro da folha de papel. No entanto, dependendo da situação, esse critério pode ser alterado, o que leva à necessidade de manter o uso das linhas de seta indicando a direção do fluxo. A definição de inicialização e finalização de um diagrama ocorre com o uso do símbolo “terminal” devidamente identificado com um dos rótulos: início, fim, retorno ou a definição de um nome particular, quando for necessário, desde que seguidas as regras de utilização de sub-rotinas (a serem apresentadas em momento oportuno) (MANZANO, 2019. p. 38). O fluxograma é muito importante para desenvolver a compreensão de como um processo será realizado, além de melhorar a comunicação com os membros da equipe (todas as pessoas envolvidas no mesmo processo) e documentar os processos que serão implementados. Fluxograma 17 De acordo com SOFFNER (2013), os algoritmos podem ser representados de forma gráfica, por meio de símbolos padronizados (fluxogramas, também chamados de diagramas de blocos). Segue abaixo uma imagem que representam a forma como os algoritmos são representados. Fluxograma Fonte: Adaptado de: Simbologia para diagramas de blocos. (SOFFNER, 2013. p. 22) Função, procedimento ou sub-rotina Repetição com variável de controle Direção do fluxo de dados Conexão Início ou fim do algoritmo Entrada ou saída de dados Processamento Decisão Saída na tela Saída impressa 18 CALCULAR ÁREA DE UM RETÂNGULO 1. Identificar as entradas 2. Definir as variáveis 3. Descrever a operação 4. Identificar as saídas Fluxograma ALTURA LARGURA AREA = ALTURA X LARGURA AREA ENTRADA PROCESSAMENTO SAÍDA 19 CALCULAR ÁREA DE UM RETÂNGULO 1. Identificar as entradas 2. Definir as variáveis 3. Descrever a operação 4. Identificar as saídas Fluxograma 20 ART, Susan; ELLISON, Robert; FEILER, Peter; EDITED, A.; FRITZSON, Peter. (1992). Overview of Software Development Environments. Disponível em: https://www.ics.uci.edu/~andre/ics228s2006/dartellisonfeilerhabermann.pdf. Acesso em: 25 abr. 2020. BEALE, E. M. L. 1970. Matrix Generators and Output Analyzers. In H.W. Kuhn (ed.), Proceedings of the Princeton Symposium on Mathematical Programming. Princeton University Press, Princeton, NJ, pp. 25-36. BROOKSHEAR, J.G. Computer Science: An Overview. Boston, Mass.: Pearson, 2009. CHARNTAWEEKHUN, Kanis & WANGSIRIPITAK, Somkiat. (2006). Visual Programming using Flowchart. Disponível em: 10.1109/ISCIT.2006.339940. Acesso em: 25 abr. 2020. CREEGAN, J.B. 1985. DATAFORM, a Model Management System. Ketron, Inc., Arlington, VA. DIFFERENCE BETWEEN SOURCE CODE AND OBJECT CODE. 24/01/2018. Disponível em: /https://www.differencebetween.com/wp-content/uploads/2018/01/Difference-Between-Source- Code-and-Object-Code.pdf. Acesso em: 25 abr. 2020. MANZANO, José Augusto N. G. Algoritmos: lógica para desenvolvimento de programação de computadores. 29. ed. São Paulo: Érica, 2019. Referências 21 SLONNEGER, Kenneth; KURTZ, Barry L. Formal syntax and semantics of programming languages: a laboratory. 1995. Disponível em: https://www.mobt3ath.com/uplode/book/book- 26246.pdf. Acesso em: 25 abr. 2020. SOFFNER, R. Algoritmos e Programação em Linguagem C. São Paulo: Saraiva, 2013. SOICHER, Leonard; VIVALDI, Franco. Algorithmic Mathematics. University of London, 2004. Disponível em: http://www.maths.qmul.ac.uk/~lsoicher/ambook.pdf. Acesso em: 28 abr. 2020. STALLINGS, W. Computer Organization and Architecture, Designing for Performance. Boston, Mass.: Pearson. 2010. UNIVERSITY OF CRETE. 2020. Introduction to Data Types and Structures. Disponível em: https://www.csd.uoc.gr/~hy252/html/References/Introduction%20to%20Data%20Types %20and%20Structures.pdf. Acesso em: 28 abr. 2020. WALIA, Ravi K. 2020. Algorithm & Flowchart manual for students. University of Horticulture & Forestry – Índia. Disponível em: http://www.yspuniversity.ac.in/cic/algorithm-manual.pdf. Acesso em: 26 abr. 2020. Referências 22 WIRTH, N. Algorithms and Data Structures. 1985. Disponível em: https://inf.ethz.ch/personal/wirth/AD.pdf. Acesso em: 28 abr. 2020. YANG, Kuo-pao. Chapter 6 – Data Types. 2017. Disponível em: https://www2.southeastern.edu/Academics/Faculty/kyang/2017/Fall/CMPS401/ClassNotes/CMPS40 1ClassNotesChap06.pdf. Acesso em: 27 abr. 2020. Referências 23 BONS ESTUDOS!
Compartilhar