Linguagens de Programação Caderno de Apoio à Cadeira 2000/2001

Tamanho: px
Começar a partir da página:

Download "Linguagens de Programação Caderno de Apoio à Cadeira 2000/2001"

Transcrição

1 Linguagens de Programação Caderno de Apoio à Cadeira 2000/2001 por Nuno Miguel Cavalheiro Marques

2 Universidade Aberta -ii

3 Índice Geral Índice Geral iii Índice de Figuras v Introdução vii 1.1 Objectivos da Cadeira vii 1.2 Sobre a Necessidade deste Caderno vii Módulo de Estudo 1 :Diversidade das Linguagens Objectivos Programas e Linguagens Principais conceitos Tipologia das linguagens Principais Paradigmas Programação Imperativa Programação Orientada por Objectos Programação Funcional Evolução e Comparação das Linguagens de Programação FORTRAN COBOL Outras linguagens dos anos 60: O exemplo do APL Linguagens da Família do PASCAL C Linguagens Orientadas por Objectos Exercícios 10 Módulo de Estudo 2 : Introdução ao C Material de Estudo: Objectivos: Exercícios 11 Módulo de Estudo 3 : Elementos duma Linguagem de Programação Objectivos Tipos e Variáveis Nomes Declarações e Associações Ciclo de Vida de uma Variável Variáveis Locais Estáticas O Tipo de Dados Apontador R-Value e L-Value Reserva Dinâmica de Memória Dangling Pointers (apontadores pendentes) Garbage Colection Expressões e Instruções Tratamento de Excepções Tratamento das excepções em JAVA A Instrução goto Sub-programas: Passagem de Parâmetros 23 Universidade Aberta -iii

4 3.5.1 Passagem por Valor Passagem por Referência Passagem por Valor-resultado Passagem por Nome: Expansão de Macros em C Gestão de Memória Reserva Estática Reserva Dinâmica de Blocos Gestão de Memória nas Linguagens da Família do C O Stack-frame dum Programa C Exercícios 29 Módulo de Estudo 4 : Declarações, Definições e Classes em C Objectivos Material de Estudo Exercícios 31 Módulo de Estudo 5 : Introdução à Programação em Lógica Objectivos Material de Estudo Exercícios 33 Referências 35 Universidade Aberta -iv

5 Índice de Figuras Figura 1 A Máquina de Von Neumann 2 Figura 2 : Quando a função foo termina, a àrea de memória que lhe estava reservada é libertada e ptr_a fica com um dangling pointer. 19 Figura 3 : Gestão da memória num programa C/C Figura 4 : Gestão do stack-frame numa chamada de procedimento em C/C Universidade Aberta -v

6 Universidade Aberta -vi

7 Introdução 1.1 Objectivos da Cadeira Mais do que o estudo de uma única linguagem de programação, a cadeira de Linguagens de Programação da Universidade Aberta vai-se centrar sobre o estudo comparado dos diversos paradigmas e características das linguagens de programação. Assim os alunos vão conhecer os diversos conceitos e técnicas de programação associados aos principais tipos de linguagens de programação (nomeadamente linguagens imperativas, linguagens funcionais, linguagens orientadas por objectos e linguagens lógicas). Na exposição da matéria apresentada, assume-se conhecimento de uma linguagem imperativa, nomeadamente o Pascal (estudada na cadeira de Programação da Universidade Aberta). O conhecimento duma linguagem funcional moderna, como por exemplo o Haskell (estudada na cadeira de Fundamentos da Computação na Universidade Aberta) é também fortemente aconselhado. Como neste momento já deve ser claro para um estudante de informática, a componente prática é indispensável no estudo de qualquer linguagem de Programação. Mais do que uma visão superficial e meramente teórica dos vários paradigmas da programação pretende-se uma visão essencialmente prática. Esta visão só é possível se em vez de se estudarem superficialmente as principais linguagens, nos centrarmos num pequeno conjunto de linguagens modernas, que incorporem todos os paradigmas em estudo. Tal será conseguido através da aplicação dos conceitos teóricos a duas linguagens em concreto o C++ e o Prolog. O estudo da linguagem Prolog será apenas utilizado para ilustrar os paradigmas funcional e lógico, deixando-se o estudo detalhado desta linguagem para uma próxima cadeira. Com o C++ (uma linguagem orientada por objectos híbrida com possibilidade de suporte simultâneo de múltiplos paradigmas), será possível ilustrar como e onde devem ser utilizados os restantes paradigmas e características em estudo. 1.2 Sobre a Necessidade deste Caderno O estudo da cadeira deverá basear-se em 6 meios de estudo principais: 1. Utiliza-se este caderno para guiar o aluno pelo estudo dos dois livros adoptados, complementando-os quando necessário. Este caderno é constituído por diversos módulos de estudo. Em cada módulo de estudo é feita uma pequena introdução aos conteúdos desse módulo, sendo referidos os objectivos didácticos do módulo e os capítulos e páginas dos livros adoptados que cobrem essa matéria. Quando necessário será introduzida a descrição de tópicos em estudo, não cobertos pelos dois livros adoptados. Nesses casos este caderno de apoio será a principal fonte de estudo. Finalmente complementa-se cada secção com um pequeno conjunto de exercícios de autoavaliação para o aluno. 2. O livro: Problemas e Linguagens de Programação por Helder Coelho, LNEC, Neste livro é apresentado um estudo comparativo e uma perspectiva histórica sobre as principais linguagens de programação. São abordados os principais conceitos por detrás dos paradigmas imperativo, funcional e lógico. 3. O livro: Programação em C++, conceitos básicos e algoritmos por Pimenta Rodrigues, Pedro Pereira e Manuela Sousa, FCA- Editora de Informática. Servirá simultaneamente para introduzir o paradigma das linguagens orientadas por objectos e abordar a principal linguagem utilizada na cadeira: o C++. Esta linguagem híbrida, servirá os seguintes objectivos: 1. reforçar os conceitos adquiridos na cadeira de programação com as linguagens imperativas, através duma breve introdução às linguagens da família do C; 2. a utilização de uma linguagem próxima do sistema operativo como o C/C++, permitirá igualmente compreender a forma de implementação dos principais paradigmas das linguagens de programação; 3. ilustrar o paradigma dos ADT e introduzir as linguagens orientadas por objectos através do estudo de uma linguagem real; 4. permitir aos alunos dominarem os principais conceitos por trás duma das mais populares e poderosas linguagens de programação: o C++; 5. o estudo da linguagem PROLOG permitirá compreender as principais características associadas à programação em lógica. Universidade Aberta -vii

8 4. Um conjunto de exercícios de auto-avaliação, bem como outra informação complementar para a cadeira estarão brevemente disponíveis, em fase experimental, via Internet na página da cadeira. Quando responder aos exercícios na página Internet, receberá, automaticamente a correcção dos seus exercícios bem como uma informação sobre o seu conhecimento actual do módulo em causa. 5. Um trabalho de desenvolvimento, com entrega facultativa. Parte do exame da cadeira incidirá sobre o estudo deste trabalho. 6. O habitual conjunto com 2 testes formativos e respectivos relatórios, a enviar em breve. Outras referências aconselhadas, são os livros: "Comparative Programming Languages", 2 nd Edition. Leslie B. Wilson e Robert G.Clark, Addison-Wesley, ISBN Este livro aborda, de uma forma comparada, os principais conceitos por trás das diversas linguagens de programação. "Programming Languages, Concepts and Constructs", Ravi Sethi, 1 st Edition, Addisson-Wesley, September ISBN , que por vezes serviu de guia em algumas das matérias expostas. Universidade Aberta -viii

9 Módulo de Estudo 1 : Diversidade das Linguagens A utilização de uma linguagem de programação é por excelência a forma de especificar o funcionamento de um computador. Consoante os problemas a serem tratados, as melhores formas de especificação e tratamento podem ser distintas. Se incluirmos linguagens específicas e em estudo, não surpreende pois que existam, actualmente, mais de um milhar de linguagens de programação e dialectos distintos. Mais ainda, por todo o mundo comissões internacionais e grupos de investigação continuam a criar, desenvolver, melhorar ou substituir linguagens de programação diferentes. É pois normal a um informático ter contacto com um número elevado de linguagens de programação distintas. Para um estudante que após um esforço inicial já domina razoavelmente uma ou duas linguagens de programação, este panorama pode parecer desanimador: dada a constante evolução da informática, como conseguir rapidamente dominar uma nova linguagem de programação? Qual a melhor linguagem a escolher para realizar uma determinada tarefa? Para quem verificou como linguagens de programação distintas podem ser diferentes (compare-se por exemplo o Pascal ou o Haskell), pode à partida parecer uma missão impossível tentar aprender a trabalhar com qualquer nova linguagem, que pode ainda nem existir. Este não é no entanto o caso, pois embora algumas linguagens possam parecer à partida muito diferentes, cedo se começam a encontrar as semelhanças entre as diversas linguagens. Esta caracterização será mais fácil quando enquadrada numa perspectiva histórica de evolução das várias linguagens. Só assim se compreendem as motivações, funções e objectivos da criação dos vários paradigmas relativamente às linguagens de programação e dentro destes das especificidades das várias linguagens. Nesta secção vamos tentar comparar as diversas linguagens de programação entre si, apresentando inicialmente uma caracterização em termos de tipo, prestando particular atenção aos vários paradigmas da computação utilizados. Para auxiliar a compreensão da razão de ser de certas características e do porquê de certas semelhanças será ainda necessário efectuar o estudo da evolução das principais linguagens de programação. 1.1 Objectivos Os objectivos deste módulo são: 1. Compreender os principais conceitos por trás de uma linguagem de programação. 2. Desenvolver a capacidade para distinguir as principais formas de classificação de linguagens. 3. Introduzir os principais paradigmas da programação, associado-os às principais linguagens. 4. Saber associar os diversos paradigmas de programação com as linguagens que lhe deram origem. 5. Identificar os principais erros de estruturação e associar a sua solução com o aparecimento de uma dada linguagem. 6. Dada uma tarefa e um conjunto de linguagens de programação, saber quais as linguagens mais apropriadas para resolver esse problema. 1.2 Programas e Linguagens Segue-se um resumo dos temas abordados no capítulo 1 do segundo livro adoptado (páginas 1 a 24 de [RodriguesPereiraSousa98]) e da secção "Programas e Linguagens" (secção 3) do 1º livro adoptado (páginas 17 a 26 de [Coelho84]). Com este resumo pretende-se auxiliar o aluno no estudo dos livros adoptados, realçando os pontos principais e adicionando alguma informação, onde relevante. A leitura deste resumo não dispensa de forma alguma a leitura das referidas secções Principais conceitos Os seguintes conceitos são muitas vezes utilizados nos livros adoptados e a sua compreensão é essencial na compreensão da forma de funcionamento de um computador e na compreensão do que é e de como funciona uma Universidade Aberta

10 linguagem de programação. Máquina de von Neumann: Abstracção do computador moderno. É utilizada para ilustrar o funcionamento de um computador. É constituída por uma memória capaz de guardar bytes de informação devidamente endereçados; uma unidade de controle que executa instruções de controle do estado da máquina (incluindo qual o endereço da próxima instrução a ser lida da memória); uma unidade aritmética que executa operações sobre os dados em memória e uma unidade de entrada/saída, que interage com o exterior. Figura 1 A Máquina de Von Neumann A programação da unidade de controlo da máquina de Von Neumann pode apenas ser efectuada com um conjunto muito limitado e simples de instruções. Uma hipótese de um conjunto de instruções base para a máquina de von Neumann poderia ser: Soma e subtracção de um endereço de memória na posição i, com o acumulador: A := A+M[i]; A:=A-M[i]; Soma e subtracção do valor endereço dado pelo endereço de memória na posição i, com o acumulador: A := A+ [M[i]]; A:=A-[M[i]]; Multiplicação e divisão do acumulador por 2: A := A*2; A:= A div 2; Mover o conteúdo do acumulador de e para memória: A :=M[i]; M[i] :=A; Executar as instruções situadas a partir do endereço i de memória: Goto i (PC := i) Se o valor do acumulador for maior ou igual a zero, executar as instrução situadas a partir do endereço de memória i: if( A>=0 ) goto i Todos os programas executados num computador têm de ser codificados num conjunto de instruções similares a estas. Os programas assim codificados dizem-se em linguagem máquina ou código máquina. Compilador: Um compilador é um programa, capaz de ler um ficheiro (normalmente de texto) contendo um programa escrito numa dada linguagem de programação e gerar um programa em linguagem máquina que seja equivalente ao programa inicial. Para tal, o compilador deve analisar o programa lido quer sintacticamente (i.e. verificar se a sua escrita está de acordo com uma gramática bem definida) quer semanticamente. A secção 2.3 do livro [RodriguesPereiraSousa98] (páginas 31 a 36) refere um compilador para a linguagem C++. Interpretador: Tal como o compilador, um interpretador analisa sintáctica e semanticamente uma dada linguagem de programação. No entanto, em vez de converter o programa que lhe é dado em linguagem máquina, o interpretador executa o programa que lhe é dado, passo a passo. Assim é o interpretador que controla o comportamento do programa, facilitando a interacção com o utilizador e a reescrita do programa (visto que o Universidade Aberta

11 programa não tem de ser recompilado sempre que o desejamos executar). Linguagens de programação: Linguagens formais utilizadas na descrição de mecanismos abstractos. Têm como objectivo descrever e comunicar um processo computacional. Podem ser utilizadas para estudar os algoritmos e para os definir de modo não ambíguo Tipologia das linguagens Há diferentes formas para representar e relacionar as linguagens de programação entre si. a) Por níveis: disposição hierárquica, segundo o seu nível e âmbito. O nível denota um índice da facilidade do programador enunciar a solução dos seus problemas. Linguagens de baixo nível: O código máquina e a sua representação em Assembler. Linguagens de alto nível: algorítmicas, imperativas, prescritivas, procedimentais (apoiadas sobre processos), determinísticas e quantitativas. Papel determinante do cálculo numérico. Exs: FORTRAN, PASCAL e SIMULA. Linguagens de muito alto nível: Idealmente, não algorítmicas 1, declarativas, não determinísticas e qualitativas. Vocacionadas para o processamento simbólico (como cálculo formal, manipulação de fórmulas algébricas, processamento de língua natural), conduzindo a programas mais abstractos. O programador descreve o problema em função de relações sobre objectos. Com uma descrição precisa o computador resolverá o problema sem qualquer outra intervenção. Exs: SQL, PROLOG, Haskell. Devido ao facto de ser ainda hoje uma das principais linguagens funcionais alguns autores incluem igualmente o LISP nesta família; isto apesar desta linguagem ser fortemente algorítmica e já ter sido inclusivamente utilizada na construção de um sistema operativo. b) Por Árvores genealógicas Desenha-se a rede das linguagens de programação destacando as suas ligações implícitas e explícitas. As principais árvores dividem-se pelos paradigmas da programação: imperativo, orientado por objectos, funcional e lógico. c) Gerações As linguagens agrupam-se de acordo com um processo de mutações e selecções tecnológicas. Este processo é descontinuo. É usual a seguinte classificação em 5 gerações: 1ª Geração: Linguagem binária, linguagens máquina e Assembly. 2ª Geração: Utilizando compiladores (i.e. baseadas em sistemas que lêem o programa numa destas linguagens e o "traduzem", ou compilam, para linguagem binária): COBOL, BASIC, RPG, FORTRAN IV/V, ALGOL 58/60/68/W. 3ª Geração: Linguagens procedimentais: PL/1, PASCAL, FORTRAN 8X, APL, C, SIMULA, BLISS. 4ª Geração: Geradores de programas (i.e. produzem programas noutras linguagens). A linguagem ADA. Linguagens de interrogação (p.ex. para bases de dados):sql, QBE. 5ª Geração: Linguagens de específicação de problemas: LISP, PROLOG. d) Outras Formas de Classificação Eis outras formas de classificação referidas no texto, úteis essencialmente para identificar quando e como se deve optar por uma linguagem ou por outra. Classificação por domínios de aplicação: científicas: ALGOL, BASIC, FORTRAN comerciais: COBOL 1 - De facto é muito difícil criar uma linguagem de programação não algorítmica. Mesmo nas linguagens desta família a programação, muitas vezes, acaba por ser efectuada utilizando um estilo algorítmico. Universidade Aberta

12 processamento de listas: LISP gerais (ou fins múltiplos): ALGOL68, PASCAL, SIMULA 67 Inteligência Artificial: PROLOG Ciências Sociais: SPSS. Planeamento de espaços: PROLOG Programação de Sistemas: C Classificação por modos de processamento: interactiva: o programador pode efectuar alterações ao programa enquanto este é executado: o programa não é compilado mas sim interpretado. O BASIC foi pioneiro neste conceito. Exs: BASIC, APL, LISP, PROLOG. Por lotes (ou programas compilados). Exs: FORTRAN, COBOL, ALGOL, PASCAL. Classificação por categorias: Se a linguagem é específica para um dado fim, ou se pelo contrario, pretende ser o mais universal possível. Definem-se duas categorias principais: 1. Fim geral: PL/1, PASCAL, BASIC, FORTRAN, C. 2. Fim especifico: COBOL, LISP, PROLOG. Classificação por número de utilizadores: Sobre o número de utilizadores que houve/há de cada linguagem num dado momento, ou pela percentagem do código existente numa dada linguagem. 1.3 Principais Paradigmas Paradigmas (estilos de programação) diferentes são adequados para objectivos diferentes Programação Imperativa Linguagens que permitem descrever a resolução de um problema através de uma série de tarefas elementares (comandos) que o computador pode compreender e executar. A sequência de comandos define o processo (ou procedimento) a seguir e permite a mudança de estado de variáveis de atribuição. Implementada com base na máquina de von Neumann. As variáveis do programa (e o número da instrução em execução) descrevem o estado da computação a qualquer instante. Principais problemas: Não são adequadas à computação em paralelo (pois estão baseadas em execução sequencial). Baixa produtividade na programação: Grande esforço do programador no controlo do estado do programa (valores das variáveis). São exemplos clássicos o FORTRAN, COBOL, PASCAL e C. No segundo livro adoptado ([RodriguesPereiraSousa98]), na página 17, são identificados mais alguns paradigmas, que estão normalmente associados ao paradigma imperativo, nomeadamente o paradigma procedimental (decomposição do problema em procedimentos), o modular e a abstracção de tipos de dados. Na programação modular o programa divide-se em módulos associados aos vários dados que é necessário tratar. Para cada um desses módulos constróem-se procedimentos que acedem aos dados desse módulo, por forma a impossibilitar o acesso a esses dados pelo resto do programa (i.e. encapsulamento dos dados). A abstracção dos tipos de dados possibilita um passo para além da simples modularidade: em vez de se terem procedimentos associados aos dados, constróem-se procedimentos associados ao tipo dos dados. Ambos estes paradigmas são fundamentais para a programação orientada por objectos. E serão estudados em profundidade nos próximos módulos Programação Orientada por Objectos O programa é organizado em função de objectos, que contêm não só as estruturas de dados (i.e. os registos do PASCAL) mas também as funções que sobre eles agem. A comunicação entre objectos é feita através de mensagens (que activam as funções de um objecto). Mensagens normalizadas permitem que diferentes classes de objectos possam responder aos mesmos tipos de mensagens. Os objectos são normalmente organizados numa rede podendo os objectos mais especializados herdar as propriedades (i.e. funções e campos) dos objectos mais genéricos (herança). Este paradigma está particularmente bem adaptado à construção de interfaces gráficas, conforme é ilustrado em Universidade Aberta

13 [RodriguesPereiraSousa98], na página 19,20. São exemplos clássicos de linguagens com este paradigma o SMALLTALK e o SIMULA. O C++ e o JAVA são linguagens que utilizam o paradigma da programação orientada por objectos, embora também deixem ao programador a possibilidade de ignorar o paradigma da programação orientada por objectos e utilizar apenas o paradigma da programação imperativa. Por esta razão, estas linguagens são por vezes chamadas de linguagens híbridas entre linguagens imperativas e linguagens orientadas por objectos Programação Funcional Descrevem o conhecimento de um problema através da declaração de funções (instruções funcionais de alto nível). As funções são aplicadas recursivamente ou por composição e têm como resultado valores. A parte algorítmica e procedimental é (idealmente) suprimida: modela-se apenas as formulações matemáticas da computabilidade. São exemplos clássicos o LISP ou o APL. A linguagem Haskell é também uma linguagem funcional. a) Programação lógica O problema é descrito em função de afirmações (asserções ou factos) e de regras sobre os objectos. Procurou-se possibilitar a total supressão da parte algorítmica e procedimental: cabe ao interpretador (ou compilador) encontrar os caminhos ou processos de resolução do problema. A programação em lógica estende o paradigma funcional. Programas e dados aparecem em conjunto. A programação lógica está normalmente associada à linguagem PROLOG. 1.4 Evolução e Comparação das Linguagens de Programação Para além de dar ao aluno uma perspectiva histórica da evolução das linguagens de programação, há mais três razões principais para efectuar este estudo: as linguagens actualmente existentes são mais facilmente explicáveis se analisarmos a sua evolução. De igual forma, a análise dos erros feitos no passado permitir-nos-á compreender melhor porque devemos evitar comete-los de novo quando construímos o nosso próprio código. Por último, ao apresentar a forma como estes são implementados em diversas linguagens e as vantagens que a sua inclusão apresenta na escrita do código, este estudo permite exercitar a comparação de várias linguagens e motivar o estudo dos vários paradigmas da programação, O resumo que se segue complementa a leitura das secções "Linguagens de Programação: Evolução e Conceitos" (secção 4 e 6), "Comparação de Algumas Linguagens de Programação" (secção 5) e "Escolha da Linguagem mais Apropriada" do 1º livro adoptado (páginas 27 a 60 de [Coelho84]), complementada relativamente ao estudo das linguagens C e C++ com a secção "As Linguagens C e C++" (secção 1.5, páginas 21 e 22 do segundo livro adoptado, [RodriguesPereiraSousa98]) FORTRAN Em 1954 surge o FORTRAN (iniciais de FORmula TRANslator), criado por John Backus. Foi a primeira linguagem de alto nível. Antes do FORTRAN a programação tinha de ser feita em ASSEMBLY, uma linguagem de programação simbólica, cujo único fim era tornar legível para um humano o código de máquina. Assim enquanto a linguagem ASSEMBLY associava uma instrução simbólica directamente a uma instrução máquina do processador, o FORTRAN compilava (ou traduzia) 1 expressão ou formula de base matemática (representada por 1 instrução FORTRAN) para um conjunto de instruções máquina. Na década de 60 o FORTRAN, entretanto redesenhado, nomeadamente recebendo influencias do ALGOL, torna-se cada vez mais utilizado, chegando a ser considerado como uma normas para as aplicações de cálculo científico. No fim da década de 70, inicio da década de 80, o FORTRAN 77 apresenta-se como uma linguagem de excelência para os cálculos numéricos e científicos. Existem no entanto duas objecções principais aos programas em FORTRAN: Universidade Aberta

14 1. É difícil escrever programas legíveis. É usual a aplicação de alguns truques difíceis de compreender. 2. É difícil estruturar os programas de forma lógica. Um dos problemas com as versões do FORTRAN anteriores ao FORTRAN 77 era a necessidade de utilizar a instrução GOTO. Esta instrução provoca um salto da linha de execução corrente para outra secção do código. Os problemas surgem porque é muitas vezes necessário associar esta instrução à instrução IF, criando um salto condicional para outra secção do código. Torna-se pois necessário construir cursos de acção demasiado complicados para serem lembrados em detalhe. A instrução GOTO, utilizada desta forma, leva pois a programas ilegíveis. Outro dos problemas com as primeiras versões dos programas em FORTRAN é o facto das variáveis serem seriamente limitadas: todas as variáveis eram visíveis em qualquer parte do programa. Este aspecto exige uma constante atenção do programador aos nomes das variáveis e facilita a introdução de erros no código difíceis de detectar (devido à utilização, por erro, de uma dada variável, num dado contexto, levar à alteração do valor dessa variável, noutro contexto um significado totalmente diferente). Finalmente, a ausência de recursividade no FORTRAN77 levantava por vezes sérias dificuldades à estruturação do código e à representação de certos problemas. Devido a ter sido a primeira linguagem de programação de alto nível foi desenvolvido um extenso trabalho e conjunto de bibliotecas para cálculo numérico em FORTRAN. Apesar da linguagem FORTRAN não ter ficado indiferente aos desenvolvimentos das ciências da computação e da maioria das recentes versões do FORTRAN (nomeadamente o FORTRAN 9x) resolverem os problemas aqui referidos, a herança do passado, que torna o FORTRAN apetecível, implica igualmente a ilegibilidade do código: a maioria das rotinas FORTRAN foi desenvolvida em versões antigas do FORTRAN, e logo têm os problemas aqui descritos. Mesmo assim, em certos casos, a solução mais prática continua a passar por se recorrer à utilização do FORTRAN COBOL Encomendada pelo Departamento de Defesa dos EUA em 1959, o COBOL foi considerado como uma norma para o desenvolvimento de aplicações comerciais, sendo uma das linguagens mais utilizadas de sempre. O COBOL é uma linguagem preparada para a manipulação de grandes ficheiros, por programas que permanecem praticamente inalterados. O principal conceito introduzido por esta linguagem foi o da importância da descrição dos dados independentemente do computador utilizado. Era assim fácil gerar os dados num computador e tratá-los noutro. Os programas em COBOL podem pois ser vistos como percursores dos modernos sistemas de base de dados. O COBOL apresenta uma sintaxe muito próxima do inglês, o que facilita a leitura do programa para alguém que não domine a linguagem. Sendo desenhada com vista ao tratamento de grandes volumes de dados, as possibilidades de cálculo científico desta linguagem são muito básicas. Assim, em aplicações exigindo um grande número de cálculos seria preferível a utilização de outra linguagem, como por exemplo o FORTRAN. Estas características ficam claras após uma breve análise da linguagem. Relativamente à sua sintaxe um programa COBOL apresenta-se dividido em quatro divisões: Identificação do nome do programa fonte (a IDENTIFICATION DIVISION). Contendo o nome do programa, o seu autor e data de criação. Características que facilitam a utilização do programa num meio empresarial. Ambiente (a ENVIRONMENT DIVISION) específica o tipo de computador que compilará e o tipo de computador que executará o programa fonte. Uma secção para a descrição dos dados (a DATA DIVISION), que específica o formato dos dados a serem utilizados ou preparados pelo sistema. Procedimento do programa (a PROCEDURE DIVISION), que específica qual o tratamento a dar aos dados. O COBOL pode ser considerado como o precursor das modernas linguagens de bases de dados, nas quais o SQL tem vindo a ganhar relevância. De facto, actualmente verifica-se que os primeiros sistemas COBOL tem vindo gradualmente a ser substituídos por sistemas de gestão de bases de dados em SQL. Mas nem todos os problemas são resolvidos utilizando sistemas de bases de dados. Outra das tendências no software desenvolvido comercialmente passa pela utilização de pacotes proprietários adaptados para as principais tarefas da empresa. Actualmente algumas empresas especializam-se no aconselhamento e fornecimento de pacotes de software altamente configuráveis, muitas vezes por recurso a uma linguagem de programação própria. Universidade Aberta

15 No entanto, tal como no caso do FORTRAN, a grande popularidade que esta linguagem teve no passado, nomeadamente na área comercial, reflecte-se em que ainda hoje exista um elevado número de aplicações desenvolvidas em COBOL: muitas vezes pode ser necessário o desenvolvimento e alteração de programas COBOL. Mais ainda, as técnicas e módulos de programação que se aplicam nos pacotes proprietários dos dias de hoje, são facilmente aprendidas utilizando a programação em COBOL. LISP O LISP surge em 1959, por proposta de John McCarthy no MIT. Trata-se de uma linguagem essencialmente virada para problemas de inteligência artificial i.e. tendo como objectivo a manipulação de expressões simbólica complexas. Cria uma perspectiva totalmente nova de ver as linguagens de programação, sendo a primeira linguagem funcional. Assim, veio introduzir uma série de conceitos novos numa linguagem de programação, muitos dos quais só nos anos 70 foram reconhecidos como imprescindíveis: Dados e programas são representados de forma uniforme. Utiliza a lista como estrutura de dados unificadora. Forma prefixa dos operadores. Introduz a recursão como estrutura de controle fundamental. Utiliza garbagge collection para gestão da memória, i.e. as estruturas em memória são geridas de forma automática, sendo as estruturas de dados não necessárias ao programa apenas removidas quando necessário, de forma dinâmica durante a execução do programa. Os principais elementos desta linguagem são a lista (constituída por átomos alfanuméricos ou numéricos, ou outras listas) e a recursividade. O LISP está incluído no grupo das linguagens funcionais. O objectivo destas linguagens é, idealmente, que o utilizador deixe de ser obrigado a descrever com precisão como o resultado deve ser computado, concentrando-se no que deve ser calculado: o resultado. Tanto em LISP como em PROLOG os dados e o próprio programa são representados da mesma forma, sendo fácil ao programa alterar os seus dados, ou mesmo alterar-se a si próprio. Devido a um grande conjunto de funções tanto o LISP como o PROLOG conseguem realizar rapidamente tratamentos bastante complicados. Nesta cadeira iremos dedicar um pouco mais de atenção ao estudo da linguagem PROLOG devido à riqueza das suas técnicas de programação, essenciais para compreender devidamente quer conceitos comuns à programação imperativa como seja o conceito de lista, de operador e de recursão, quer conceitos introduzidos por estas linguagens, como seja o conceito de gramática formal, análise sintáctica ou de unificação Outras linguagens dos anos 60: O exemplo do APL Com a criação da norma BNF, nos anos 60 assistiu-se a uma explosão no número de linguagens de programação. Uma das linguagens de programação mais original deste período foi o APL. A linguagem APL (A Programming Language), foi criada em 1962 por Kenneth Iverson. O objectivo do APL foi tornar a manipulação das matrizes e vectores tão fácil como a de simples números. Esta linguagem veio propor uma nova notação para a computação, incorporando muitos conceitos da matemática, nomeadamente através da utilização de operadores de muito alto nível. Esta característica veio permitir a escrita mais compacta dos algoritmos, e possibilitou novas formas de olhar alguns problemas. No entanto, este é também um dos grandes problemas com o APL. Os programas ao serem escritos de forma muito compacta e de forma extremamente críptica (p.ex. tendo os programas de ser lidos da direita para a esquerda), comprometem a sua legibilidade Linguagens da Família do PASCAL a) ALGOL Após o aparecimento do FORTRAN, surge a necessidade de formalizar os conceitos por trás da sintaxe das linguagens de programação de alto nível. Para se poder efectuar esta formalização foi criada a notação BNF (de Backus-Naur Formalism, já estudado na cadeira de Programação da Universidade Aberta, capítulo 2 de [Martins97]). Enquanto notação, o BNF veio permitir a construção de regras gramaticais com uma notação rigorosa e formal. Esta notação foi utilizada na definição da sintaxe para uma nova linguagem: o ALGOL, e veio possibilitar a realização dos trabalhos teóricos que criaram a ciência da computação. Universidade Aberta

16 Surgindo a primeira específicação em 1958, o ALGOL 58 foi a linguagem percursora do PASCAL e do ADA. O ALGOL 58, veio clarificar e adicionar novas características relativamente FORTRAN54. Com o ALGOL58, realçaram-se os seguintes aspectos de uma linguagem de programação: Era um linguagem algorítmica i.e. capaz de descrever com facilidade um algoritmo. Era (tal como o FORTRAN) uma linguagem imperativa. Criou a noção de bloco (BEGIN... END, tal como no PASCAL) e procedimento. Criou o conceito de validação de tipos. Criou a noção de escopo lexical i.e. um dado nome (p.ex. uma variável ou procedimento, no caso do PASCAL) só é visível em determinados blocos. Introduziu as instruções de controlo de ciclos WHILE e DO. Fez-se acompanhar por um compilador. Apesar destes aspectos, o ALGOL58, ainda não estava próximo das linguagens mais recentes: Não era possível a criação de novos tipos de dados. Necessitava de um mecanismo abstracto para os dados. Outro dos principais problemas com a linguagem ALGOL era o esforço de programação que esta linguagem impunha para a entrada e saída de dados não numéricos. Foi no entanto a noção de compilador que veio a permitir a explosão de linguagens que se deu de seguida, durante a década de 60. Em 1966 Niklaus Wirth apresentou o ALGOL-W, que veio de seguida a dar origem ao PASCAL. b) Pascal Em 1968 Niklaus Wirth, projectou o PASCAL. Esta linguagem pretendeu incorporar os melhores aspectos e facilidades das linguagens ALGOL 60 e ALGOL W. Tendo como objectivo o ensino da programação, oferece novas facilidades para estruturar dados (os tipos de dados definidos pelo utilizador) e a decomposição modular de proporcionou um novo grau de abstracção, os quais foram mais tarde desenvolvidos pelo próprio Wirth na linguagem MODULA-2, que surge na linha do PASCAL. Nas principais características do PASCAL incluem-se: A necessidade de declaração de todas as variáveis no inicio do programa/sub-programa. O suporte de variáveis com qualquer comprimento e tipo, definido na declaração da variável. A elevada autonomia dos procedimentos, que podem ser escritos e testados independentemente do código do programa principal. Um dos principais problemas do PASCAL em aplicações de cálculo científico é no entanto o reduzido número de funções matemáticas que suporta, relativamente, por exemplo, ao FORTRAN. c) ADA Surge no fim da década de 70, tendo sido escolhida pelo Departamento de Defesa dos EUA para a substituição da infinidade de linguagens que este departamento utilizava, nomeadamente do FORTRAN, COBOL e PASCAL. Assim o ADA foi desde cedo virado para problemas de grandes dimensões, complexos e exigindo a manipulação de processos concorrentes. Devido a uma grande exigência a nível do rigor sintáctico dos seus programas, estes apresentam um baixo número de erros e uma elevada fiabilidade. Devido à maior maturidade da Engenharia de Software na altura da sua especificação, o ADA recebeu os principais paradigmas da programação. Assim o ADA é considerado por alguns autores como a primeira linguagem universal, pois incorpora: O conceito de dados abstractos. Em ADA, os programas só podem ter acesso a um conjunto seleccionado de informação de um dado módulo. A utilização de estruturas modulares e especificações de interfaces para os grandes programas. Controle sobre aspectos implementacionais de baixo nível, na máquina objecto. A manipulação de excepções (surgida na década de 60 na linguagem PL/1, um esforço da IBM para substituir o FORTRAN, ALGOL e COBOL). Universidade Aberta

17 O suporte para concorrência e processamento paralelo. Onde são necessários conceitos de como a sincronização de tarefas e de passagem de mensagens entre tarefas em execução simultânea em um ou vários processadores. Nas versões mais recentes (Ada95), os conceitos de herança e objecto. Outra das características do ADA é uma elevada fiabilidade do código desenvolvido. Esta característica deriva da elevada rigidez sintáctica e semântica desta linguagem, que permite diminuir o número de erros de funcionamento dos programas. Esta é de resto a razão porque esta é uma boa linguagem para utilizar em sistemas críticos, como no caso de sistemas de controle militar ou aeroespaciais, onde um único erro de programa pode trazer graves consequências. Apesar destas características, o ADA (ainda?) não ganhou grande aceitação. Talvez tal se deva igualmente à rigidez sintáctica que exige na escrita dos seus programas: por vezes, devido a uma especificação sintáctica demasiado exigente, o ADA obriga a soluções menos directas para o desenvolvimento do código. Neste aspecto o ADA distingue-se do C++ que de certa forma se baseia no conceito oposto: o da flexibilização da linguagem C A linguagem C foi construída em 1972 nos Laboratórios Bell por Dennis Ritchie, com o fim de escrever o sistema de operativo UNIX. Trata-se de uma linguagem bastante pequena, apresentando apenas as características indispensáveis. No C todos os aspectos não indispensáveis na linguagem são passados para uma extensa biblioteca de funções, que pode ser expandida pelo programador. Tendo sido a linguagem utilizada para construção dos sistemas UNIX, o C é uma linguagem com extenso acesso ao hardware, com elevada fiabilidade no tratamento das entradas e saídas do sistema. De igual forma, em sistemas UNIX, como exemplo o LINUX, todas as bibliotecas do próprio sistema operativo têm uma interface em linguagem C, podendo pois ser facilmente evocadas de dentro de um programa C. Contrariamente ao PASCAL ou ao ADA, que visam encoraja o desenvolvimento de programas fiáveis através da imposição de uma estrutura, o C é altamente flexível (permitindo quase todas as combinações operando/operador possíveis) e produzindo código extremamente eficiente. A linguagem C é extremamente prática, podendo os programas em C ser quer extremamente compactos (e cripticos), como extremamente estruturados e auto explicativos, sem que com isso se perca em eficiência. Desta forma a decisão de tornar o código claro (quando trabalhando em equipa, ou em projectos largos e desenvolvendo código mais complexo), quer a de tornar o código compacto (quando é necessária eficiência no desenvolvimento ou no código) cabe ao programador. O C é uma linguagem desenvolvida a pensar em programadores responsáveis, sendo dever dum bom programador de C tornar o seu código auto explicativo por forma a respeitar os conceitos da programação estruturada. A linguagem C é uma das linguagens general-purpose mais escolhida pela generalidade dos programadores Linguagens Orientadas por Objectos a) SIMULA 67 O SIMULA67 foi desenvolvido por Dahl e Nygaard, para aplicações no domínio da simulação. Veio introduzir o conceito de classe. Neste conceito um grupo de declarações e procedimentos eram agrupados e tratados como uma única entidade. Durante a execução do programa, podiam ser criados diversos objectos de uma dada classe, cada um trabalhando sobre os seus dados. O conceito de classe ficou associado ao conceito de abstracção de dados. b) C++ Apesar do grande sucesso da linguagem C entre a comunidade de programadores, e apesar da grande flexibilidade desta linguagem, o suporte dos paradigmas dos tipos de dados abstractos e da programação orientada por objectos é de difícil implementação em C standard. Devido à grande potencialidade destes paradigmas, em especial no que se refere a projectos de trabalho em equipa e à reutilização de código, em 1988, também nos Laboratórios BELL, Bjarne Stroustrup desenvolveu o C++ como extensão ao ANSI C. Esta linguagem híbrida, nada perde relativamente ao C (pode-se programar em C, utilizando C++), mas estende o C com a possibilidade de utilizar os conceitos da programação orientada por objectos, nomeadamente os conceitos de: Universidade Aberta

18 classe, herança, objectos e de polimorfismo. Sendo uma das linguagens híbridas general-purpose mais completa, ela é a ideal para ilustrar os principais paradigmas da programação. O C++ será a linguagem que iremos estudar em profundidade na cadeira de linguagens de programação. Com exemplos em C++ iremos ilustrar os principais paradigmas e métodos da programação estruturada. 1.5 Exercícios Na página web da cadeira poderá encontrar a lista de exercícios proposta para este módulo de estudo. Universidade Aberta

19 Módulo de Estudo 2 : Introdução ao C++ Inicia-se neste módulo o estudo das linguagens da família do C, em concreto o C++. Com este estudo pretende-se que os alunos tenham o primeiro contacto com uma das linguagens de programação mais poderosas e que está entre as linguagens que geram os programas em código de máquina mais eficientes dos dias de hoje. Mantendo as características de elevada flexibilidade e proximidade ao sistema operativo do C, o C++ estende esta linguagem com um conjunto de paradigmas que em muito facilitam o desenvolvimento de software. 2.1 Material de Estudo: O estudo deste módulo será realizado utilizando, como material de apoio teórico, os capítulos 2 e 3 do 2º livro adoptado (páginas 25 a 145 do livro [RodriguesPereiraSousa98]). Chama-se a atenção para o facto de o CD-ROM que acompanha o livro conter um conjunto de acetatos que poderá auxiliar o aluno no seu estudo. Como complemento ao estudo teórico, os alunos deverão utilizar um compilador de C++, como seja o Borland C++ ou o Visual C++ para introduzirem, executarem e analisarem (introduzindo se necessário pequenas alterações no código), os exemplos apresentados ao longo do texto. Caso não tenha acesso a nenhum dos compiladores de C++ referidos no livro (Borland C++ ou o Visual C++), poderá fazer o download (gratuito) de um compilador de C++ via Internet. Caso opte por trabalhar em ambiente Windows, na página Internet da Borland ( tem acesso aos manuais de ajuda e FAQs dos produtos desta companhia e pode após registo no museu, fazer download quer da versão comand-line do Borland C++ 5.5, quer do Borland Turbo Debuger 5.5. Com este debuger pode executar os programas compilados em C++, passo a passo, tal como já fez na cadeira de Programação com o Turbo Pascal. Na página web da cadeira poderá obter a ultima informação sobre a forma de instalar e utilizar este software. 2.2 Objectivos: Os objectivos deste módulo são: Os objectivos apresentados na página 25 de [RodriguesPereiraSousa98]. Saber introduzir no computador os programas que escreveu, nomeadamente: Compilar o código do seu programa. Depurar e analisar o código do seu programa por utilização do Debuger. Os objectivos apresentados na página 85 de [RodriguesPereiraSousa98]. Criar e corrigir sintáctica e semanticamente novos programas, por forma a (com auxilio do computador), conseguir dos seus programas o comportamento pretendido. 2.3 Exercícios No fim do estudo do capítulo 2, o aluno deve ser capaz de resolver a totalidade dos exercícios propostos nas páginas 79 a 83 de [RodriguesPereiraSousa98]. Em particular o aluno deverá resolver os exercícios 1 a 7, 9, 14, 25 e 26. No fim do estudo do capítulo 3, o aluno deve ser capaz de resolver a totalidade dos exercícios propostos nas páginas 142 e 143 de [RodriguesPereiraSousa98]. Em particular o aluno deverá resolver os exercícios 1 a 8 e 12. Universidade Aberta

20 Universidade Aberta

21 Módulo de Estudo 3 : Elementos duma Linguagem de Programação Neste módulo de estudo tentar-se-á generalizar os conceitos aprendidos no módulo anterior a qualquer linguagem de programação imperativa. De igual forma serão apresentados os principais conceitos associados à gestão de nomes numa linguagem imperativa. Estes conceitos serão essenciais para o estudo da próxima secção. Apesar do 2º livro adoptado conter uma secção sobre nomes e tipos, esta apresenta-se simultaneamente muito virada para o C/C++, e pouco relacionada com a compreensão do funcionamento interno dum programa de uma dada linguagem de programação. Apenas com o estudo de conceitos mais genéricos será possível compreender como pode um programa escrito numa dada linguagem de programação funcionar num computador segundo o paradigma da máquina de Von Neumann. Revelou-se pois indispensável a introdução desta secção, não só para a correcta compreensão dos conceitos desta cadeira como também como ferramenta indispensável à correcta compreensão do conceito de apontador: um dos principais problemas na aprendizagem da linguagem C e C++. O texto desta secção foi largamente influenciado pelos dois livros da bibliografia complementar: [WilsonClark93] e [Sethi89]. 3.1 Objectivos Com este módulo pretende-se: Compreender a importância dos conceitos de bloco de código e procedimento. Compreender os diversos conceitos associados a um nome em qualquer linguagem de programação: Valor e tipo, visibilidade e posição. Compreender o conceito de apontador e a sua relação com a memória interna do computador. Generalizar o conhecimento das principais estruturas de controlo de um programa escrito numa linguagem imperativa. Identificar e saber utilizar as diversas formas de passagem de parâmetros para um procedimento em qualquer linguagem de programação. Compreender como um programa em C gere a memória do computador. 3.2 Tipos e Variáveis Nomes Um programa pode ser visto como um conjunto de operações sobre um conjunto de dados. Sobre os dados desse programa pode ser definido o seu tipo. O tipo dos dados define o conjunto de valores possíveis desses dados e o conjunto de operações que a eles podem ser aplicados. Assim, qualquer conjunto de dados tem um valor e um tipo. Num programa a forma usual de guardar dados é utilizando variáveis. As principais características de uma variável são o seu nome, o seu valor e a referência à área de memória interna do computador (no sentido da maquina de von Neumann atrás referida) que guarda o valor da variável. Assim, para todas as variáveis em todas as linguagens de programação, existe sempre, para qualquer variável: nome da variável (também conhecido pelo seu identificador). a sua área de armazenamento (i.e. o endereço de memória onde o valor dessa variável é guardado). o valor armazenado. No entanto, muitas vezes, é usual a referência a "uma variável" denotar qualquer um destes três aspectos, e é por isso necessário saber sempre ao que nos estamos a referir. Devido ao seu poder, a linguagem C (e a sua extensão o C++) recorre extensamente a esta distinção. Sendo uma das principais dificuldades de quem começa a aprender C e C++ efectuar correctamente a distinção entre estes vários conceitos Declarações e Associações Outro dos aspectos importantes a ter em conta é o momento da associação do tipo e área de armazenamento a uma Universidade Aberta

22 dada variável. Quando essa associação é efectuada em tempo de compilação ganhamos em eficiência (pois não é necessário executar esta operação durante a execução do programa), por outro lado quando efectuamos essa associação em tempo de execução do programa ganhamos em flexibilidade (pois o programa pode definir de que forma deve essa associação ser efectuada). Declaração de variáveis: Nas linguagens de programação mais recentes, as variáveis são introduzidas num programa através da sua declaração. É na declaração duma variável que se explicita qual o seu tipo e se indica ao computador a necessidade de reservar um espaço em memória para conter o valor dessa variável. As declarações podem ser efectuadas juntamente com as instruções do programa. Blocos: O PASCAL, é uma linguagem que utiliza o conceito de bloco. Em PASCAL um bloco é uma sequência de instruções entre BEGIN e END. Em PASCAL uma dada variável pode ser associada a um bloco (sendo declarada num PROCEDURE ou FUNCTION associado a um conjunto de instruções). Em C, os blocos são declarado pelos caracteres '{' (o inicio do bloco) e '}' (o fim do bloco). O C é mais genérico que o PASCAL, pois qualquer bloco pode conter no inicio a declaração de uma variável. Scope rules (regras de visibilidade de uma variável): variáveis locais: Uma variável local é aquela que é declarada dentro dum bloco de código, sendo apenas visível dentro desse bloco. variáveis não locais: As variáveis declaradas num bloco que contenha outro bloco dentro de si, são chamadas de não locais quando no bloco mais interno, mas continuam a ser visíveis. variáveis globais: Uma variável não local, declarada no bloco mais externo (o programa) é também chamada de variável global. Exemplo 1: no seguinte programa C: int a; float b; main() { /* inicio do bloco main */ int c; a=5; for(c=1;c<a; c++) { /* inicio do bloco for */ int j; int a; a=3; } /* fim do bloco for */ } /* fim do bloco main */ a e b são variáveis globais, e logo conhecidas em todo o programa. c é uma variável local ao bloco main e logo não local (mas conhecida) no bloco do ciclo for. Já j é uma variável apenas conhecida no interior do bloco do ciclo for. A variável global a, foi redefinida no interior do bloco do ciclo for, assim dentro do bloco do ciclo for (i.e. entre { e } )é uma nova variável (i.e. é associada a uma nova área de memória). Esta variável local mantém o nome, escondendo por isso a variável global: no interior deste bloco a variável global a não está visível, referindo-se todas as operações sobre a à variável local. O ciclo continua a ser executado 5 vezes, pois embora quando se entra/sai do bloco no interior do ciclo for, a continua a ter o valor de 5. Apenas durante o ciclo a nova variável a passa a ter o valor 3. Uma vez terminado o ciclo, a variável retorna o seu valor original de 5. static scope (i.e. visibilidade estática): Em linguagens como o FORTRAN, C, Pascal, Ada e Modula-2, a visibilidade de um identificador e o endereço de memória ao qual este está associado são determinados em tempo de compilação. Como consequência os nomes são associados aos tipos em tempo de compilação. Universidade Aberta

Curso Técnico em Redes

Curso Técnico em Redes Curso Técnico em Redes Prof. Airton Ribeiro - 2012 Histórico das Linguagens de Programação O que é? É um método padronizado para expressar instruções para um computador. É um conjunto de regras sintáticas

Leia mais

INTRODUÇÃO ÀS LINGUAGENS DE PROGRAMAÇÃO

INTRODUÇÃO ÀS LINGUAGENS DE PROGRAMAÇÃO Capítulo 1 INTRODUÇÃO ÀS LINGUAGENS DE PROGRAMAÇÃO 1.1 Histórico de Linguagens de Programação Para um computador executar uma dada tarefa é necessário que se informe a ele, de uma maneira clara, como ele

Leia mais

Figura 1 - O computador

Figura 1 - O computador Organização e arquitectura dum computador Índice Índice... 2 1. Introdução... 3 2. Representação da informação no computador... 4 3. Funcionamento básico dum computador... 5 4. Estrutura do processador...

Leia mais

LINGUAGENS E PARADIGMAS DE PROGRAMAÇÃO. Ciência da Computação IFSC Lages. Prof. Wilson Castello Branco Neto

LINGUAGENS E PARADIGMAS DE PROGRAMAÇÃO. Ciência da Computação IFSC Lages. Prof. Wilson Castello Branco Neto LINGUAGENS E PARADIGMAS DE PROGRAMAÇÃO Ciência da Computação IFSC Lages. Prof. Wilson Castello Branco Neto Conceitos de Linguagens de Roteiro: Apresentação do plano de ensino; Apresentação do plano de

Leia mais

ENIAC. Introdução aos Computadores e à Programação (Noções Básicas)

ENIAC. Introdução aos Computadores e à Programação (Noções Básicas) ENIAC Introdução aos Computadores e à ção (Noções Básicas) Introdução aos Computadores e à ção (Noções Básicas) 1 Introdução aos Computadores e à ção (Noções Básicas) 2 O transistor foi inventado em 1947

Leia mais

Conceitos básicos de programação

Conceitos básicos de programação O QUE É UM PROGRAMA? Para executar uma dada tarefa é geralmente necessário entender o sistema onde ela é realizada. Por exemplo, para fazer um bolo temos um sistema composto por: Ingredientes Cozinheiro

Leia mais

Arquitecturas de Software Licenciatura em Engenharia Informática e de Computadores

Arquitecturas de Software Licenciatura em Engenharia Informática e de Computadores UNIVERSIDADE TÉCNICA DE LISBOA INSTITUTO SUPERIOR TÉCNICO Arquitecturas de Software Licenciatura em Engenharia Informática e de Computadores Primeiro Teste 21 de Outubro de 2006, 9:00H 10:30H Nome: Número:

Leia mais

O modelo do computador

O modelo do computador O modelo do computador Objetivos: Mostrar como é o funcionamento dos computadores modernos Mostrar as limitações a que estamos sujeitos quando programamos Histórico Os primeiros computadores são da década

Leia mais

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008 Tabela de Símbolos Análise Semântica A Tabela de Símbolos Fabiano Baldo Após a árvore de derivação, a tabela de símbolos é o principal atributo herdado em um compilador. É possível, mas não necessário,

Leia mais

Guia de Estudo Folha de Cálculo Microsoft Excel

Guia de Estudo Folha de Cálculo Microsoft Excel Tecnologias da Informação e Comunicação Guia de Estudo Folha de Cálculo Microsoft Excel Estrutura geral de uma folha de cálculo: colunas, linhas, células, endereços Uma folha de cálculo electrónica ( electronic

Leia mais

Introdução. Capítulo 1. 1.1. Breve sinopse

Introdução. Capítulo 1. 1.1. Breve sinopse Capítulo 1 Introdução 1.1. Breve sinopse O C é uma linguagem de programação criada por Dennis Ritchie no início da década de 70 do século XX. É uma linguagem de complexidade baixa, estruturada, imperativa

Leia mais

12 EXCEL MACROS E APLICAÇÕES

12 EXCEL MACROS E APLICAÇÕES INTRODUÇÃO O principal objetivo deste livro é auxiliar o leitor na sua aprendizagem sobre os recursos avançados do Excel em especial na interligação com o Visual Basic for Applications (VBA). Pretende-se

Leia mais

Programação 2ºSemestre MEEC - 2010/2011. Programação 2º Semestre 2010/2011 Enunciado do projecto

Programação 2ºSemestre MEEC - 2010/2011. Programação 2º Semestre 2010/2011 Enunciado do projecto Mestrado Integrado em Engenharia Electrotécnica e de Computadores Programação 2º Semestre 2010/2011 Enunciado do projecto O projecto a desenvolver pelos alunos consistirá numa sistema de monitorização,

Leia mais

1 INTRODUÇÃO 1.1 CONCEITO DE PARADIGMAS DE LINGUAGEM DE PROGRAMAÇÃO PARADIGMAS DE LINGUAGEM DE PROGRAMAÇÃO

1 INTRODUÇÃO 1.1 CONCEITO DE PARADIGMAS DE LINGUAGEM DE PROGRAMAÇÃO PARADIGMAS DE LINGUAGEM DE PROGRAMAÇÃO 1 INTRODUÇÃO 1.1 CONCEITO DE PARADIGMAS DE LINGUAGEM DE PROGRAMAÇÃO Desde o seu surgimento, o manuseio da computação é baseado em linguagens de programação. Ela permite que sejam construídos aplicativos

Leia mais

BREVE HISTÓRIA DA LINGUAGEM FORTRAN

BREVE HISTÓRIA DA LINGUAGEM FORTRAN 2 BREVE HISTÓRIA DA LINGUAGEM FORTRAN 2.1 Os primeiros tempos Nos primórdios dos computadores, programar era uma tarefa extremamente complicada e, de certa forma, extenuante. Aos programadores era exigido

Leia mais

Introdução às Linguagens de Programação

Introdução às Linguagens de Programação Introdução às Linguagens de Programação Histórico de Linguagens de Programação O computador não faz nada sozinho Precisamos informar, de forma clara, como ele deve executar as tarefas Ou seja, o computador

Leia mais

GereComSaber. Disciplina de Desenvolvimento de Sistemas de Software. Sistema de Gestão de Serviços em Condomínios

GereComSaber. Disciplina de Desenvolvimento de Sistemas de Software. Sistema de Gestão de Serviços em Condomínios Universidade do Minho Conselho de Cursos de Engenharia Licenciatura em Engenharia Informática 3ºAno Disciplina de Desenvolvimento de Sistemas de Software Ano Lectivo de 2009/2010 GereComSaber Sistema de

Leia mais

CAP. I ERROS EM CÁLCULO NUMÉRICO

CAP. I ERROS EM CÁLCULO NUMÉRICO CAP. I ERROS EM CÁLCULO NUMÉRICO 0. Introdução Por método numérico entende-se um método para calcular a solução de um problema realizando apenas uma sequência finita de operações aritméticas. A obtenção

Leia mais

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO)

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO) Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO) Parte: 1 Prof. Cristóvão Cunha Objetivos de aprendizagem

Leia mais

TIC Unidade 2 Base de Dados. Informação é todo o conjunto de dados devidamente ordenados e organizados de forma a terem significado.

TIC Unidade 2 Base de Dados. Informação é todo o conjunto de dados devidamente ordenados e organizados de forma a terem significado. Conceitos relativos à Informação 1. Informação O que á a informação? Informação é todo o conjunto de dados devidamente ordenados e organizados de forma a terem significado. 2. Dados Em informática designa-se

Leia mais

1. NÍVEL CONVENCIONAL DE MÁQUINA

1. NÍVEL CONVENCIONAL DE MÁQUINA 1. NÍVEL CONVENCIONAL DE MÁQUINA Relembrando a nossa matéria de Arquitetura de Computadores, a arquitetura de Computadores se divide em vários níveis como já estudamos anteriormente. Ou seja: o Nível 0

Leia mais

Programação Estruturada e Orientada a Objetos. Fundamentos Orientação a Objetos

Programação Estruturada e Orientada a Objetos. Fundamentos Orientação a Objetos Programação Estruturada e Orientada a Objetos Fundamentos Orientação a Objetos 2013 O que veremos hoje? Introdução aos fundamentos de Orientação a Objetos Transparências baseadas no material do Prof. Jailton

Leia mais

Informática II Cap. 3

Informática II Cap. 3 Cap. 3 1 Tradicionalmente, programar significava apenas a escrita de um programa, que resolvesse o problema pretendido de uma forma aparentemente correcta. Problema Problema Programa Programa Desvantagens:

Leia mais

Instituto Superior Politécnico de VISEU. Escola Superior de Tecnologia

Instituto Superior Politécnico de VISEU. Escola Superior de Tecnologia 1 Tradicionalmente, programar significava apenas a escrita de um programa, que resolvesse o problema pretendido de uma forma aparentemente correcta. Problema Problema Programa Programa Desvantagens: Programas

Leia mais

Introdução. Sumários. Objectivos da cadeira. História das linguagens de programação. Classificação das Linguagens de programação

Introdução. Sumários. Objectivos da cadeira. História das linguagens de programação. Classificação das Linguagens de programação Introdução Sumários Objectivos da cadeira História das linguagens de programação Classificação das Linguagens de programação Aplicação das linguagens de programação Noção de compiladores Software à usar

Leia mais

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br LP II Estrutura de Dados Introdução e Linguagem C Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br Resumo da aula Considerações Gerais Introdução a Linguagem C Variáveis e C Tipos de

Leia mais

A lógica de programação ajuda a facilitar o desenvolvimento dos futuros programas que você desenvolverá.

A lógica de programação ajuda a facilitar o desenvolvimento dos futuros programas que você desenvolverá. INTRODUÇÃO A lógica de programação é extremamente necessária para as pessoas que queiram trabalhar na área de programação, seja em qualquer linguagem de programação, como por exemplo: Pascal, Visual Basic,

Leia mais

Um compilador é um programa que lê um programa escrito numa dada linguagem, a linguagem objecto (fonte), e a traduz num programa equivalente

Um compilador é um programa que lê um programa escrito numa dada linguagem, a linguagem objecto (fonte), e a traduz num programa equivalente Capítulo 1 Introdução Um compilador é um que lê um escrito numa dada linguagem, a linguagem objecto (fonte), e a traduz num equivalente numa outra linguagem, a linguagem destino Como parte importante neste

Leia mais

3. O NIVEL DA LINGUAGEM DE MONTAGEM

3. O NIVEL DA LINGUAGEM DE MONTAGEM 3. O NIVEL DA LINGUAGEM DE MONTAGEM Nas aulas anteriores tivemos a oportunidade de discutir dois diferentes níveis presentes na maioria dos computadores atuais. Nesta aula dedica-se a outro nível que também

Leia mais

Engenharia de Software Sistemas Distribuídos

Engenharia de Software Sistemas Distribuídos Engenharia de Software Sistemas Distribuídos 2 o Semestre de 2009/2010 FEARSe Requisitos para a 1 a entrega 18 de Março de 2010 1 Introdução O projecto conjunto das disciplinas de Engenharia de Software

Leia mais

Modelo Cascata ou Clássico

Modelo Cascata ou Clássico Modelo Cascata ou Clássico INTRODUÇÃO O modelo clássico ou cascata, que também é conhecido por abordagem top-down, foi proposto por Royce em 1970. Até meados da década de 1980 foi o único modelo com aceitação

Leia mais

Introdução à Programação. Adair Santa Catarina Curso de Ciência da Computação Unioeste Campus de Cascavel PR

Introdução à Programação. Adair Santa Catarina Curso de Ciência da Computação Unioeste Campus de Cascavel PR Introdução à Programação Orientada a Objetos Adair Santa Catarina Curso de Ciência da Computação Unioeste Campus de Cascavel PR Fev/2014 Histórico das linguagens de programação ENIAC (1944) Programação

Leia mais

AULA 1: PARADIGMAS DE PROGRAMAÇÃO

AULA 1: PARADIGMAS DE PROGRAMAÇÃO 1 AULA 1: PARADIGMAS DE PROGRAMAÇÃO Curso: Ciência da Computação Profª.: Luciana Balieiro Cosme Ementa 2 Programação Imperativa. Programação Paralela e Concorrente. Programação Lógica. Programação Funcional.

Leia mais

Construção de Compiladores. Construção de Compiladores. Motivação. Motivação. Contexto Histórico. Classificações: Gerações 09/03/2010

Construção de Compiladores. Construção de Compiladores. Motivação. Motivação. Contexto Histórico. Classificações: Gerações 09/03/2010 Construção de Compiladores Prof. Raimundo Santos Moura (http://www.ufpi.br/rsm) Construção de Compiladores Livro-Texto: AHO, Alfred V.; ULLMAN, Jeffrey D.; SETHI, R. Compiladores: princípios, técnicas

Leia mais

Introdução aos Computadores

Introdução aos Computadores Os Computadores revolucionaram as formas de processamento de Informação pela sua capacidade de tratar grandes quantidades de dados em curto espaço de tempo. Nos anos 60-80 os computadores eram máquinas

Leia mais

Resolução de problemas e desenvolvimento de algoritmos

Resolução de problemas e desenvolvimento de algoritmos SSC0101 - ICC1 Teórica Introdução à Ciência da Computação I Resolução de problemas e desenvolvimento de algoritmos Prof. Vanderlei Bonato Prof. Cláudio Fabiano Motta Toledo Sumário Análise e solução de

Leia mais

Paradigmas de Linguagens de Programação

Paradigmas de Linguagens de Programação Paradigmas de Linguagens de Programação Faculdade Nova Roma Cursos de Ciências da Computação (6 Período) Prof. Adriano Avelar - Site: www.adrianoavelar.com Email: edson.avelar@yahoo.com.br Ementa Introdução

Leia mais

Paradigmas de Programação

Paradigmas de Programação Paradigmas de Programação Aula I Apresentação Prof.: Edilberto M. Silva http://www.edilms.eti.br Prof. Edilberto Silva / edilms.eti.br Professor EDILBERTO M. SILVA edilms@yahoo.com Bacharel em Ciência

Leia mais

DEPARTAMENTO DE ENGENHARIA INFORMÁTICA FACULDADE DE CIÊNCIAS E TECNOLOGIA DA UNIVERSIDADE DE COIMBRA

DEPARTAMENTO DE ENGENHARIA INFORMÁTICA FACULDADE DE CIÊNCIAS E TECNOLOGIA DA UNIVERSIDADE DE COIMBRA DEPARTAMENTO DE ENGENHARIA INFORMÁTICA FACULDADE DE CIÊNCIAS E TECNOLOGIA DA UNIVERSIDADE DE COIMBRA Sistemas Operativos 2003/2004 Trabalho Prático #2 -- Programação em C com ponteiros -- Objectivos Familiarização

Leia mais

Conceitos Básicos de C

Conceitos Básicos de C Conceitos Básicos de C Bibliografia Problem Solving & Program design in C, Jeri R. Hanly e Elliot B. Kpffman, 3 a edição Data Structures and Algorithm Analysis in C, Mark Allen Weiss, 2 a edição, Addison-Wesley,

Leia mais

Análise de Sistemas. Conceito de análise de sistemas

Análise de Sistemas. Conceito de análise de sistemas Análise de Sistemas Conceito de análise de sistemas Sistema: Conjunto de partes organizadas (estruturadas) que concorrem para atingir um (ou mais) objectivos. Sistema de informação (SI): sub-sistema de

Leia mais

Dadas a base e a altura de um triangulo, determinar sua área.

Dadas a base e a altura de um triangulo, determinar sua área. Disciplina Lógica de Programação Visual Ana Rita Dutra dos Santos Especialista em Novas Tecnologias aplicadas a Educação Mestranda em Informática aplicada a Educação ana.santos@qi.edu.br Conceitos Preliminares

Leia mais

Programação de Computadores III

Programação de Computadores III Programação de Computadores III Introdução a Linguagens de Programação Professor Leandro Augusto Frata Fernandes laffernandes@ic.uff.br Material disponível em http://www.ic.uff.br/~laffernandes/teaching/2013.1/tcc-00.157

Leia mais

A Gestão, os Sistemas de Informação e a Informação nas Organizações

A Gestão, os Sistemas de Informação e a Informação nas Organizações Introdução: Os Sistemas de Informação (SI) enquanto assunto de gestão têm cerca de 30 anos de idade e a sua evolução ao longo destes últimos anos tem sido tão dramática como irregular. A importância dos

Leia mais

Introdução a Informática. Prof.: Roberto Franciscatto

Introdução a Informática. Prof.: Roberto Franciscatto Introdução a Informática Prof.: Roberto Franciscatto APRESENTAÇÃO Os computadores chegaram aos diversos níveis das organizações Nestes contexto: Que linguagem entendem? Que produtos podem usar? Dúvidas

Leia mais

5. Métodos ágeis de desenvolvimento de software

5. Métodos ágeis de desenvolvimento de software Engenharia de Software 5. Métodos ágeis de desenvolvimento de software Nuno Miguel Gil Fonseca nuno.fonseca@estgoh.ipc.pt Desenvolver e entregar software o mais rapidamente possível é hoje em dia um dos

Leia mais

CONCEITOS DE LINGUAGEM DE PROGRAMAÇÃO CARACTERÍSTICAS. João Gabriel Ganem Barbosa

CONCEITOS DE LINGUAGEM DE PROGRAMAÇÃO CARACTERÍSTICAS. João Gabriel Ganem Barbosa CONCEITOS DE LINGUAGEM DE PROGRAMAÇÃO CARACTERÍSTICAS João Gabriel Ganem Barbosa Sumário Motivação História Linha do Tempo Divisão Conceitos Paradigmas Geração Tipos de Dados Operadores Estruturada vs

Leia mais

MC-102 Aula 01. Instituto de Computação Unicamp

MC-102 Aula 01. Instituto de Computação Unicamp MC-102 Aula 01 Introdução à Programação de Computadores Instituto de Computação Unicamp 2015 Roteiro 1 Por que aprender a programar? 2 Hardware e Software 3 Organização de um ambiente computacional 4 Algoritmos

Leia mais

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia.

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia. 1 Introdução aos Sistemas de Informação 2002 Aula 4 - Desenvolvimento de software e seus paradigmas Paradigmas de Desenvolvimento de Software Pode-se considerar 3 tipos de paradigmas que norteiam a atividade

Leia mais

TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO. SISTEMAS DE GESTÃO DE BASE DE DADOS Microsoft Access TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO

TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO. SISTEMAS DE GESTÃO DE BASE DE DADOS Microsoft Access TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO Microsoft Access TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO CONCEITOS BÁSICOS 1 Necessidade das base de dados Permite guardar dados dos mais variados tipos; Permite

Leia mais

AULA 4 VISÃO BÁSICA DE CLASSES EM PHP

AULA 4 VISÃO BÁSICA DE CLASSES EM PHP AULA 4 VISÃO BÁSICA DE CLASSES EM PHP Antes de mais nada, vamos conhecer alguns conceitos, que serão importantes para o entendimento mais efetivos dos assuntos que trataremos durante a leitura desta apostila.

Leia mais

Arquiteturas RISC. (Reduced Instructions Set Computers)

Arquiteturas RISC. (Reduced Instructions Set Computers) Arquiteturas RISC (Reduced Instructions Set Computers) 1 INOVAÇÕES DESDE O SURGIMENTO DO COMPU- TADOR DE PROGRAMA ARMAZENADO (1950)! O conceito de família: desacoplamento da arquitetura de uma máquina

Leia mais

PHC Serviços CS. A gestão de processos de prestação de serviços

PHC Serviços CS. A gestão de processos de prestação de serviços PHC Serviços CS A gestão de processos de prestação de serviços A solução que permite controlar diferentes áreas de uma empresa: reclamações e respectivo tratamento; controlo de processos e respectivos

Leia mais

2. Representação Numérica

2. Representação Numérica 2. Representação Numérica 2.1 Introdução A fim se realizarmos de maneira prática qualquer operação com números, nós precisamos representa-los em uma determinada base numérica. O que isso significa? Vamos

Leia mais

Tarefa Orientada 16 Vistas

Tarefa Orientada 16 Vistas Tarefa Orientada 16 Vistas Objectivos: Vistas só de leitura Vistas de manipulação de dados Uma vista consiste numa instrução de SELECT que é armazenada como um objecto na base de dados. Deste modo, um

Leia mais

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br - Aula 5 - O NÍVEL DA LINGUAGEM DE MONTAGEM 1. INTRODUÇÃO É relativamente fácil compreender os fundamentos da programação de computadores, sob o ponto de vista da inteligibilidade dos comandos de alto

Leia mais

Introdução aos Sistemas Operativos

Introdução aos Sistemas Operativos Introdução aos Sistemas Operativos Computadores e Redes de Comunicação Mestrado em Gestão de Informação, FEUP 06/07 Sérgio Sobral Nunes mail: sergio.nunes@fe.up.pt web: www.fe.up.pt/~ssn Sumário Definição

Leia mais

Um sistema SMS 1 simplificado

Um sistema SMS 1 simplificado 1 Introdução Um sistema SMS 1 simplificado Projecto de Redes de Computadores I - 2007/2008 LEIC IST, Tagus Park 10 de Setembro de 2007 Pretende-se com este projecto que os alunos implementem um sistema

Leia mais

AMBIENTE DE PROGRAMAÇÃO PYTHON

AMBIENTE DE PROGRAMAÇÃO PYTHON Computadores e Programação Engª Biomédica Departamento de Física Faculdade de Ciências e Tecnologia da Universidade de Coimbra Ano Lectivo 2003/2004 FICHA 1 AMBIENTE DE PROGRAMAÇÃO PYTHON 1.1. Objectivos

Leia mais

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br Introdução O computador como ferramenta indispensável: Faz parte das nossas vidas; Por si só não faz nada de útil; Grande capacidade de resolução

Leia mais

TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO - TIC 10º C. Planificação de. Curso Profissional de Técnico de Secretariado

TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO - TIC 10º C. Planificação de. Curso Profissional de Técnico de Secretariado Escola Básica e Secundária de Velas Planificação de TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO - TIC Curso Profissional de Técnico de Secretariado 10º C MÓDULO 1 FOLHA DE CÁLCULO Microsoft Excel Conteúdos

Leia mais

Tecnologia da Informação. Visão Geral sobre Informática

Tecnologia da Informação. Visão Geral sobre Informática 9/18/2014 1 Tecnologia da Informação Visão Geral sobre Informática Trabalho compilado da internet Prof. Claudio Passos 9/18/2014 2 PROBLEMAS ADMINISTRATIVOS Volume de Informação Tempo de Resposta Aumento

Leia mais

Rock In Rio - Lisboa

Rock In Rio - Lisboa Curso de Engenharia Informática Industrial Rock In Rio - Lisboa Elaborado por: Ano Lectivo: 2004/05 Tiago Costa N.º 4917 Turma: C Gustavo Graça Patrício N.º 4757 Turma: C Docente: Professora Maria Estalagem

Leia mais

COMPILADORES E INTERPRETADORES

COMPILADORES E INTERPRETADORES Aula 16 Arquitetura de Computadores 12/11/2007 Universidade do Contestado UnC/Mafra Curso Sistemas de Informação Prof. Carlos Guerber COMPILADORES E INTERPRETADORES Um compilador transforma o código fonte

Leia mais

DEPARTAMENTO DE MATEMÁTICA E CIÊNCIAS EXPERIMENTAIS

DEPARTAMENTO DE MATEMÁTICA E CIÊNCIAS EXPERIMENTAIS DEPARTAMENTO DE MATEMÁTICA E CIÊNCIAS EXPERIMENTAIS Planificação Anual da Disciplina de TIC Módulos 1,2,3-10.ºD CURSO PROFISSIONAL DE TÉCNICO DE APOIO À GESTÃO DESPORTIVA Ano Letivo 2015-2016 Manual adotado:

Leia mais

Lição 1 Introdução à programação de computadores

Lição 1 Introdução à programação de computadores Lição Introdução à programação de computadores Introdução à Programação I Objetivos Ao final desta lição, o estudante será capaz de: Identificar os diferentes componentes de um computador Conhecer linguagens

Leia mais

Curso de Eng. Informática Linguagens de Programação. C Sharp University Data Processing. (C Sharp Universidade de Processamento de Dados) Docente:

Curso de Eng. Informática Linguagens de Programação. C Sharp University Data Processing. (C Sharp Universidade de Processamento de Dados) Docente: Trabalho elaborado por: Carlos Palma nº5608 Curso de Eng. Informática Linguagens de Programação C Sharp University Data Processing (C Sharp Universidade de Processamento de Dados) Docente: José Jasnau

Leia mais

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP) Hardware (Nível 0) Organização O AS/400 isola os usuários das características do hardware através de uma arquitetura de camadas. Vários modelos da família AS/400 de computadores de médio porte estão disponíveis,

Leia mais

Prova de Aferição de Matemática

Prova de Aferição de Matemática PROVA DE AFERIÇÃO DO ENSINO BÁSICO A PREENCHER PELO ALUNO Nome A PREENCHER PELO AGRUPAMENTO Número convencional do Aluno Número convencional do Aluno A PREENCHER PELA U.A. Número convencional do Agrupamento

Leia mais

AMBIENTE PARA AUXILIAR O DESENVOLVIMENTO DE PROGRAMAS MONOLÍTICOS

AMBIENTE PARA AUXILIAR O DESENVOLVIMENTO DE PROGRAMAS MONOLÍTICOS UNIVERSIDADE REGIONAL DE BLUMENAU CENTRO DE CIÊNCIAS EXATAS E NATURAIS CURSO DE CIÊNCIAS DA COMPUTAÇÃO BACHARELADO AMBIENTE PARA AUXILIAR O DESENVOLVIMENTO DE PROGRAMAS MONOLÍTICOS Orientando: Oliver Mário

Leia mais

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação SOFT DISCIPLINA: Engenharia de software AULA NÚMERO: 08 DATA: / / PROFESSOR: Andrey APRESENTAÇÃO O objetivo desta aula é apresentar e discutir conceitos relacionados a modelos e especificações. Nesta aula

Leia mais

Bases de Dados. Lab 1: Introdução ao ambiente

Bases de Dados. Lab 1: Introdução ao ambiente Departamento de Engenharia Informática 2010/2011 Bases de Dados Lab 1: Introdução ao ambiente 1º semestre O ficheiro bank.sql contém um conjunto de instruções SQL para criar a base de dados de exemplo

Leia mais

Aplicações de Escritório Electrónico

Aplicações de Escritório Electrónico Universidade de Aveiro Escola Superior de Tecnologia e Gestão de Águeda Curso de Especialização Tecnológica em Práticas Administrativas e Tradução Aplicações de Escritório Electrónico Folha de trabalho

Leia mais

1.1. Organização de um Sistema Computacional

1.1. Organização de um Sistema Computacional 1. INTRODUÇÃO 1.1. Organização de um Sistema Computacional Desde a antiguidade, o homem vem desenvolvendo dispositivos elétricoeletrônicos (hardware) que funciona com base em instruções e que são capazes

Leia mais

CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM

CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM 71 Introdução Difere dos níveis inferiores por ser implementado por tradução A tradução é usada quando um processador está disponível para uma mensagem fonte mas

Leia mais

Trabalhos Práticos. Programação II Curso: Engª Electrotécnica - Electrónica e Computadores

Trabalhos Práticos. Programação II Curso: Engª Electrotécnica - Electrónica e Computadores Trabalhos Práticos Programação II Curso: Engª Electrotécnica - Electrónica e Computadores 1. Objectivos 2. Calendarização 3. Normas 3.1 Relatório 3.2 Avaliação 4. Propostas Na disciplina de Programação

Leia mais

TECNOLOGIAS DE INFORMAÇÃO E COMUNICAÇÃO

TECNOLOGIAS DE INFORMAÇÃO E COMUNICAÇÃO TECNOLOGIAS DE INFORMAÇÃO E COMUNICAÇÃO ACCESS 2010 Conceitos Básicos Ficha Informativa Professor : Vanda Pereira módulo didáctico Conceitos Básicos Necessidade das base de dados Permite guardar dados

Leia mais

CURSO DE PROGRAMAÇÃO EM JAVA

CURSO DE PROGRAMAÇÃO EM JAVA CURSO DE PROGRAMAÇÃO EM JAVA Introdução para Iniciantes Prof. M.Sc. Daniel Calife Índice 1 - A programação e a Linguagem Java. 1.1 1.2 1.3 1.4 Linguagens de Programação Java JDK IDE 2 - Criando o primeiro

Leia mais

Metodos de Programação

Metodos de Programação Metodos de Programação Métodos de Programação Introdução Informática, Computador, Algoritmo Informática: Ciência do processamento da informação Computador: Máquina que serve para processar informação Algoritmo:

Leia mais

OFICIAL DA ORDEM MILITAR DE CRISTO MEDALHA DE EDUCAÇÃO FÍSICA E BONS SERVIÇOS. Circular n.º 023-A/2014 Portal F.P.T. - Inscrições (Aditamento)

OFICIAL DA ORDEM MILITAR DE CRISTO MEDALHA DE EDUCAÇÃO FÍSICA E BONS SERVIÇOS. Circular n.º 023-A/2014 Portal F.P.T. - Inscrições (Aditamento) Circular n.º 023-A/2014 Portal F.P.T. - Inscrições (Aditamento) Exmo. Sr. Presidente, A Direcção da F.P.T. tem emitido, ao longo dos últimos meses, diversas Circulares, com o objectivo de ir informando,

Leia mais

Desenho de Software. Desenho de Software 1

Desenho de Software. Desenho de Software 1 Desenho de Software Desenho de Software 1 Sumário Caracterização Conceitos fundamentais Desenho funcional e desenho OO Qualidades Desenho de Software 2 Bibliografia Pfleeger, Capítulo 6 Design the Modules

Leia mais

GereComSaber. Disciplina de Desenvolvimento de Sistemas de Software. Sistema de Gestão de Serviços em Condomínios

GereComSaber. Disciplina de Desenvolvimento de Sistemas de Software. Sistema de Gestão de Serviços em Condomínios Universidade do Minho Conselho de Cursos de Engenharia Licenciatura em Engenharia Informática 3ºAno Disciplina de Desenvolvimento de Sistemas de Software Ano Lectivo de 2009/2010 GereComSaber Sistema de

Leia mais

PROGRAMAÇÃO DE MICROPROCESSADORES 2011 / 2012

PROGRAMAÇÃO DE MICROPROCESSADORES 2011 / 2012 Departamento de Engenharia Electrotécnica PROGRAMAÇÃO DE MICROPROCESSADORES 2011 / 2012 Mestrado Integrado em Engenharia Electrotécnica e de Computadores 1º ano 2º semestre Trabalho Final Reservas de viagens

Leia mais

ULA Sinais de Controle enviados pela UC

ULA Sinais de Controle enviados pela UC Solução - Exercícios Processadores 1- Qual as funções da Unidade Aritmética e Lógica (ULA)? A ULA é o dispositivo da CPU que executa operações tais como: Adição Subtração Multiplicação Divisão Incremento

Leia mais

O que é o JavaScript?

O que é o JavaScript? JavaScript Introdução O JavaScript é utilizado por milhões de páginas na web para melhorar o design, validar forms, e muito mais O JavaScript foi inicialmente desenvolvido pela Netscape e é a linguagem

Leia mais

Programa de Parcerias e Submissão de Propostas 2014/15

Programa de Parcerias e Submissão de Propostas 2014/15 DEPARTAMENTO DE INFORMÁTICA Programa de Parcerias e Submissão de Propostas 2014/15 O Departamento de Informática (DI) da Faculdade de Ciências da Universidade de Lisboa (FCUL) procura criar e estreitar

Leia mais

UML - Unified Modeling Language

UML - Unified Modeling Language UML - Unified Modeling Language Casos de Uso Marcio E. F. Maia Disciplina: Engenharia de Software Professora: Rossana M. C. Andrade Curso: Ciências da Computação Universidade Federal do Ceará 24 de abril

Leia mais

Wilson Moraes Góes. Novatec

Wilson Moraes Góes. Novatec Wilson Moraes Góes Novatec Copyright 2014 Novatec Editora Ltda. Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. É proibida a reprodução desta obra, mesmo parcial, por qualquer processo,

Leia mais

DESENVOLVER E GERIR COMPETÊNCIAS EM CONTEXTO DE MUDANÇA (Publicado na Revista Hotéis de Portugal Julho/Agosto 2004)

DESENVOLVER E GERIR COMPETÊNCIAS EM CONTEXTO DE MUDANÇA (Publicado na Revista Hotéis de Portugal Julho/Agosto 2004) DESENVOLVER E GERIR COMPETÊNCIAS EM CONTEXTO DE MUDANÇA (Publicado na Revista Hotéis de Portugal Julho/Agosto 2004) por Mónica Montenegro, Coordenadora da área de Recursos Humanos do MBA em Hotelaria e

Leia mais

ICORLI. INSTALAÇÃO, CONFIGURAÇÃO e OPERAÇÃO EM REDES LOCAIS e INTERNET

ICORLI. INSTALAÇÃO, CONFIGURAÇÃO e OPERAÇÃO EM REDES LOCAIS e INTERNET INSTALAÇÃO, CONFIGURAÇÃO e OPERAÇÃO EM REDES LOCAIS e INTERNET 2010/2011 1 Protocolo TCP/IP É um padrão de comunicação entre diferentes computadores e diferentes sistemas operativos. Cada computador deve

Leia mais

Sistemas de Informação e o Computador

Sistemas de Informação e o Computador Índice Noção de Sistema de Informação O Sistema de Informação no Escritório A palavra Informática é derivada de duas outras palavras associadas de escritório a ela, a primeira é informação e a segunda

Leia mais

GUIA DE FUNCIONAMENTO DA UNIDADE CURRICULAR

GUIA DE FUNCIONAMENTO DA UNIDADE CURRICULAR Curso Engenharia Informática Ano letivo 2012-2013 Unidade Curricular Arquitectura de Computadores ECTS 6 Regime Obrigatório Ano 2º Semestre 2ºsem Horas de trabalho globais Docente (s) Luis Figueiredo Total

Leia mais

MC102 Algoritmos e Programação de Computadores 2ª Aula Programa, entrada e saída de dados

MC102 Algoritmos e Programação de Computadores 2ª Aula Programa, entrada e saída de dados MC102 Algoritmos e Programação de Computadores 2ª Aula Programa, entrada e saída de dados 1. Objetivos Falar sobre programa de computador, diferenciando programa em linguagem de máquina, de programa em

Leia mais

Manual Gespos Passagem de Dados Fecho de Ano

Manual Gespos Passagem de Dados Fecho de Ano Manual Gespos Passagem de Dados Fecho de Ano ÍNDICE PASSAGEM DE DADOS / FECHO DE ANO... 1 Objectivo da função... 1 Antes de efectuar a Passagem de dados / Fecho de Ano... 1 Cópia de segurança da base de

Leia mais

BARRAMENTO DO SISTEMA

BARRAMENTO DO SISTEMA BARRAMENTO DO SISTEMA Memória Principal Processador Barramento local Memória cachê/ ponte Barramento de sistema SCSI FireWire Dispositivo gráfico Controlador de vídeo Rede Local Barramento de alta velocidade

Leia mais

Linguagens de programação

Linguagens de programação Prof. André Backes Linguagens de programação Linguagem de Máquina Computador entende apenas pulsos elétricos Presença ou não de pulso 1 ou 0 Tudo no computador deve ser descrito em termos de 1 s ou 0 s

Leia mais

ARQUITETURA DE COMPUTADORES. Rogério Spindula Rosa

ARQUITETURA DE COMPUTADORES. Rogério Spindula Rosa ARQUITETURA DE COMPUTADORES 1 Rogério Spindula Rosa 2 EXECUÇÃO DE PROGRAMAS PROGRAMA 3 4 INTRODUÇÃO Hoje é raro escrever um programa diretamente em linguagem de computador em virtude da enorme dificuldade

Leia mais