OFICINA DA PESQUISA PROGRAMAÇÃO APLICADA À CIÊNCIA DA COMPUTAÇÃO

Save this PDF as:
 WORD  PNG  TXT  JPG

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

Download "OFICINA DA PESQUISA PROGRAMAÇÃO APLICADA À CIÊNCIA DA COMPUTAÇÃO"

Transcrição

1 OFICINA DA PESQUISA PROGRAMAÇÃO APLICADA À CIÊNCIA DA COMPUTAÇÃO Prof. Msc. Carlos José Giudice dos Santos

2 APLICABILIDADE E CRITÉRIOS DE AVALIAÇÃO DE LINGUAGENS DE PROGRAMAÇÃO

3 Aplicabilidade das Linguagens de Programação [1] Assim como a máquina a vapor foi inventada para substituir a força humana em trabalhos físicos, o computador foi inventado para auxiliar o esforço humano em trabalhos mentais que exigiam lógica e longos cálculos repetitivos. Os primeiros computadores eletromecânicos e eletrônicos eram máquinas caríssimas e usadas principalmente para a pesquisa e desenvolvimento de produtos e serviços com fins militares. As primeiras linguagens de programação eram praticamente inexistentes, ou seja, programava-se computadores por meio da ligação ou modificação de circuitos lógicos elétricos e/ou eletrônicos.

4 Aplicabilidade das Linguagens de Programação [2] A evolução da eletrônica trouxe quatro conquistas importantes: permitiu que os computadores ficassem cada vez menores, mais rápidos, mais confiáveis e principalmente mais baratos. Hoje os computadores estão presentes em todas as atividades humanas, controlando desde estações espaciais, usinas de energia, sistemas de produção fabril até motores de carros, geladeiras e fornos de micro-ondas. Esta grande quantidade de aplicações diferentes e nas mais diversas áreas criou uma necessidade de se desenvolver linguagens de programação com muitos objetivos diferentes de acordo com a aplicabilidade.

5 Aplicabilidade das Linguagens de Programação [3] É preciso fazer uma distinção entre linguagens de programação de baixo nível e de alto nível. As linguagens de baixo nível são orientadas para as máquinas e necessitam de um conhecimento profundo da arquitetura do computador para a criação de programas. São exemplos de linguagem de baixo nível: Plankalkül (Z3), ECS (Eniac Code System) e o Assembly. As linguagens de alto nível são orientadas para as pessoas e não exigem praticamente nenhum conhecimento da arquitetura do computador para se criar programas. São exemplos de linguagens de alto nível: Fortran, Cobol, Pascal, C, C#, SQL, VB, Java, etc.

6 Aplicabilidade das Linguagens de Programação [4] As principais áreas de aplicação das linguagens de programação de computadores hoje, os chamados domínios de programação são: 1. Aplicações científicas; 2. Aplicações comerciais; 3. Sistemas embarcados; 4. Aplicações industriais; 5. Inteligência artificial; 6. Programação para a Web; 7. Programação de sistemas (operacionais).

7 Aplicações Científicas [01] Os primeiros computadores digitais foram inventados na época da Segunda Guerra com o objetivo de auxiliar a pesquisa científica, especialmente aquela relacionada ao desenvolvimento de armas. De acordo com Sebesta (2011), as aplicações científicas possuem estrutura de dados relativamente simples, mas necessitam de suporte para cálculos matemáticos em ponto flutuante. Ainda de acordo com esse mesmo autor, as estruturas de dados mais utilizadas em pesquisas e/ou aplicações científicas são vetores e matrizes; as estruturas de controle são laços de contagem e seleção.

8 Aplicações Científicas [02] A primeira linguagem de programação utilizada em aplicações científicas foi a Assembly. Como veremos mais tarde, é uma linguagem muito rápida e eficaz, mas exige conhecimento profundo da arquitetura do computador (processador, memória, barramentos e dispositivos de entrada e saída). A primeira linguagem de programação de alto nível para aplicações científicas foi o Fortran. O Algol 60 foi desenvolvido como uma linguagem para utilização científica e também em outras áreas (uso geral). Entretanto, nenhuma linguagem inventada depois consegue bater o Fortran em termos de eficiência, razão pela qual ele ainda é utilizado até hoje.

9 Aplicações Comerciais O primeiro computador comercial do mundo foi o UNIVAC (década de 1950). Para utilizar este computador criou-se uma linguagem de programação para aplicações comerciais denominada FLOW-MATIC. Esta linguagem foi a base mais tarde para a criação da linguagem COBOL, que é utilizada até hoje. Esta linguagem é utilizada para manipulação e criação de dados usados em transações comerciais. É interessante notar que o SQL não concorre com o COBOL. O COBOL é uma linguagem procedural (permite obter uma resposta). O SQL não é procedural (permite apenas escolher as características da resposta).

10 Sistemas Embarcadas Se você já andou de carro, navio ou avião, ou se já programou um forno de micro-ondas, ou ainda, se já utilizou uma impressora, você já fez uso de sistemas embarcados. Sistemas embarcados são dispositivos ou circuitos eletrônicos que podem ser programados para executar uma função ou monitorar processos. Geralmente os sistemas embarcados são encontrados sob a forma de firmware (conjunto de instruções programas diretamente em um dispositivo eletrônico), que são escritos em linguagem Assembly ou linguagem de máquina.

11 Aplicações Industriais Hoje é muito comum que os processos industriais utilizem automação. Um robô que faz soldas durante o processo de fabricação de um carro funciona graças à sua programação, que é um sistema embarcado. Entretanto, quando eu tenho vários robôs e outros máquinas em vários processos de produção industrial, é necessário haver um tipo de controle para criar, coordenar e automatizar os diversos processos. Os sistemas de automação e controle geralmente utilizam um CLP (Controlador Lógico Programável) e uma linguagem de máquina denominada Ladder.

12 IA (Inteligência Artificial) [01] Sebesta (2011) define IA como uma grande área de aplicações computacionais que possui como principal característica o uso de computações simbólicas em vez de computações numéricas. O mesmo autor registra que este tipo de programação requer muita flexibilidade quando se compara com outros domínios de programação, como por exemplo, a habilidade de criar e executar segmentos de código durante a execução. A IA é definida como um sistema que exibe ou replica comportamentos inteligentes. A IA faz uso de um SBC (Sistema Baseado em Conhecimento).

13 IA (Inteligência Artificial) [02] Na literatura é comum encontrarmos o termo IA associado aos chamados (SE) Sistemas Especialistas. Os SE s são um caso específico dos SBC s. Os SE s são definidos como sistemas que solucionam problemas resolvidos apenas por pessoas especialistas. Um sistema convencional é baseado em um algoritmo que emite um resultado correto após cálculos numéricos processados de maneira repetitiva. Um SE é baseado em uma busca heurística (baseada em símbolos que representam um comportamento) e trabalha com problemas que não possuem uma solução convencional (uma resposta correta).

14 IA (Inteligência Artificial) [03] Os sistemas convencionais utilizam algoritmos de cálculos numéricos, com processos repetitivos manipulando grandes bases de dados. Os SE s utilizam análise heurística, com processos de inferência manipulando grandes bases de conhecimentos. A principal linguagem de programação utilizada em IA é a LISP, criada em Sebesta (2011) destaca que até hoje os SE s são programados em LISP ou em uma de suas parentes próximas. O mesmo autor destaca que recentemente muitas aplicações de IA estão sendo escritas em C.Scheme e em Prolog.

15 IA (Inteligência Artificial) [04] Carvalho (2006) justifica o uso da IA para capturar as habilidades de especialistas humanos porque eles são raros, caros, imprevisíveis, emocionais, ocupados e mortais. Os especialistas artificiais são consistentes, disponíveis, relativamente baratos e permanentes. Existem muitas questões éticas relacionadas com a IA que estão sendo discutidas hoje. A maioria desta questões éticas seguem duas linhas, a saber: 1. Até que ponto um ser com inteligência artificial tem consciência? 2. Até que ponto a inteligência artificial é potencialmente perigosa para a raça humana?

16 Programação para a Web A internet (World Wide Web) existe graças a uma razoável quantidade de linguagens de programação e uma grande quantidade de linguagens de marcação, sendo estas últimas padronizadas pelo W3C (World Wide Web Consortium). A linguagem de uso geral mais utilizada na Internet e em dispositivos móveis é a linguagem Java. Existem linguagens de scripting, que, tecnicamente falando, são bibliotecas prontas de códigos de linguagem que podem ser usados para a apresentação de conteúdos dinâmicos, como o Javascript. Alguns autores preferem chamar as linguagens de scripting de ferramentas.

17 Programação de sistemas operacionais [01] Como sabemos (ou deveríamos saber), um sistema operacional (SO) é um conjunto de aplicativos que fazem a intermediação entre a máquina e os programas que nós usamos. Basicamente um SO possui um núcleo (kernel) com uma interface com recursos de baixo nível (BIOS) e aplicativos de sistema. Trata-se do conjunto de aplicativos mais importante, porque nenhum hardware operado por usuários comuns funciona sem um SO. Além disso, um SO funciona todo o tempo. Na categoria de sistemas operacionais podemos incluir os protocolos de rede.

18 Programação de sistemas operacionais [02] Linus Torvalds, criador do kernel do SO Linux afirmou certa vez que a criação de um SO é uma boa oportunidade para você brincar de Deus, pois você cria um universo (sistema) cujas regras são determinadas por você. A linguagem de programação mais utilizada para se criar SO s no início da computação foi o Assembly. Nas décadas de 1960 e 1970, os grandes fabricantes de computadores (os mainframes), tais como a IBM, a DEC e a Burroughs desenvolveram linguagens de alto nível orientadas à máquina para poder desenvolver os seus SO s. Nasceram assim a PL/1 (IBM), a Bliss (DEC) e o Algol estendido (Burroughs).

19 Programação de sistemas operacionais [03] A grande vantagem de se escrever um SO em uma linguagem de alto nível é a portabilidade, ou seja, a capacidade de um SO ser instalado em máquinas com diferentes arquiteturas. O Unix foi quase todo escrito em C (algumas poucas partes em Assembly). Embora a linguagem C esteja mais próxima do inglês do que do Assembly, ela é considerada por muitos autores como uma linguagem de baixo nível. O Linux, o MAC OS e o Android são exemplos de SO que tem como origem o Unix. Alguns programadores consideram o C como uma linguagem perigosa.

20 Critérios de avaliação de linguagens Não existe um consenso entre cientistas da computação sobre as características desejáveis em uma linguagem de programação. Entretanto, para fins de avaliação, Sebesta (2011, p. 26) destaca que os critérios seguintes são considerados importantes por grande parte dos acadêmicos da área: 1. Legibilidade; 2. Facilidade de escrita; 3. Confiabilidade; 4. Custo.

21 1. Critério da Legibilidade [01] A facilidade de se ler e entender um programa de computador se traduz em um critério chamado de legibilidade. Antes de 1970, a principal característica positiva para se avaliar linguagens de programação eram a eficiência do código de máquina - programas pequenos, rápidos, orientados para a máquina.. Após a introdução do conceito de ciclo de vida de software, a manutenção do software passou a ser a parte mais importante deste ciclo, principalmente por causa do custo. O foco de orientação das linguagens passou a ser as pessoas e não mais as máquinas.

22 1. Critério da Legibilidade [02] Dentro do critério de legibilidade, existem algumas características que são particularmente importantes, a saber: Simplicidade geral Ortogonalidade Tipos de dados Projeto da sintaxe Os conceitos relacionados com estas características serão comentados a seguir.

23 1. Critério da Legibilidade [03] Em relação à simplicidade geral, uma linguagem simples é aquela que possui poucas construções básicas. Uma linguagem com muitas construções básicas torna-se difícil de aprender, porque a maioria dos programadores vai se concentrar em aprender alguns poucos recursos, ignorando outros que podem ser mais conhecidos por outros programadores. Assim, ocorre um problema de legibilidade quando um leitor acostumado com determinadas construções da linguagem se depara com construções não conhecidas por ele.

24 1. Critério da Legibilidade [04] Sebesta (2011) nos chama a atenção para o fato de que a multiplicidade de recursos é um grande complicador para a característica da legibilidade. A multiplicidade de recursos ocorre quando existe uma linguagem mais de uma maneira de realizar a mesma operação. O mesmo autor exemplifica este caso usando a linguagem Java, mostrando como incrementar uma variável de quatro modos diferentes: 1. count = count count++ 2. count += count

25 1. Critério da Legibilidade [05] Quando uma linguagem é simples demais, isto pode acarretar problemas de legibilidade. Neste sentido, Sebesta (2011) chama a atenção para um problema chamado sobrecarga de operadores. Utilizar o símbolo de + para fazer tanto a adição de variáveis isoladas quanto de variáveis do tipo vetor pode causar confusão para quem está lendo o programa. A simplicidade dos programas feitos em Assembly é extrema, mas quem já tentou determinar o que faz um determinado trecho do código nesta linguagem pode atestar que a legibilidade desta linguagem não é o seu forte.

26 1. Critério da Legibilidade [06] Em linguagem de programação, ortogonalidade significa que um conjunto relativamente pequeno de construções primitivas podem ser combinadas em um número pequeno de maneiras para construir as estruturas de controle e de dados de uma linguagem. Na prática, uma linguagem ortogonal seria mais fácil de aprender e teria menos exceções. Cada exceção é uma construção que precisa ser aprendida para ser evitada. O conceito de ortogonalidade vem do conceito matemático de ortogonal, em que vetores ortogonais são independentes uns dos outros.

27 1. Critério da Legibilidade [07] Em programação, quanto mais ortogonal for o projeto de uma linguagem, menor será o número de exceções às regras de linguagem. Isto significa um maior grau de regularidade no projeto, e esta característica torna uma linguagem mais fácil de aprender, ler e entender. Neste sentido, a linguagem C tem pouca ortogonalidade, sendo por este motivo, mais difícil de aprender, ler e entender que o Pascal, por exemplo. Entretanto, o excesso de ortogonalidade também é prejudicial, pois ela vai necessitar de muitos tipos primitivos, resultando em uma explosão de combinações.

28 1. Critério da Legibilidade [08] Resumindo... a ortogonalidade tem uma relação estreita com a independência. Por exemplo, se uma linguagem permite que uma instrução de programa utilize apenas registradores como operandos, podemos dizer que o projeto desta linguagem não é ortogonal ou seja é um projeto mais engessado, restrito e com menor facilidade de escrita (do código). O ideal seria permitir operar tanto com registradores quanto com endereços de memória. Excesso de ortogonalidade também é prejudicial, porque uma ampla liberdade de combinações pode permitir uma grande quantidade de construções complexas, e muita complexidade é desnecessário.

29 1. Critério da Legibilidade [09] Os tipos de dados também influenciam a legibilidade de um programa. De acordo com Sebesta (2011), a legibilidade de um programa fica facilitada quando existem tipos e estruturas de dados adequados às situações que enfrentamos ao escrever um programa. O exemplo que o autor utiliza é o uso de um tipo de variável numérica como Flag (por exemplo, Timeout = 1) em uma linha de código porque a linguagem não dispõe de um tipo de variável booleano (por exemplo, Timeout = true). Nesse caso, a linha de código com o tipo booleano é muito clara (legível), enquanto que uma linha de código como tipo numérico vai requerer análise para se saber do que trata esta linha de código.

30 1. Critério da Legibilidade [10] A última característica que afeta a legibilidade é o projeto da sintaxe. Sintaxe em uma linguagem de programação é um conjunto de regras que estabelece como serão apresentadas suas estruturas básicas (palavras). O formato dos identificadores (variáveis, constantes, etc) é essencial para a legibilidade. Quanto menor o tamanho do identificador, menor a legibilidade. Por exemplo, na linguagem interpretada BASIC, as variáveis podiam ter apenas uma letra, ou no máximo, uma letra e um número. Esta restrição por si só já é um problema devido ao reduzido nomes de variáveis possíveis. Outro problema seria a legibilidade. Em um programa em que tenho que manipular as variáveis Nome do cliente e Nome do fornecedor, em BASIC poderia ser N1 e N2.

31 1. Critério da Legibilidade [11] As variáveis N1 e N2 não nos diz muita coisa, e isso prejudica a legibilidade. Já uma linguagem em que as variáveis poderiam ser, por exemplo, Nome_Cliente e Nome_Fornecedor, não restariam dúvidas sobre o que significa estas variáveis. Outro problema de projeto de sintaxe diz respeito às palavras especiais. Se eu tenho um bloco de instruções que começa com um if e termina com um end, e um loop de repetição que começa com um while e também termina com um end, posso ter dificuldades para saber a que bloco do programa cada end está se referindo. Linguagens que possuem palavras específicas tais como um end if ou end loop melhoram a legibilidade.

32 2. Facilidade de escrita [01] Na visão de Sebesta (2011), a maioria das características que afetam a legibilidade também afetam, por motivos óbvios, a facilidade de escrita. Entretanto, a principal característica que afeta a facilidade de escrita é o domínio de programação. Em outras palavras, algumas linguagens foram desenvolvidas especialmente para um domínio específico. Exemplificando, não dá para comparar a facilidade de escrita do VB (Visual Basic) com o C quando o domínio de programação requer comandos para tratamento da interface gráfica com o usuário.

33 2. Facilidade de escrita [02] De maneira análoga, se o domínio de programação for a escrita de códigos para um sistema operacional, não dá para comparar o C com o VB, uma vez que o C foi uma linguagem projetada especialmente para escrever sistemas operacionais. Conforme visto anteriormente, assim como a simplicidade e a ortogonalidade afetam a legibilidade, também irão afetar a facilidade de escrita. Uma linguagem com um grande número de construções primitivas, além de mais difícil de aprender, pode levar um programador inexperiente a utilizar um comando errado com resultados inesperados.

34 2. Facilidade de escrita [03] Assim, a simplicidade ajuda na facilidade de escrita, desde que o número menor de construções primitivas (comandos) possa ser combinado de maneira eficiente e independente para criar novas construções, ou seja, o princípio da ortogonalidade. Outra característica das linguagens de programação que facilita a escrita é o suporte à abstração. Esta característica pode afetar tanto processos como dados. Um exemplo de suporte à abstração de processos ocorre quando um mesmo trecho de código é utilizado várias vezes ao longo de um programa.

35 2. Facilidade de escrita [04] Se eu tenho um trecho de programa que verifica se a entrada de dados pelo teclado é constituída apenas por números, e esse trecho é utilizado diversas vezes ao longo do programa, uma boa medida que facilitaria a escrita seria transformar esse trecho de programa em um subprograma. Desse modo, sempre que fosse necessário verificar se a entrada do teclado é numérica, bastaria chamar um subprograma. Esta técnica permite que a escrita do programa seja um trabalho menos tedioso, além de tornar mais simples e menor o número de linhas de código a serem escritas.

36 2. Facilidade de escrita [05] O suporte à abstração pode também afetar os tipos de dados. Por exemplo, algumas linguagens não suportam o uso de ponteiros, que são variáveis dinâmicas que armazenam um endereço de memória, e não um valor. Os ponteiros facilitam a escrita de programas que utilizam listas encadeadas, por exemplo, justamente pela facilidade de alocação dinâmica de memória. Sem esse suporte à abstração de dados, a criação de uma lista encadeada necessitaria de alocar espaço para cada uma das variáveis que compõem a lista.

37 2. Facilidade de escrita [05] A última característica que afeta a facilidade de escrita é a expressividade. Basicamente, esta característica pode ser descrita como a capacidade de uma linguagem em ter operadores poderosos que permitam fazer muitos cálculos em programas muito pequenos. Um exemplo que ilustra a expressividade de uma linguagem ocorre na linguagem C. A notação do comando count++ é muito mais expressiva e menor que a construção count = count + 1. Isto facilita a escrita deste tipo de construção nesta linguagem.

38 3. Confiabilidade [01] A confiabilidade é mais um critério usado para avaliação de linguagens de programação. Uma linguagem é considerada confiável quando o código de programa gerado por ela se comporta de acordo com as especificações em todas as condições de uso (SEBESTA, 2011). Quatro características afetam a confiabilidade, a saber: 1) Verificação de tipos; 2) Tratamento de exceções; 3) Utilização de apelidos; 4) Legibilidade e facilidade de escrita.

39 3. Confiabilidade [02] Para que uma linguagem de programação seja considerada confiável, é necessário que exista a verificação de tipos, tanto em tempo de compilação quanto em tempo de execução. Inúmeros erros de programas podem acontecer se uma linguagem não executar testes para verificar tipos. Por exemplo, atribuir um número real (de ponto flutuante) a uma variável descrita como um inteiro é um exemplo de erro que pode acontecer quando não existe a verificação de tipos. O ideal é que a verificação de tipos ocorra em tempo de compilação e em tempo de execução.

40 3. Confiabilidade [03] Entretanto, como a verificação de tipos em tempo de execução é mais cara, é imprescindível que pelo menos aconteça essa verificação em tempo de compilação. Outra característica que influencia na confiabilidade é o tratamento de exceções. Esta característica é descrita por Sebesta (2011) como a habilidade de interceptar erros em tempo de execução, tomar medidas corretivas e continuar a sua execução. É óbvio que um programa que não faça tratamento de exceções é pouco confiável, porque qualquer problema ou condição fora do normal fará com que este termine a sua execução antes do tempo.

41 3. Confiabilidade [04] Uma outra característica que afeta a confiabilidade é a utilização de apelidos. Este recurso de utilização de apelidos permite que variáveis com nomes diferentes acessem a mesma posição de memória. Geralmente as linguagens que possuem pouca flexibilidade na abstração de dados utilizam este recurso. Entretanto, este é um recurso perigoso, especialmente em linguagens que utilizam ponteiros. Resumindo, podemos dizer então que a utilização de apelidos afeta de maneira negativa a confiabilidade, ou seja, diminui a confiabilidade de uma linguagem.

42 3. Confiabilidade [05] A última característica que afeta a confiabilidade é, mais uma vez, a legibilidade e a facilidade de escrita. Em termos gerais, quanto mais fácil for escrever um programa, maiores serão as chances do programa estar correto (mais confiável). A legibilidade é importante também, tanto na fase de escrita como, principalmente, na fase de manutenção do programa durante seu ciclo de vida. Neste sentido, Sebesta (2011) destaca que programas difíceis de ler são também difíceis de escrever e de modificar.

43 4. Custo [01] O último critério de avaliação de linguagens de programação é o custo. De acordo com Sebesta (2011), o custo total de utilização de uma linguagem depende principalmente de seis fatores: 1. Custo de treinamento dos programadores: Este custo está diretamente relacionado com a simplicidade e a ortogonalidade. Como regra geral, podemos pensar que quanto mais poderosa é uma linguagem, maior será a dificuldade de aprendê-la, e consequentemente, maior será o custo de treinamento dos programadores.

44 4. Custo [02] 2. Custo de escrever programas: Este custo está diretamente relacionado com a facilidade de escrita. O objetivo e desejo de se desenvolver linguagens de alto nível está relacionado principalmente com a diminuição do custo de se escrever programas em determinada linguagem. 3. Custo de compilar programas: Como veremos mais adiante, compilar um programa significa traduzir um programa escrito em uma linguagem de alto nível para a linguagem de máquina. O problema é que alguns compiladores são muito caros. Geralmente, com o desenvolvimento de novas gerações de um mesmo compilador, este custo vai diminuindo.

45 4. Custo [03] 4. Custo de executar programas: Este custo está diretamente relacionado com o projeto da linguagem. Um exemplo dado por Sebesta (2011) que ilustra este tipo de custo é a execução de um código que faça a verificação de tipos durante o tempo de execução, o que acarretará em uma execução lenta. Por este motivo, durante o projeto das linguagens atuais, muita atenção é dada ao projeto do compilador, no sentido em que este crie um código otimizado, resultando em um compromisso entre o tamanho do código criado e a velocidade de execução do programa.

46 4. Custo [04] 5. Custo de implementação da linguagem: Se a implementação de uma linguagem após o seu projeto necessitar de um sistema de compilação / interpretação caro, ou necessitar que seus programas sejam executados em plataformas caras (hardwares poderosos), esta será uma característica que influenciará muito na divulgação da linguagem. Na visão se Sebesta (2011), um dos motivos da rápida aceitação da linguagem Java foi o fato de ter sistemas de compilação / interpretação gratuitos logo após a disponibilização de seu projeto ao público.

47 4. Custo [05] 6. Custo de confiabilidade: Se um programa tiver baixa confiabilidade e travar durante a sua execução em um sistema crítico (por exemplo, sistemas de controle de usinas, sistemas de controle de aeronaves, aparelhos médicos, etc), isto resultará em um custo proibitivo. Mesmo em sistemas não críticos, falhas recorrentes de programas de baixa confiabilidade podem apresentar custos altos ao longo do tempo.

48 Outros critérios de avaliação de linguagens Além dos critérios já destacados, Sebesta (2011) destaca mais dois critérios: a portabilidade e a generalidade. A portabilidade representa a facilidade que um programa tem em ser implementado em múltiplas plataformas de hardware. Isso exige principalmente um esforço de padronização da linguagem. A generalidade representa a facilidade de uma linguagem de se adaptar a várias gamas de aplicações diferentes. Isso vai exigir que a linguagem seja bastante completa e bem definida (padronizada).

49 BIBLIOGRAFIA CONSULTADA CARVALHO, Cedric Luiz de. Sistemas especialistas: inteligência artificial. Instituto de Informática UFG Disponível em: < ~cedric/ia/grad/ai-aula11-istemas%20especialistas.pdf>. Acesso em: 18 ago FORBELLONE, André Luiz Villar. Lógica de programação: a construção de algoritmos e estruturas de dados. 3.ed. São Paulo: Pearson Prentice Hall, SEBESTA, Robert. W. Conceitos de linguagens de programação. 9. ed. Porto Alegre: Bookman, 2011.

Paradigmas de Linguagens de Programação. Aspectos Preliminares

Paradigmas de Linguagens de Programação. Aspectos Preliminares Aspectos Preliminares Cristiano Lehrer Motivação (1/6) Aumento da capacidade de expressar idéias: Difícil conceituar estruturas quando não se pode descreve-las. Programadores são limitados pelas linguagens.

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

Introdução à Programação de Computadores

Introdução à Programação de Computadores 1. Objetivos Introdução à Programação de Computadores Nesta seção, vamos discutir os componentes básicos de um computador, tanto em relação a hardware como a software. Também veremos uma pequena introduçã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

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

11/3/2009. Software. Sistemas de Informação. Software. Software. A Construção de um programa de computador. A Construção de um programa de computador

11/3/2009. Software. Sistemas de Informação. Software. Software. A Construção de um programa de computador. A Construção de um programa de computador Sistemas de Informação Prof. Anderson D. Moura Um programa de computador é composto por uma seqüência de instruções, que é interpretada e executada por um processador ou por uma máquina virtual. Em um

Leia mais

Fonte (livro-texto): Conceitos de Linguagens de Programação, 4ed. Robert W. Sebesta

Fonte (livro-texto): Conceitos de Linguagens de Programação, 4ed. Robert W. Sebesta 1 Fonte (livro-texto): Conceitos de Linguagens de Programação, 4ed. Robert W. Sebesta Agenda 1. Razões para estudar conceitos de LPs 2. Domínios de programação 3. Critérios de avaliação de linguagens 4.

Leia mais

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

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

Introdução. Hardware X Software. Corpo Humano Parte Física. Capacidade de utilizar o corpo em atividades especificas explorando seus componentes

Introdução. Hardware X Software. Corpo Humano Parte Física. Capacidade de utilizar o corpo em atividades especificas explorando seus componentes Introdução Hardware X Software Corpo Humano Parte Física Componentes 18 Capacidade de utilizar o corpo em atividades especificas explorando seus componentes Hardware Introdução Parte física: placas, periféricos,

Leia mais

Softwares de Sistemas e de Aplicação

Softwares de Sistemas e de Aplicação Fundamentos dos Sistemas de Informação Softwares de Sistemas e de Aplicação Profª. Esp. Milena Resende - milenaresende@fimes.edu.br Visão Geral de Software O que é um software? Qual a função do software?

Leia mais

Notas da Aula 15 - Fundamentos de Sistemas Operacionais

Notas da Aula 15 - Fundamentos de Sistemas Operacionais Notas da Aula 15 - Fundamentos de Sistemas Operacionais 1. Software de Entrada e Saída: Visão Geral Uma das tarefas do Sistema Operacional é simplificar o acesso aos dispositivos de hardware pelos processos

Leia mais

Paradigmas e Histórico de

Paradigmas e Histórico de Paradigmas e Histórico de Linguagens de Programação Linguagens de Programação Departamento de Computação Universidade Federal de Sergipe Influências sobre o projeto de linguagens Arquitetura do computador

Leia mais

Introdução. Paradigmas de Linguagens de Programação. Heloisa de Arruda Camargo. Motivos para estudar os conceitos de linguagens de programação

Introdução. Paradigmas de Linguagens de Programação. Heloisa de Arruda Camargo. Motivos para estudar os conceitos de linguagens de programação Paradigmas de Linguagens de Programação Heloisa de Arruda Camargo Introdução Motivos para estudar os conceitos de linguagens de programação Aumento da capacidade de expressar idéias É difícil para as pessoas

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

Figura 01 Kernel de um Sistema Operacional

Figura 01 Kernel de um Sistema Operacional 01 INTRODUÇÃO 1.5 ESTRUTURA DOS SISTEMAS OPERACIONAIS O Sistema Operacional é formado por um Conjunto de rotinas (denominado de núcleo do sistema ou kernel) que oferece serviços aos usuários e suas aplicações

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

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

Curso Tecnológico de Redes de Computadores 5º período Disciplina: Tecnologia WEB Professor: José Maurício S. Pinheiro V. 2009-2

Curso Tecnológico de Redes de Computadores 5º período Disciplina: Tecnologia WEB Professor: José Maurício S. Pinheiro V. 2009-2 Curso Tecnológico de Redes de Computadores 5º período Disciplina: Tecnologia WEB Professor: José Maurício S. Pinheiro V. 2009-2 Aula 3 Virtualização de Sistemas 1. Conceito Virtualização pode ser definida

Leia mais

A Evolução dos Sistemas Operacionais

A Evolução dos Sistemas Operacionais Capítulo 3 A Evolução dos Sistemas Operacionais Neste capítulo, continuaremos a tratar dos conceitos básicos com a intensão de construirmos, agora em um nível mais elevado de abstração, o entendimento

Leia mais

16/09/2012. Agenda. Introdução. Introdução. Tipos de Software (Básico) Tipos de Software. Curso Conexão Noções de Informática

16/09/2012. Agenda. Introdução. Introdução. Tipos de Software (Básico) Tipos de Software. Curso Conexão Noções de Informática Curso Conexão Noções de Informática Aula 2 Arquitetura de Computadores (Software) Agenda Introdução; Tipos de Software; Básico; Aplicativo; Livre; Proprietário. Pirataria de Software; Demos, Freewares

Leia mais

Programação de. Programa. Bibliografia. Páginas electrónicas de PM. Regras das aulas de laboratório. Métodos de Ensino - Aulas

Programação de. Programa. Bibliografia. Páginas electrónicas de PM. Regras das aulas de laboratório. Métodos de Ensino - Aulas Programa Programação de Microprocessadores 1º Ano 2º Semestre A arquitectura dos computadores A linguagem C 1 aula 7 aulas Talvez haja mais algum assunto a abordar nas aulas seguintes Mestrado Integrado

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

1 - Processamento de dados

1 - Processamento de dados Conceitos básicos sobre organização de computadores 2 1 - Processamento de dados O que é processamento? O que é dado? Dado é informação? Processamento é a manipulação das informações coletadas (dados).

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

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

O que é um programa? Programa é uma lista de instruções que descrevem uma tarefa a ser realizada pelo computador.

O que é um programa? Programa é uma lista de instruções que descrevem uma tarefa a ser realizada pelo computador. O que é um programa? Programa é uma lista de instruções que descrevem uma tarefa a ser realizada pelo computador. Linguagem de Programação Uma linguagem de programação é um método padronizado para expressar

Leia mais

Introdução a Computação. A Primeira Geração. A Segunda Geração. Geração dos Computadores. Geração dos Computadores. Geração de Computadores

Introdução a Computação. A Primeira Geração. A Segunda Geração. Geração dos Computadores. Geração dos Computadores. Geração de Computadores Introdução a Computação Geração de Computadores 1ª Geração: 1950 Circuitos eletrônicos a Válvulas Operações Internas em Milissegundos Programados em Linguagem de Máquina 1 2 A Primeira Geração O UNIVAC

Leia mais

Conceitos de Linguagens de Programação

Conceitos de Linguagens de Programação Conceitos de Linguagens de Programação Aula 07 Nomes, Vinculações, Escopos e Tipos de Dados Edirlei Soares de Lima Introdução Linguagens de programação imperativas são abstrações

Leia mais

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO Conceitos básicos e serviços do Sistema Operacional Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO Tipos de serviço do S.O. O S.O.

Leia mais

Introdução. Introdução. Introdução. Organização Estruturada de Computadores. Introdução. Máquinas Multiníveis

Introdução. Introdução. Introdução. Organização Estruturada de Computadores. Introdução. Máquinas Multiníveis Ciência da Computação Arq. e Org. de Computadores Máquinas Multiníveis Prof. Sergio Ribeiro Computador digital máquina que resolve problemas executando uma série de instruções. Programa conjunto de instruções

Leia mais

A Linguagem Algorítmica Estrutura de Repetição. Ex. 2

A Linguagem Algorítmica Estrutura de Repetição. Ex. 2 Estrutura de Repetição. Ex. 2 A ESTRUTURA Enquanto faça{} É MELHOR UTILIZADA PARA SITUAÇÕES ONDE O TESTE DE CONDIÇÃO (V OU F) PRECISA SER VERIFICADO NO INÍCIO DA ESTRUTURA DE REPETIÇÃO.

Leia mais

Linguagens de Programação. Introdução. Carlos Bazilio bazilio@ic.uff.br http://www.ic.uff.br/~bazilio/cursos/lp

Linguagens de Programação. Introdução. Carlos Bazilio bazilio@ic.uff.br http://www.ic.uff.br/~bazilio/cursos/lp Linguagens de Programação Introdução Carlos Bazilio bazilio@ic.uff.br http://www.ic.uff.br/~bazilio/cursos/lp Motivação Algumas questões filosóficas Por quê existe mais de uma linguagem de programação?

Leia mais

5 Mecanismo de seleção de componentes

5 Mecanismo de seleção de componentes Mecanismo de seleção de componentes 50 5 Mecanismo de seleção de componentes O Kaluana Original, apresentado em detalhes no capítulo 3 deste trabalho, é um middleware que facilita a construção de aplicações

Leia mais

UNIVERSIDADE FEDERAL DE UBERLÂNDIA Faculdade de Computação Curso de Introdução à Informática Prof: Anilton Joaquim da Silva / Ezequiel Roberto Zorzal

UNIVERSIDADE FEDERAL DE UBERLÂNDIA Faculdade de Computação Curso de Introdução à Informática Prof: Anilton Joaquim da Silva / Ezequiel Roberto Zorzal UNIVERSIDADE FEDERAL DE UBERLÂNDIA Faculdade de Computação Curso de Introdução à Informática Prof: Anilton Joaquim da Silva / Ezequiel Roberto Zorzal AULA Informática: Aplicações e Benefícios Advocacia

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

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

ETEC RAPOSO TAVARES GESTÃO DE SISTEMAS OPERACIONAIS I. Máquina Virtual. Instalação de S.O. em dual boot. 1º Semestre 2010 PROF.

ETEC RAPOSO TAVARES GESTÃO DE SISTEMAS OPERACIONAIS I. Máquina Virtual. Instalação de S.O. em dual boot. 1º Semestre 2010 PROF. ETEC RAPOSO TAVARES GESTÃO DE SISTEMAS OPERACIONAIS I Máquina Virtual Instalação de S.O. em dual boot 1º Semestre 2010 PROF. AMARAL Na ciência da computação, máquina virtual é o nome dado a uma máquina,

Leia mais

Disciplina: Organização de computadores

Disciplina: Organização de computadores Disciplina: Organização de computadores Professora: Carolina D. G. dos Santos E-mail: profcarolinadgs@gmail.com Página: profcarolinadgs.webnode.com.br Unip / Prof. a Carolina 1 à Computador Conceitos Básicos

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

INTRODUÇÃO A PROGRAMAÇÃO ESTRUTURADA DE COMPUTADORES EM C

INTRODUÇÃO A PROGRAMAÇÃO ESTRUTURADA DE COMPUTADORES EM C INTRODUÇÃO A PROGRAMAÇÃO ESTRUTURADA DE COMPUTADORES EM C Prof. Msc. Helio Esperidião PROGRAMAS Um computador nada mais faz do que executar programas. Um programa é simplesmente uma seqüência de instruções

Leia mais

Informática. Prof. Macêdo Firmino. Macêdo Firmino (IFRN) Informática Setembro de 2011 1 / 25

Informática. Prof. Macêdo Firmino. Macêdo Firmino (IFRN) Informática Setembro de 2011 1 / 25 Informática Prof. Macêdo Firmino Introdução a Informática Macêdo Firmino (IFRN) Informática Setembro de 2011 1 / 25 O Que é um Computador? É uma máquina composta de um conjunto de partes eletrônicas e

Leia mais

CISC RISC Introdução A CISC (em inglês: Complex Instruction Set Computing, Computador com um Conjunto Complexo de Instruções), usada em processadores Intel e AMD; suporta mais instruções no entanto, com

Leia mais

Programação I. Departamento de Engenharia Rural Centro de Ciências Agrárias

Programação I. Departamento de Engenharia Rural Centro de Ciências Agrárias Departamento de Engenharia Rural Centro de Ciências Agrárias Programação I Prof. Bruno Vilela Oliveira bruno@cca.ufes.br http://www.brunovilela.webnode.com.br Programas e Linguagens Para executar uma tarefa

Leia mais

FACULDADE PITÁGORAS DISCIPLINA: ARQUITETURA DE COMPUTADORES

FACULDADE PITÁGORAS DISCIPLINA: ARQUITETURA DE COMPUTADORES FACULDADE PITÁGORAS DISCIPLINA: ARQUITETURA DE COMPUTADORES Prof. Ms. Carlos José Giudice dos Santos cpgcarlos@yahoo.com.br www.oficinadapesquisa.com.br Conceito de Computador Um computador digital é

Leia mais

Computadores de Programação (MAB353)

Computadores de Programação (MAB353) Computadores de Programação (MAB353) Aula 19: Visão geral sobre otimização de programas 06 de julho de 2010 1 2 3 Características esperadas dos programas O primeiro objetivo ao escrever programas de computador

Leia mais

Unidade Central de Processamento Organização da UCP Execução de instruções em paralelo ("pipeline") Execução de programas

Unidade Central de Processamento Organização da UCP Execução de instruções em paralelo (pipeline) Execução de programas http://www.ic.uff.br/~debora/fac! Dar noções iniciais dos componentes básicos de um sistema de computador, assim também como conceitos fundamentais necessários para a manipulação de informação dentro do

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

Algoritmos e Programação I

Algoritmos e Programação I Algoritmos e Programação I Introdução a Computação Prof. Fernando Maia da Mota mota.fernandomaia@gmail.com CPCX/UFMS Fernando Maia da Mota 1 Computadores são dispositivos que só sabem fazer um tipo de

Leia mais

FAT32 ou NTFS, qual o melhor?

FAT32 ou NTFS, qual o melhor? FAT32 ou NTFS, qual o melhor? Entenda quais as principais diferenças entre eles e qual a melhor escolha O que é um sistema de arquivos? O conceito mais importante sobre este assunto, sem sombra de dúvidas,

Leia mais

1. NÍVEL CONVENCIONAL DE MÁQUINA (Cont.) 1.3. INSTRUÇÕES Conceitos Básicos

1. NÍVEL CONVENCIONAL DE MÁQUINA (Cont.) 1.3. INSTRUÇÕES Conceitos Básicos 1. NÍVEL CONVENCIONAL DE MÁQUINA (Cont.) 1.3. INSTRUÇÕES Conceitos Básicos Já estudamos anteriormente que os processadores funcionam (ou melhor, o seu hardware funciona) através de ordens simples e básicas,

Leia mais

Computador Digital Circuitos de um computador (Hardware)

Computador Digital Circuitos de um computador (Hardware) Computador Digital SIS17 - Arquitetura de Computadores (Parte I) Máquina que pode resolver problemas executando uma série de instruções que lhe são fornecidas. Executa Programas conjunto de instruções

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

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

UMA BREVE INTRODUÇÃO AO ESTUDO E IMPLEMENTAÇÃO DE COMPILADORES

UMA BREVE INTRODUÇÃO AO ESTUDO E IMPLEMENTAÇÃO DE COMPILADORES UMA BREVE INTRODUÇÃO AO ESTUDO E IMPLEMENTAÇÃO DE COMPILADORES 1 BRANCO; Guido Aparecido Junior, 2 TAMAE, Rodrigo Yoshio 1-Discente do Curso Sistemas de Informação FAEG/Garça 2-Docente do Curso Sistemas

Leia mais

Organização e Arquitetura de Computadores I. de Computadores

Organização e Arquitetura de Computadores I. de Computadores Universidade Federal de Campina Grande Unidade Acadêmica de Sistemas e Computação Curso de Bacharelado em Ciência da Computação Organização e Arquitetura de Computadores I Organização Básica B de Computadores

Leia mais

Parte II Introdução a Linguagens de Programação

Parte II Introdução a Linguagens de Programação Programação de Computadores III Aula 1 Professor Leandro Augusto Frata Fernandes laffernandes@ic.uff.br Material disponível em http://www.ic.uff.br/~laffernandes/teaching/2011.1/tcc-03.063 Roteiro da Aula

Leia mais

Sistemas Operacionais

Sistemas Operacionais UNIVERSIDADE BANDEIRANTE DE SÃO PAULO INSTITUTO POLITÉCNICO CURSO DE SISTEMAS DE INFORMAÇÃO Sistemas Operacionais Notas de Aulas: Tópicos 7 e 8 Estrutura do Sistema Operacional São Paulo 2009 1 Sumário

Leia mais

Sistemas Operacionais 1/66

Sistemas Operacionais 1/66 Sistemas Operacionais 1/66 Roteiro Máquinas virtuais Emuladores Propriedades Benefícios Futuro 2/66 Sistemas de Computadores Os sistemas de computadores são projetados com basicamente 3 componentes: hardware

Leia mais

Engenharia de Software

Engenharia de Software Engenharia de Software O que é a engenharia de software É um conjunto integrado de métodos e ferramentas utilizadas para especificar, projetar, implementar e manter um sistema. Método É uma prescrição

Leia mais

Sistemas Operacionais. Roteiro. Sistemas de Computadores. Os sistemas de computadores são projetados com basicamente 3 componentes: Marcos Laureano

Sistemas Operacionais. Roteiro. Sistemas de Computadores. Os sistemas de computadores são projetados com basicamente 3 componentes: Marcos Laureano Sistemas Operacionais Marcos Laureano 1/66 Roteiro Máquinas virtuais Emuladores Propriedades Benefícios Futuro 2/66 Sistemas de Computadores Os sistemas de computadores são projetados com basicamente 3

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

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

4 Estrutura do Sistema Operacional. 4.1 - Kernel

4 Estrutura do Sistema Operacional. 4.1 - Kernel 1 4 Estrutura do Sistema Operacional 4.1 - Kernel O kernel é o núcleo do sistema operacional, sendo responsável direto por controlar tudo ao seu redor. Desde os dispositivos usuais, como unidades de disco,

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

SISTEMAS OPERACIONAIS ABERTOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com

SISTEMAS OPERACIONAIS ABERTOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com - Aula 9-1. O KERNEL DO LINUX Nos sistemas GNU/Linux, todas as distribuições baseadas nos sistemas GNU/Linux existentes são compatíveis, graças ao uso de um kernel único desenvolvido por uma equipe de

Leia mais

Programação de Computadores

Programação de Computadores Programação de Computadores Curso Engenharia Civil Modalidade Superior Professora Michelle Nery Agenda Introdução a Programação Algoritmos VS Programa 2 Algoritmos Um algoritmo pode ser definido como uma

Leia mais

ALP Algoritmos e Programação. . Linguagens para Computadores

ALP Algoritmos e Programação. . Linguagens para Computadores ALP Algoritmos e Programação Iniciação aos computadores. Linguagens para Computadores. Compiladores, Interpretadores. Ambientes de Programação 1 Linguagens para Computadores. Linguagem binária: Dispositivos

Leia mais

SISTEMAS OPERACIONAIS. Apostila 03 Estrutura do Sistema Operacional UNIBAN

SISTEMAS OPERACIONAIS. Apostila 03 Estrutura do Sistema Operacional UNIBAN SISTEMAS OPERACIONAIS Apostila 03 Estrutura do Sistema Operacional UNIBAN 1.0 O Sistema Operacional como uma Máquina Virtual A arquitetura (conjunto de instruções, organização de memória, E/S e estrutura

Leia mais

Fundamentos de Sistemas Operacionais

Fundamentos de Sistemas Operacionais Fundamentos de Sistemas Operacionais Professor: João Fábio de Oliveira jfabio@amprnet.org.br (41) 9911-3030 Objetivo: Apresentar o que são os Sistemas Operacionais, seu funcionamento, o que eles fazem,

Leia mais

CONCEITOS BÁSICOS SOBRE PROGRAMAÇÃO Programação Orientada a Objetos (POO)

CONCEITOS BÁSICOS SOBRE PROGRAMAÇÃO Programação Orientada a Objetos (POO) CONCEITOS BÁSICOS SOBRE PROGRAMAÇÃO Programação Orientada a Objetos (POO) Profa. Vania V. Estrela, Profa. Albany E. Herrmann 1. Programação Programação requer o uso de uma linguagem, cuja sintaxe geralmente

Leia mais

Introdução à Engenharia de Computação

Introdução à Engenharia de Computação Introdução à Engenharia de Computação Tópico: O Computador como uma Multinível José Gonçalves - Introdução à Engenharia de Computação Visão Tradicional Monitor Placa-Mãe Processador Memória RAM Placas

Leia mais

Organização de Computadores Software

Organização de Computadores Software Organização de Computadores Software Professor Marcus Vinícius Midena Ramos Colegiado de Engenharia de Computação (74)3614.1936 marcus.ramos@univasf.edu.br www.univasf.edu.br/~marcus.ramos Objetivos: Entender

Leia mais

SISTEMAS OPERACIONAIS. Maquinas Virtuais e Emuladores

SISTEMAS OPERACIONAIS. Maquinas Virtuais e Emuladores SISTEMAS OPERACIONAIS Maquinas Virtuais e Emuladores Plano de Aula Máquinas virtuais Emuladores Propriedades Benefícios Futuro Sistemas de Computadores Os sistemas de computadores são projetados com basicamente

Leia mais

O Hardware e o Software do Computador

O Hardware e o Software do Computador O Hardware e o Software do Computador Aula 3 Parte 2 Software de Computador Aplicativo Horizontal: tarefas genéricas, para quaisquer organizações Aplicativo Vertical: tarefas específicas, para organizações

Leia mais

MÓDULO 11 ELEMENTOS QUE FAZEM PARTE DO PROJETO DO SISTEMA

MÓDULO 11 ELEMENTOS QUE FAZEM PARTE DO PROJETO DO SISTEMA MÓDULO 11 ELEMENTOS QUE FAZEM PARTE DO PROJETO DO SISTEMA Através dos elementos que fazem parte do projeto do sistema é que podemos determinar quais as partes do sistema que serão atribuídas às quais tipos

Leia mais

Edeyson Andrade Gomes

Edeyson Andrade Gomes Sistemas Operacionais Conceitos de Arquitetura Edeyson Andrade Gomes www.edeyson.com.br Roteiro da Aula Máquinas de Níveis Revisão de Conceitos de Arquitetura 2 Máquina de Níveis Máquina de níveis Computador

Leia mais

Unidade III FUNDAMENTOS DE SISTEMAS. Prof. Victor Halla

Unidade III FUNDAMENTOS DE SISTEMAS. Prof. Victor Halla Unidade III FUNDAMENTOS DE SISTEMAS OPERACIONAIS Prof. Victor Halla Conteúdo Arquitetura de Processadores: Modo Operacional; Velocidade; Cache; Barramento; Etc. Virtualização: Maquinas virtuais; Gerenciamento

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

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 05 Estrutura e arquitetura do SO Parte 1. Cursos de Computação

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 05 Estrutura e arquitetura do SO Parte 1. Cursos de Computação Cursos de Computação Sistemas Operacionais Prof. M.Sc. Sérgio Teixeira Aula 05 Estrutura e arquitetura do SO Parte 1 Referência: MACHADO, F.B. ; MAIA, L.P. Arquitetura de Sistemas Operacionais. 4.ed. LTC,

Leia mais

Sistemas Operacionais

Sistemas Operacionais 7 Sistemas Operacionais 7.1 Fundamentos da ciência da computação Cengage Learning Objetivos 7.2 Compreender o papel do sistema operacional. Compreender o processo de inicialização para carregar o sistema

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

Aula 26: Arquiteturas RISC vs. CISC

Aula 26: Arquiteturas RISC vs. CISC Aula 26: Arquiteturas RISC vs CISC Diego Passos Universidade Federal Fluminense Fundamentos de Arquiteturas de Computadores Diego Passos (UFF) Arquiteturas RISC vs CISC FAC 1 / 33 Revisão Diego Passos

Leia mais

Processos e Threads (partes I e II)

Processos e Threads (partes I e II) Processos e Threads (partes I e II) 1) O que é um processo? É qualquer aplicação executada no processador. Exe: Bloco de notas, ler um dado de um disco, mostrar um texto na tela. Um processo é um programa

Leia mais

Arquitetura e Organização de Computadores Introdução à Organização do Computador

Arquitetura e Organização de Computadores Introdução à Organização do Computador 1 Arquitetura e Organização de Computadores Introdução à Organização do Computador Professor: João Paulo de Brito Gonçalves Curso: Sistemas de Informação Introdução 2 O Computador é uma ferramenta que

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Aula 6 Estrutura de Sistemas Operacionais Prof.: Edilberto M. Silva http://www.edilms.eti.br Baseado no material disponibilizado por: SO - Prof. Edilberto Silva Prof. José Juan Espantoso

Leia mais

Núcleo de Pós Graduação Pitágoras

Núcleo de Pós Graduação Pitágoras Núcleo de Pós Graduação Pitágoras Professor: Fernando Zaidan Disciplina: Arquitetura da Informática e Automação MBA Gestão em Tecnologia 1 da Informaçao 2 Figura: Tela do IBM Mainframe Fonte: Arquivo próprio

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Processos I: Threads, virtualização e comunicação via protocolos Prof. MSc. Hugo Souza Nesta primeira parte sobre os Processos Distribuídos iremos abordar: Processos e a comunicação

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

Segurança Internet. Fernando Albuquerque. fernando@cic.unb.br www.cic.unb.br/docentes/fernando (061) 273-3589

Segurança Internet. Fernando Albuquerque. fernando@cic.unb.br www.cic.unb.br/docentes/fernando (061) 273-3589 Segurança Internet Fernando Albuquerque fernando@cic.unb.br www.cic.unb.br/docentes/fernando (061) 273-3589 Tópicos Introdução Autenticação Controle da configuração Registro dos acessos Firewalls Backups

Leia mais

EMENTAS DO CURSO SUPERIOR DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

EMENTAS DO CURSO SUPERIOR DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS EMENTAS DO CURSO SUPERIOR DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS INTRODUÇÃO À COMPUTAÇÃO 60 h 1º Evolução histórica dos computadores. Aspectos de hardware: conceitos básicos de CPU, memórias,

Leia mais

Requisitos de Software

Requisitos de Software Requisitos de Software Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 6 Slide 1 Objetivos Apresentar os conceitos de requisitos de usuário e de sistema Descrever requisitos funcionais

Leia mais

Disciplina: Introdução à informática Profª Érica Barcelos

Disciplina: Introdução à informática Profª Érica Barcelos Disciplina: Introdução à informática Profª Érica Barcelos CAPÍTULO 3 1. ARQUITETURA DO COMPUTAÇÃO- SOFTWARE Vimos nos capítulos anteriores que durante muitas décadas vários projetos foram realizados para

Leia mais

Programação Elementar de Computadores Jurandy Soares

Programação Elementar de Computadores Jurandy Soares Programação Elementar de Computadores Jurandy Soares Básico de Computadores Computador: dispositivos físicos + programas Dispositivos físicos: hardware Programas: as instruções que dizem aos dispositivos

Leia mais

Arquitetura de Computadores. Introdução aos Sistemas Operacionais

Arquitetura de Computadores. Introdução aos Sistemas Operacionais Arquitetura de Computadores Introdução aos Sistemas Operacionais O que é um Sistema Operacional? Programa que atua como um intermediário entre um usuário do computador ou um programa e o hardware. Os 4

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

Introdução à Arquitetura de Computadores IFES Campus Serra

Introdução à Arquitetura de Computadores IFES Campus Serra Os computadores atuais possuem seis ou mais níveis de máquinas conforme podemos observar no quadro abaixo Nível de linguagem orientada para problemas Nível de linguagem de montagem Nível de sistema operacional

Leia mais

Arquitetura de Sistemas Operacionais Machado/Maia. Arquitetura de Sistemas

Arquitetura de Sistemas Operacionais Machado/Maia. Arquitetura de Sistemas Arquitetura de Sistemas Operacionais Capítulo 4 Estrutura do Sistema Operacional Cap. 4 Estrutura do Sistema 1 Sistemas Operacionais Pitágoras Fadom Divinópolis Material Utilizado na disciplina Sistemas

Leia mais

Aplicações. Sistema Operacional Hardware. Os sistemas de computadores são projetados com basicamente 3 componentes: Máquinas Virtuais e Emuladores

Aplicações. Sistema Operacional Hardware. Os sistemas de computadores são projetados com basicamente 3 componentes: Máquinas Virtuais e Emuladores Máquinas Virtuais e Emuladores Marcos Aurelio Pchek Laureano Sistemas de Computadores Os sistemas de computadores são projetados com basicamente 3 componentes: hardware sistema operacional aplicações Sistemas

Leia mais