Baixe o app para aproveitar ainda mais
Prévia do material em texto
Introdução à Programação FARRER, H. et. alli. Algoritmos Estruturados. 3a. edição. Rio de Janeiro. LTC – 1999. Capítulo 0 GUIMARÃES, A. M. e LAGES, N. A. C. Algoritmos e Estrutura de Dados. 1a. edição. Rio de Janeiro. LTC, 1985. BAC004-Informática-Teórica-Fabiana C Guedes 2 Introdução A tarefa de processamento de dados consiste em tomar certa informação, processá-la e obter o resultado desejado. BAC004-Informática-Teórica-Fabiana C Guedes 3 Introdução – Esquema do Computador Digital BAC004-Informática-Teórica-Fabiana C Guedes 4 Introdução – Esquema do Computador Digital Unidade de Entrada Traduz informação de uma grande variedade de dispositivos em um código que a unidade central de processamento é capaz de entender. Memória Armazena os dados e os programas que “manipulam” estes dados. Unidade Lógica e Aritmética Nesta unidade são feitos todos os cálculos aritméticos e qualquer manipulação de dados, sejam eles numéricos ou não. BAC004-Informática-Teórica-Fabiana C Guedes 5 Introdução – Esquema do Computador Digital Unidade de Controle É a unidade responsável pelo fluxo dos dados. Ela obtém dados armazenados na memória e interpreta-os. Controla a transferência de dados da memória para a unidade lógica e aritmética, da entrada para a memória e da memória para a saída. Unidade de Saída Os dados processados são convertidos, por esta unidade, de impulsos elétricos em palavras ou números que podem ser “escritos” em impressoras ou “mostrados” em vídeos ou numa série de outros dispositivos. BAC004-Informática-Teórica-Fabiana C Guedes 6 Introdução Sistema Conjunto de objetos, dotado de propriedades características, capazes de se interagir, dentro de um determinado contexto. Estado Conjunto de propriedades relevantes dos objetos de um dado sistema, em um determinado instante. BAC004-Informática-Teórica-Fabiana C Guedes 7 Introdução Ação Evento que ocorre em um período de tempo finito estabelecendo um efeito intencionado e bem definido. Toda vez que um determinado sistema estiver num estado En, e sofrer a aplicação da ação an, será levado ao estado En+1, após um certo intervalo de tempo. BAC004-Informática-Teórica-Fabiana C Guedes 8 Introdução Processo Seqüência temporal de (sub) ações, cujo efeito acumulado é igual ao efeito de um único evento equivalente. Programa “Formulações concretas de algoritmos abstratos baseados em representações e estruturas específicas de dados” (Wirth). BAC004-Informática-Teórica-Fabiana C Guedes 9 Introdução Algoritmo Descrição de um padrão de comportamento (o que fazer) expressa em termos de um repertório finito e bem inteligível de ações primitivas (como fazer), as quais, supõe-se, a priori, sejam possíveis de executar. Programar é basicamente construir algoritmos. BAC004-Informática-Teórica-Fabiana C Guedes 10 Introdução Algoritmo Descrição de um conjunto de comandos que, obedecidos resultam numa sucessão finita de ações. Um algoritmo se destina a resolver um problema: fixa um padrão de comportamento a ser seguido, uma norma de execução a ser trilhada, para se atingir como o resultado final, a solução de um problema. BAC004-Informática-Teórica-Fabiana C Guedes 11 Introdução Algoritmo Ao escrever um algoritmo, começa-se considerando o acontecimento como um processo, dividindo-o em uma seqüência de (sub) ações que deverão ser realizadas sucessivamente. É necessário o uso de um conjunto de mecanismos que permita o desenvolvimento de algoritmos, e que seja conciso, para evitar ambigüidades e libertar o programador do rigor e limitações das linguagens de programação. BAC004-Informática-Teórica-Fabiana C Guedes 12 Elementos de um Algoritmo Alfabeto Letras do alfabeto padrão inglês, maiúsculo e minúsculo; Dez algarismos Outros símbolos +, -, *, /, (), {}, >, <, =, <=, >=, <>, “, ., vírgula, _, :, ;, !, ?, %, &, #, @, \ BAC004-Informática-Teórica-Fabiana C Guedes 13 Elementos de um Algoritmo Comentários Informações acrescentadas a um algoritmo com o objetivo de identificá-lo, explicar a sua função e esclarecer trechos. Ele é um texto ou simplesmente uma frase, que aparece sempre delimitado por chaves. Podem ser colocados em qualquer ponto onde se façam necessários. Forma Geral: {Texto} BAC004-Informática-Teórica-Fabiana C Guedes 14 Elementos de um Algoritmo Pseudo-comandos Descrições genéricas de trechos de algoritmos que ainda deverão ser desenvolvidos, até que possam ser expressos em termos dos comandos e estruturas de controle básicos. Recomenda-se que, ao se desenvolver a idéia expressa na sentença, o pseudo-comando passe a fazer parte do algoritmo como comentário. Forma Geral: Texto BAC004-Informática-Teórica-Fabiana C Guedes 15 Forma Geral de um Algoritmo início {identificação} {abstrações de dados} {definições de dados} {abstrações de comandos} {definições de comandos} fim BAC004-Informática-Teórica-Fabiana C Guedes 16 Um Algoritmo Inicial Fazer um algoritmo para ler dois valores do teclado e mostrar a sua soma na tela. Primeiro Passo: Identificar o objetivo do algoritmo Segundo Passo: Isolar processos Terceiro Passo: Isolar ações consideradas primitivas BAC004-Informática-Teórica-Fabiana C Guedes 17 Um Algoritmo Inicial – Primeiro Passo Identificar o objetivo do algoritmo início ler dois valores inteiros e mostrar sua soma fim Processo 1 Processo 2 BAC004-Informática-Teórica-Fabiana C Guedes 18 Um Algoritmo Inicial – Segundo Passo Isolar processos início {ler dois valores inteiros e mostrar sua soma} ler dois valores inteiros mostrar sua soma fim O que é necessário? O que é necessário? BAC004-Informática-Teórica-Fabiana C Guedes 19 Um Algoritmo Inicial – Terceiro Passo Isolar ações consideradas primitivas início {ler dois valores inteiros e mostrar sua soma} definir um local para armazenar o primeiro valor definir um local para armazenar o segundo valor ler um valor do teclado e armazená-lo ler outro valor do teclado e armazená-lo mostrar a soma dos valores armazenados fim BAC004-Informática-Teórica-Fabiana C Guedes 20 Refinamentos Um algoritmo é considerado completo se os seus comandos forem do entendimento do seu destinatário. Um comando que não for do entendimento do destinatário terá de ser desdobrado em novos comandos, que constituirão um refinamento do comando inicial. BAC004-Informática-Teórica-Fabiana C Guedes 21 Refinamentos Se um algoritmo é formado não apenas por um comando, mas por vários, isto significa que na sua execução não se consideram apenas o estado inicial e o final de uma ação dele resultante, mas que se consideram também estados intermediários que delimitam as ações decorrentes de cada comando. BAC004-Informática-Teórica-Fabiana C Guedes 22 Refinamentos Um algoritmo e os seus refinamentos são formados por comandos, que determinam as ações a serem executadas pelo seu destinatário e por estruturas de controle que determinam a ordem em que os comandos devem ser executados, se devem ser executados ou não e quando devem ser repetidos. BAC004-Informática-Teórica-Fabiana C Guedes 23 Refinamentos Se um comando de um refinamento for um tanto vago, ele poderá, por sua vez, ser desdobrado em novos comandos, produzindo-se o refinamento de um refinamento, e assim sucessivamente. BAC004-Informática-Teórica-Fabiana C Guedes 24 Exemplo de um Algoritmo Descrever um algoritmo que mostre todos osnúmeros da série de Fibonacci menores que um valor dado n. A seqüência de FIBONACCI se define como tendo os dois primeiros termos iguais a um e cada termo seguinte igual a soma dos dois termos imediatamente anteriores. BAC004-Informática-Teórica-Fabiana C Guedes 25 Exemplo de um Algoritmo Algoritmo Fibonacci inicio Escreva os termos de Fibonacci inferiores a n fim BAC004-Informática-Teórica-Fabiana C Guedes 26 Exemplo de um Algoritmo - Refinamento Série de Fibonacci inferiores a n inicio Receba o valor de n Processe os 2 primeiros termos Processe os termos restantes fim BAC004-Informática-Teórica-Fabiana C Guedes 27 Exemplo de um Algoritmo - Refinamento Refinamento Processe os 2 primeiros termos inicio Atribua o valor 1 ao primeiro termo se ele for menor do que n então escreva-o fim se Atribua o valor 1 ao segundo termo se ele for menor do que n então escreva-o fim se fim Só será executado se o valor for menor que n Só será executado se o valor for menor que n BAC004-Informática-Teórica-Fabiana C Guedes 28 Exemplo de um Algoritmo - Refinamento Refinamento de “Processe os termos restantes”: inicio repita Calcule novo termo somando os 2 anteriores se novo termo for maior ou igual a n então interrompa fim se Escreva novo termo fim repita fim Vai repetir de acordo com uma condição Valor maior ou igual a n interrompe BAC004-Informática-Teórica-Fabiana C Guedes 29 Exemplo de um Algoritmo - Completo Algoritmo Fibonacci inicio Receba o valor de n {Processamento dos 2 primeiros termos} Atribua o valor 1 ao primeiro termo se ele for menor do que n então escreva-o fim se Atribua o valor 1 ao segundo termo se ele for menor do que n então escreva-o fim se {Processamento dos termos restantes} repita Calcule novo termo somando os 2 anteriores se novo termo for maior ou igual a n então interrompa fim se Escreva novo termo fim repita fim BAC004-Informática-Teórica-Fabiana C Guedes 30 Algoritmos Estruturados Objetivos da Técnica Facilitar o desenvolvimento dos algoritmos; Facilitar o seu entendimento; Antecipar a comprovação da sua correção; Permitir que o seu desenvolvimento possa ser empreendido simultaneamente por uma equipe de pessoas. BAC004-Informática-Teórica-Fabiana C Guedes 31 Algoritmos Estruturados O desenvolvimento estruturado preconiza que: Os algoritmos sejam desenvolvidos por refinamentos sucessivos. Os sucessivos refinamentos são módulos, que delimitam poucas funções e são os mais independentes possíveis, isto é, conservam poucos vínculos com outros módulos. Nos módulos deve ser usado um número limitado de diferentes comandos e de diferentes estruturas de controle. BAC004-Informática-Teórica-Fabiana C Guedes 32 Fluxograma • Um tipo de representação algorítmica. • Escrever os passos a serem seguidos para resolver o problema • Utiliza símbolos gráficos predefinidos • Mais fácil entendimento do que a narrativa • É necessário aprender a simbologia e o algoritmo não apresenta muitos detalhes BAC004-Informática-Teórica-Fabiana C Guedes 33 Fluxograma • Exemplo: Multiplicar dois números INÍCIO N1, N2 FIM M = N1 * N2 M BAC004-Informática-Teórica-Fabiana C Guedes 34 Linguagens de Programação Para armazenar um algoritmo na memória de um computador e para que ele possa, em seguida, comandar as operações a serem executadas, é necessário que ele seja programado, isto é, que seja transcrito para uma linguagem que o computador possa “enteder”, direta ou indiretamente. BAC004-Informática-Teórica-Fabiana C Guedes 35 Linguagens de Programação Os computadores só podem executar diretamente os algoritmos expressos em linguagem de máquina, que é um conjunto de instruções capazes de ativar diretamente os dispositivos eletrônicos do computador. BAC004-Informática-Teórica-Fabiana C Guedes 36 Linguagens de Programação Logo surgiu a idéia de se escreverem programas em Linguagem simbólica, mais conhecida por Linguagem Assembly ou Linguagem montadora. Um programa em Assembly, para controlar o computador, deve primeiro ser transformado em linguagem de máquina. Como cada comando da linguagem Assembly corresponde a um comando em linguagem de máquina, esta transformação pode ser feita facilmente pelo próprio computador, por meio de um programa chamado montador ou Assembler. BAC004-Informática-Teórica-Fabiana C Guedes 37 Linguagens de Programação Criação de linguagens em que a programação era feita por meio de uma notação matemática e de algumas palavras da língua inglesa, deixando ao próprio computador a tarefa de traduzir este programa para a linguagem de máquina, por meio de um programa chamado compilador. A primeira destas linguagens, que teve ampla aceitação, surgiu em 1957 e é ainda hoje utilizada. Trata-se da linguagem FORTRAN, nome formado com partes das palavras “Formula Translation”. BAC004-Informática-Teórica-Fabiana C Guedes 38 Linguagens de Programação A escolha da linguagem de programação para se usar em um computador depende, antes de tudo, da existência de um programa compilador (que traduza o algoritmo escrito na linguagem escolhida para a linguagem de máquina) ou de um programa interpretador (que interprete cada comando do programa e execute uma série de instruções que a ele correspondem). BAC004-Informática-Teórica-Fabiana C Guedes 39 Exercício Um algoritmo não pode conter um comando como: Escreva todos os termos da sequência de Fibonacci Por quê? BAC004-Informática-Teórica-Fabiana C Guedes 40 Tópicos para Discussão Esquema do Computador Digital Sistema – Estado – Ação – Processo – Programa Algoritmo Comentários Pseudo-comandos Passos do algoritmo Refinamentos Algoritmos Estruturados Linguagens de Programação BAC004-Informática-Teórica-Fabiana C Guedes 41 IDE (Integrated Development Environment) Code::Blocks Baseado no Material de Walter Nagai e Cláudia Akemi Izeki BAC004-Informática-Teórica-Fabiana C Guedes 42 Code::Blocks Ambiente de Desenvolvimento Integrado (IDE) free para a linguagem C/C++. Multiplataforma operacional, ou seja, a mesma versão funciona em sistemas operacionais Linux, Mac e Windows. Pode ser adaptado para funcionar com várias linguagens derivadas de C/C++, mas na disciplinas de BAC004 será utilizada a versão do Code::Blocks que possui um compilador C/C++ embutido similar ao gnu C++ (gcc) do Linux. BAC004-Informática-Teórica-Fabiana C Guedes 43 Sobre o Code::Blocks • IDE para vários • compiladores C/C++ • Open-source • Multiplataforma • Plug-ins • Importa projetos do MS VC++ e DevC++ • Debugger BAC004-Informática-Teórica-Fabiana C Guedes 44 Download e Instalação • O IDE Code::Blocks está disponível no endereço: <http://www.codeblocks.org> • No link “Downloads”, escolha a versão “binary release” – Windows: • codeblocks-12.11-setup.exe (sem compilador) • codeblocks-12.11mingw-setup.exe (com compilador GNU-gcc integrado) BAC004-Informática-Teórica-Fabiana C Guedes 45 Interface Inicial Code::Blocks Management Start Here Log & Others BAC004-Informática-Teórica-Fabiana C Guedes 46 Interface Inicial Code::Blocks Gerenciamento de projetos, símbolos declarados e recursos utilizados nos projetos Um workspace é uma abstração de área de trabalho contendo os arquivos que farão parte do projeto de sua aplicação BAC004-Informática-Teórica-Fabiana C Guedes 47 Interface Inicial Code::Blocks Criar um novo Projeto Abre Projeto Existente Área de textos de logs,busca e depuração BAC004-Informática-Teórica-Fabiana C Guedes 48 Criando um projeto BAC004-Informática-Teórica-Fabiana C Guedes 49 Criando um projeto BAC004-Informática-Teórica-Fabiana C Guedes 50 Criando um projeto BAC004-Informática-Teórica-Fabiana C Guedes 51 Criando um projeto BAC004-Informática-Teórica-Fabiana C Guedes 52 Criando um projeto BAC004-Informática-Teórica-Fabiana C Guedes 53 Projeto Criado Com o projeto criado, pode-se observar a pasta “Source”, onde devem ser inseridos os códigos-fontes da sua aplicação BAC004-Informática-Teórica-Fabiana C Guedes 54 Arquivos e pastas criadas • Na pasta/diretório que você indicou são criadas as pastas: – bin: pasta onde pode ser encontrado executável; – obj: pasta onde são encontrados os arquivos-objeto da compilação de cada arquivo .cpp • O arquivo contendo as especificações do projeto possui extensão .cbp BAC004-Informática-Teórica-Fabiana C Guedes 55 Construção e Execução • Tecla F9 – constrói a aplicação, compilando todos os arquivos, e executa logo em seguida; • Teclas CTRL + F9 – constrói a aplicação; • Teclas CTRL + F10 – executa a aplicação; • Teclas CTRL + F11 – reconstrói a aplicação; • No menu “Build” existem outras opções: limpar pastas, limpar workspace, entre outros. BAC004-Informática-Teórica-Fabiana C Guedes 56 A linguagem C Alguns slides foram retirados do material do professor Wandré Veloso BAC004-Informática-Teórica-Fabiana C Guedes 57 A Linguagem C • É uma linguagem de médio nível, é uma linguagem que não está tão afastada da máquina. • C é uma linguagem portável - um programa desenvolvido para uma máquina pode facilmente migrar para outra sem muitas alterações. • O código gerado para um programa C é mais resumido (otimizado). • Existem versões compiladas e interpretadas de C. As versões compiladas são mais rápidas, mas as versões interpretadas são preferidas quando se quer depurar um programa. BAC004-Informática-Teórica-Fabiana C Guedes 58 Palavras Chaves • Palavras reservadas da linguagem ANSI C: – auto, double, int, struct, typedef, static, break, else, long, switch, char, while, case, enum, register, extern, return, union, const, float, short, unsigned, continue, for, signed, void, default, goto, sizeof, volatile, do, if. BAC004-Informática-Teórica-Fabiana C Guedes 59 Palavras Chaves • Palavras reservadas da linguagem C++ – catch, inline, private, template, class, new, protected, this, delete, operator, public, virtual, friend. • Todas as palavras chaves de C e C++ são minúsculas. • A linguagem faz distinção entre palavras maiúsculas e minúsculas. BAC004-Informática-Teórica-Fabiana C Guedes 60 Biblioteca de Funções e Linkedição • Além das palavras chaves, todo compilador C vem com uma biblioteca padrão de funções que facilitam aos programadores a realização de tarefas como ler uma variável qualquer, comparar cadeias de caracteres, obter a data do sistema operacional. • Existe uma biblioteca básica definida pelo padrão ANSI, mas alguns compiladores C vem com algumas funções extras para aplicações gráficas por exemplo. • As bibliotecas devem ser incluídas nos programas que fazem uso dela e as funções usadas pelo programa serão LINKEDITADOS (ligados) ao programa. BAC004-Informática-Teórica-Fabiana C Guedes 61 Anatomia de um Programa • Todo programa em C segue uma estrutura básica, conforme o esquema apresentado abaixo: [inclusão de bibliotecas] [declaração de constantes e variáveis globais] [declaração dos protótipos de funções] int main ( ) { [corpo do programa principal] } [implementação das funções do programa] BAC004-Informática-Teórica-Fabiana C Guedes 62 Primeiro Programa /* ProgC001.cpp Anatomia de um programa C Autor: Fabiana Data: 08/03/2013 */ # include <iostream> # include <cstdlib> int main( ) { std::cout << "UNIFEI\n"; std::cout << "Campus Itabira\n"; std::cout << "2013"; system("PAUSE > null"); return 0; } Comentário de mais de uma linha Bibliotecas Função Principal Impressão em tela. Fornece uma pausa no sistema, possibilitando a visualização do resultado Retorno BAC004-Informática-Teórica-Fabiana C Guedes 63 Função main • Todo programa C++ deve existir uma única função chamada main. Ela marca o ponto de partida do programa • Se um programa for constituído de uma única função, esta será main • O programa termina quando for encerrada a execução da função main BAC004-Informática-Teórica-Fabiana C Guedes 64 Função main • A função main do código anterior é do tipo int • Significa que ela deverá retornar um número inteiro • A instrução return 0; é que caracteriza esse retorno • Quando o programa dá algum tipo de erro, o retorno da função main pode ser diferente de 0. BAC004-Informática-Teórica-Fabiana C Guedes 65 Chaves • Toda função ou bloco C++ deve começar com uma chave de abertura de bloco { e terminar com uma de fechamento de bloco } • As chaves delimitam o corpo da função BAC004-Informática-Teórica-Fabiana C Guedes 66 Espaços em Branco • O compilador ignora os espaços em branco • Podemos colocar diversas instruções em uma única linha ou até saltar linhas diversas • Exceções: Não usar espaços em textos escritos entre aspas, nomes de funções, operadores, comandos de linguagem e diretivas de pré-processador • Ex: #include <iostream> BAC004-Informática-Teórica-Fabiana C Guedes 67 Diretivas do pré-processador • Não é uma instrução da linguagem C++ (não há ponto-e-vírgula no final) • O pré-processador é um programa que examina o programa-fonte em C++ e executa certas modificações com base em instruções chamadas de diretivas • Toda diretiva é iniciada pelo símbolo # e seu texto deve ser escrito em uma única linha BAC004-Informática-Teórica-Fabiana C Guedes 68 Diretiva #include • Provoca a inclusão de outro arquivo em nosso programa-fonte • Substitui a linha contendo essa diretiva pelo conteúdo do arquivo • A substituição é feita antes de o programa ser compilado • O arquivo iostream contém as definições e declarações necessárias para o uso de objetos stream, no nosso caso cout, e também para o uso da função system() • O arquivo cstdlib contém funções envolvendo alocação de memória, controle de processos, conversões e outras • Se usarmos os sinais < e > o arquivo é procurado somente na pasta INCLUDE do compilador • Se usarmos aspas duplas, o arquivo é procurado primeiramente na pasta atual e depois, se não for encontrado, na pasta INCLUDE BAC004-Informática-Teórica-Fabiana C Guedes 69 Diretiva using • O namespace é uma região que agrega um identificador a todos os nomes declarados dentro dela • Em outras palavras, namespace é um sobrenome • O objeto cout está declarado no namespace std • Para usarmos o cout deveríamos escrever a instrução deste modo: • std::cout << "2013"; • Para que não seja necessário escrevermos std em todas as instruções, usamos o comando • using namespace std; BAC004-Informática-Teórica-Fabiana C Guedes 70 Utilização do using /* ProgC001a.cpp Utilização de using Autor: Fabiana Data: 08/03/2013 */ # include <iostream> # include <cstdlib> using namespace std; int main( ) { cout << "UNIFEI\n"; cout << "Campus Itabira\n"; cout << "2013"; system("PAUSE > null"); return 0; } Diretiva using Não é necessário escrever std::cout BAC004-Informática-Teórica-Fabiana C Guedes 71 Cout – códigos especiais • O objeto cout não quebra a linha no final da impressão, por isso devemos utilizar um código que é formadopelo sinal \ (barra invertida) e outros caracteres. – \n Nova linha – \t Tabulação – \b Retrocesso – \f Salta página – \a Toca o auto-falante (não usar nos computadores da faculdade, senão trava) – \r Volta o cursor para o início da linha – \0 Zero (Null) – \\ \ (barra invertida) – \' Aspas simples – \" Aspas duplas – \xdd Representação hexadecimal de caractere da tabela ASCII BAC004-Informática-Teórica-Fabiana C Guedes 72 Comentários • Têm a função de ajudar na documentação do código- fonte do programa • Existem dois tipos de comentários • De uma linha • int main() //função main • De várias linhas • /*No nosso primeiro programa escrevemos somente uma frase na tela e esperamos o usuário apertar alguma tecla*/ • Não podemos combinar comentários de várias linhas • /* isso não se pode /* fazer*/ BAC004-Informática-Teórica-Fabiana C Guedes 73 Exercício • Modifique o programa PROGC001a colocando o nome do seu grupo e os seus componentes. O nome do grupo e os componentes do grupo devem ficar em linhas diferentes. Slide 1 Slide 2 Slide 3 Slide 4 Slide 5 Slide 6 Slide 7 Slide 8 Slide 9 Slide 10 Slide 11 Slide 12 Slide 13 Slide 14 Slide 15 Slide 16 Slide 17 Slide 18 Slide 19 Slide 20 Slide 21 Slide 22 Slide 23 Slide 24 Slide 25 Slide 26 Slide 27 Slide 28 Slide 29 Slide 30 Slide 31 Slide 32 Slide 33 Slide 34 Slide 35 Slide 36 Slide 37 Slide 38 Slide 39 Slide 40 Slide 41 Slide 42 Slide 43 Slide 44 Slide 45 Slide 46 Slide 47 Slide 48 Slide 49 Slide 50 Slide 51 Slide 52 Slide 53 Slide 54 Slide 55 Slide 56 Slide 57 Slide 58 Slide 59 Slide 60 Slide 61 Slide 62 Slide 63 Slide 64 Slide 65 Slide 66 Slide 67 Slide 68 Slide 69 Slide 70 Slide 71 Slide 72 Slide 73
Compartilhar