Baixe o app para aproveitar ainda mais
Prévia do material em texto
INSTITUTO FEDERAL DE MINAS GERAIS - Campus Avançado Piumhi - Bacharelado em Engenharia Civil Disciplina: Programação de Computadores Professora: Stella Maria Gomes Tomé 1 INSTITUTO FEDERAL DE MINAS GERAIS - Campus Avançado Piumhi - Bacharelado em Engenharia Civil Disciplina: Programação de Computadores Professora: Stella Maria Gomes Tomé 2 CAPÍTULO 1 1.1 Introdução A essência deste livro enfatiza como alcançar a clareza de programar por meio de comprovadas técnicas de programação orientadas a objetos - este é um livro de "classes de objetos desde o início" - e os não programadores aprenderão a programação de maneira certa. Ao logo dos anos, muitos programadores aprenderam a metodologia de programação chamada programação estruturada, que é a base de toda a linguagem de programação, mas, a mais recente metodologia é a programação orientada a objetos. Ambas são utilizadas, pois se complementam, já que a lógica de manipular objetos é ocasionalmente expressa com programação estruturada. 1.2 O que é um computador? Um computador é um dispositivo capaz de realizar computações e tomar decisões lógicas milhões (e até bilhões) de vezes mais rapidamente que o homem. Por exemplo, muitos computadores pessoais de hoje podem realizar um bilhão de adições por segundo. Uma pessoa operando uma calculadora de mesa pode gastar a vida toda para fazer cálculos e ainda não concluir a mesma quantidade de cálculos que um poderoso computador pessoal pode realizar em um segundo! Os supercomputadores mais rápidos de hoje podem realizar trilhões de adições por segundo. Os computadores processam dados sob o controle de conjuntos de instruções chamados programas de computador. Esses programas orientam o computador por meio de conjuntos ordenados de ações especificadas por pessoas chamadas programadores de computador. Um computador consiste em vários dispositivos referidos como hardware. Os programas que executam em um computador são chamados de software. 1.3 Organização do computador Independentemente das diferenças na aparência física, praticamente todos os computadores podem ser considerados como divididos em seis unidades lógicas ou seções. INSTITUTO FEDERAL DE MINAS GERAIS - Campus Avançado Piumhi - Bacharelado em Engenharia Civil Disciplina: Programação de Computadores Professora: Stella Maria Gomes Tomé 3 1. Unidade de entrada: esta é a seção "receptora" do computador. Ele obtém informações (dados e programas de computador) de dispositivos de entrada e coloca essas informações à disposição das outras unidades para processamento. A maioria das informações é inserida em computadores por meio de dispositivos de entrada, como teclado e mouse. As informações também podem ser inseridas de muitas outras maneiras, incluindo falar com seu computador, digitalizar imagens e fazer seu computador receber informações de uma rede, como a Internet. 2. Unidade de saída: esta é a seção de "envio" do computador. Ela pega as informações que o computador processou e as coloca em vários dispositivos de saída para tornar as informações disponíveis à utilização fora do computador. A maioria das informações enviadas para saída de computadores é exibida em telas, impressas em papel ou utilizadas para controlar outros dispositivos. Os computadores também podem gerar saída de suas informações para rede, como a Internet. 3. Unidade de memória: esta é a seção de armazenamento de relativamente baixa capacidade e rápido acesso do computador. Ela armazena programas de computador enquanto estão sendo executados. Retém informações processadas até que elas possam ser colocadas em um dispositivo de saída pela unidade de saída. 4. Unidade aritmética e lógica (ALU: Arithmetic and Logic Unit). Esta é a seção de "produção" do computador. Ela é responsável pela realização de cálculos, como adição, subtração, multiplicação e divisão. Contém os mecanismos de decisão que permitem ao computador, por exemplo, comparar dois itens da unidade de memória para determinar se são iguais ou não. 5. Unidade central de processamento (CPU). Esta é a seção "administrativa" do computador. Ela coordena e supervisiona a operação das outras seções. A CPU diz a unidade de entrada quando as informações devem ser lidas e transferidas para a unidade de memória, informa à ALU quando as informações da unidade de memória devem ser utilizadas em cálculos e instrui a unidade de saída sobre quando evitar as informações da unidade de memória para certos dispositivos de saída. 6. Unidade de armazenamento secundária. Esta é a seção de armazenamento de alta capacidade e longo prazo do computador. Programas ou dados que não são utilizados ativamente pelas outras unidades, em geral, são colocados em dispositivos de armazenamento secundário, como as unidades de disco, até que sejam INSTITUTO FEDERAL DE MINAS GERAIS - Campus Avançado Piumhi - Bacharelado em Engenharia Civil Disciplina: Programação de Computadores Professora: Stella Maria Gomes Tomé 4 novamente necessários, possivelmente horas, dias, meses ou mesmo anos mais tarde. As informações de armazenamento secundário exigem muito mais tempo para serem acessadas do que as informações na memória principal. Outros dispositivos de armazenamento secundários incluem CDs e DVDs, que podem armazenar centenas de milhões de caracteres e bilhões de caracteres, respectivamente. 1.4 Linguagens de máquina, assembly e linguagens de alto nível Os programadores escrevem instruções em várias linguagens de programação, algumas diretamente compreensíveis por computadores, e outras requerendo passos intermediários de tradução. Centenas de linguagens de computador estão altamente em uso. Essas linguagens podem ser divididas em: 1. Linguagem de máquina; 2. Linguagem assembly; 3. Linguagens de alto nível; Qualquer computador pode entender diretamente somente sua própria linguagem de máquina. A linguagem de máquina é a "linguagem natural" de um computador e como tal é definida pelo seu design de hardware. As linguagens de máquina consistem em geralmente em strings de números (em última instância reduzidas de 1s e 0s) que instruem os computadores a realizar suas operações mais elementares uma de cada vez. As linguagens de máquina são dependentes de máquina (isto é, uma linguagem particular de máquina pode ser utilizada apenas em um tipo de computador). Essas linguagens são muito complexas para os seres humanos. A programação de linguagem de máquina era simplesmente muito lenta, tediosa e propensa a erro para a maioria dos programadores. Em vez de utilizar as strings de números que os computadores poderiam entender diretamente, os programadores começaram a utilizar abreviações em inglês para representar operações elementares. Essas abreviações formaram a base das linguagens assembly. Programas tradutores chamados assemblers foram desenvolvidos para converter os primeiros programas de linguagem assembly em linguagem de máquina a velocidade do computador. O uso de computadores aumentou rapidamente com o advento de linguagens assembly, mas os programadores ainda tinham de utilizar muitas instruções INSTITUTO FEDERAL DE MINAS GERAIS - Campus Avançado Piumhi - Bacharelado em Engenharia Civil Disciplina: Programação de Computadores Professora: Stella Maria Gomes Tomé 5 para realizar até as tarefas mais simples. Para acelerar o processo de programação foram desenvolvidas linguagens de alto nível, em que instruções únicas poderiam ser escritas para realizar tarefas substanciais. Os programas tradutores chamadoscompiladores convertem os programas de linguagem de alto nível em linguagem e máquina. Linguagens de alto nível permitem aos programadores escrever instruções que se parecem com o inglês cotidiano e contêm notações matemáticas comumente utilizadas. Do ponto de vista do programador, obviamente, as linguagens de alto nível são preferíveis à linguagem de máquina e linguagem assembly. O C, C++, .NET, Visual Basic.NET, Visual C++.NET e C#) e o Java estão entre as linguagens de programação de alto nível mais amplamente utilizadas. O processo de compilação de um programa de linguagem de alto nível em linguagem de máquina pode consumir uma quantidade considerável de tempo de processamento. Programas interpretadores foram desenvolvidos pra executar programas de linguagem de alto nível diretamente, embora mais lentamente. Os interpretadores são populares em ambientes de desenvolvimento de programa em que novos recursos são adicionados, e os erros, corrigidos. Depois que um programa está completamente desenvolvido, uma versão compilada pode ser produzida para executar mais eficientemente. 1.5 História do C e do C++ O C++ desenvolveu-se a partir do C, que se desenvolveu a partir das linguagens de programação anteriores, o BCPL e o B. O BCPL foi desenvolvido em 1967 como uma linguagem de escrever sistemas operacionais e compiladores para sistemas operacionais. A linguagem C foi desenvolvida a partir da linguagem B. O C utiliza conceitos importantes de BCPL e B. No início o C tornou-se amplamente conhecido como a linguagem de desenvolvimento do sistema operacional UNIX. Hoje a maioria dos sistemas operacionais é escrita em C ou C++. 1.6 C++ Standard Library Os programas C++ consistem em partes chamadas classes e funções. Você pode programar cada parte que precisar para formar um programa em C++. Mas a INSTITUTO FEDERAL DE MINAS GERAIS - Campus Avançado Piumhi - Bacharelado em Engenharia Civil Disciplina: Programação de Computadores Professora: Stella Maria Gomes Tomé 6 maioria dos programadores em C++ tira proveito das ricas coleções de classes e funções existentes na C++ Standard Library. Portanto, na realidade há duas partes para aprender o "mundo" em C++. A primeira é aprender a própria linguagem C++, a segunda é aprender a utilizar as classe e funções na C++ Standard Library. 1.7 Fortran, Cobol, Ada e Pascal Centenas de linguagens de alto nível foram desenvolvidas, mas somente algumas alcançaram ampla aceitação. O Fortran foi uma linguagem desenvolvida pela IBM Corporation em meados da década de 1950 para ser utilizada em aplicativos científicos de engenharia que exigem complexos cálculos matemáticos. O Frotran ainda é amplamente utilizado, especialmente em aplicativos de engenharia. O Cobol foi desenvolvido no final da década de 1950 por fabricantes de computadores e usuários de computadores no governo norte-americanos e na indústria. O Cobol é utilizado para aplicativos comerciais que existem manipulação precisa e eficiente de grandes quantidade de dados. Grande parte do software utilizado em grande empresas varejistas ainda é programada em Cobol. Uma pesquisa feita na década de 1960 resultou na evolução da programação estruturada, uma abordagem disciplinada para escrever programas mais claros, mais fáceis de testar e depurar e mais fáceis de modificar do que os grandes programas produzidos com a técnica anterior. Um dos resultados mais tangíveis desta pesquisa foi o desenvolvimento da linguagem de programação Pascal, em 1971. Batizada em homenagem a Blaise Pascal, essa linguagem foi adotada para ensino de programação estruturada e rapidamente se tornou a linguagem de programação preferida na maioria das universidades. O Pascal não possui muitos recursos necessários em aplicativos comerciais e governamentais, assim não foi amplamente aceitos nestes ambientes. A linguagem de programação Ada foi desenvolvida sob o patrocínio do Departamento de Defesa dos Estados Unidos durante a década de 1970 e o início da década de 1980. Centenas de linguagens separadas foram utilizadas a fim de produzir os sistemas de software para controle e comando maciços do DOD. O DOD queria uma única linguagem que atendesse a maioria de suas necessidades. A linguagem foi batizada como Ada em homenagem a Lady Ada Lovelace, filha do poeta Lord Byron. Lady Lovelace é considerada a primeira pessoa a escrever um programa de computador INSTITUTO FEDERAL DE MINAS GERAIS - Campus Avançado Piumhi - Bacharelado em Engenharia Civil Disciplina: Programação de Computadores Professora: Stella Maria Gomes Tomé 7 do mundo no início do século XIX (para o dispositivo mecânico de computação conhecido como Máquina Analítica, projetado por Charles Babbage). Uma importante capacidade da linguagem Ada, chamada multitarefa permite que os programadores especifiquem quantas atividades devem ocorrer paralelamente. O Java por meio de uma tarefa única chamada multithreading, também permite que os programadores escrevam programas com atividades paralelas. Embora não faça parte do padrão C++, o multithreading é disponibilizado por várias bibliotecas de classes suplementares. 1.8 Basic, Visual Basic, Visual C++, C# e .NET A linguagem de programação Basic foi desenvolvida em meados da década de 1960, como um meio de escrever programas simples. O principal propósito do Basic foi familiarizar os iniciantes com as técnicas de programação. A linguagem de programação Visual Basic da Microsoft foi introduzida em meados de 1990 para simplificar o desenvolvimento de aplicativos de computador. As últimas ferramentas de desenvolvimento da Microsoft fazem parte de sua estratégia de escopo corporativo para integrar a Internet e a Web em aplicativos de computador. Essa estratégia é implementada na plataforma .NET, que fornece aos desenvolvedores as capacidades necessárias para criar e executar aplicativos de computador que possam executar em computadores distribuídos através da Internet. 1.9 Tendência chave do software: tecnologia de objeto Os aprimoramentos na tecnologia de software emergiam com os benefícios da programação estruturada e as disciplinas relacionadas de análise e design de sistemas estruturados sendo realizada na década de 1970. Mais foi somente quando a tecnologia de programação orientada a objetos se tornou amplamente utilizada na década de 1990 que os desenvolvedores de software sentiram, por fim, que tinham as ferramentas necessárias para dar passos importantes no processo de desenvolvimento de software. O que são objetos e porque são tão especiais? Na realidade, a tecnologia de objetos é um esquema de empacotamento que nos ajuda a criar unidades significativas de software. Estas podem ser grandes e fortemente focalizadas em áreas particulares de aplicativos. Há objetos data, tempo, cheque, pagamento, fatura, áudio, vídeo, arquivo, INSTITUTO FEDERAL DE MINAS GERAIS - Campus Avançado Piumhi - Bacharelado em Engenharia Civil Disciplina: Programação de Computadores Professora: Stella Maria Gomes Tomé 8 registro e assim por diante. De fato, todo substantivo pode ser razoavelmente representado como objeto. 1.10 Ambiente de desenvolvimento C++ típico Vamos considerar os passos na criação e execução de um aplicativo C++ utilizando um ambiente de desenvolvimento C++ (ilustrado na Figura 1.1). Em geral, os sistemas C++ consistem em três partes: um ambiente de desenvolvimento de programa, a linguagem e a C++ Standard Library. Os programas C++, em geral, passam por seis fases: edição, pré-processamento, compilação, linkagem, carregamento e execução.INSTITUTO FEDERAL DE MINAS GERAIS - Campus Avançado Piumhi - Bacharelado em Engenharia Civil Disciplina: Programação de Computadores Professora: Stella Maria Gomes Tomé 9 Figura 1.1: Típico ambiente C++ Fonte: DEITEL, H.M, 2006
Compartilhar