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

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.

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 À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

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

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. 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

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

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

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

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

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

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

Orientação a Objetos

Orientação a Objetos 1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou

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

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

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

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

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

Entendendo como funciona o NAT

Entendendo como funciona o NAT Entendendo como funciona o NAT Vamos inicialmente entender exatamente qual a função do NAT e em que situações ele é indicado. O NAT surgiu como uma alternativa real para o problema de falta de endereços

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

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

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

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

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

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

Capacidade = 512 x 300 x 20000 x 2 x 5 = 30.720.000.000 30,72 GB

Capacidade = 512 x 300 x 20000 x 2 x 5 = 30.720.000.000 30,72 GB Calculando a capacidade de disco: Capacidade = (# bytes/setor) x (méd. # setores/trilha) x (# trilhas/superfície) x (# superfícies/prato) x (# pratos/disco) Exemplo 01: 512 bytes/setor 300 setores/trilha

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Sistemas Operacionais Prof. Marcelo Sabaris Carballo Pinto Gerenciamento de Dispositivos Gerenciamento de Dispositivos de E/S Introdução Gerenciador de Dispositivos Todos os dispositivos

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

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

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

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

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

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

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

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

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

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

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

Lógica de Programação

Lógica de Programação Lógica de Programação Softblue Logic IDE Guia de Instalação www.softblue.com.br Sumário 1 O Ensino da Lógica de Programação... 1 2 A Ferramenta... 1 3 Funcionalidades... 2 4 Instalação... 3 4.1 Windows...

Leia mais

Desenvolvendo Websites com PHP

Desenvolvendo Websites com PHP Desenvolvendo Websites com PHP Aprenda a criar Websites dinâmicos e interativos com PHP e bancos de dados Juliano Niederauer 19 Capítulo 1 O que é o PHP? O PHP é uma das linguagens mais utilizadas na Web.

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

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

Capítulo 3. Avaliação de Desempenho. 3.1 Definição de Desempenho

Capítulo 3. Avaliação de Desempenho. 3.1 Definição de Desempenho 20 Capítulo 3 Avaliação de Desempenho Este capítulo aborda como medir, informar e documentar aspectos relativos ao desempenho de um computador. Além disso, descreve os principais fatores que influenciam

Leia mais

1. CAPÍTULO COMPUTADORES

1. CAPÍTULO COMPUTADORES 1. CAPÍTULO COMPUTADORES 1.1. Computadores Denomina-se computador uma máquina capaz de executar variados tipos de tratamento automático de informações ou processamento de dados. Os primeiros eram capazes

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

TÉCNICAS DE PROGRAMAÇÃO

TÉCNICAS DE PROGRAMAÇÃO TÉCNICAS DE PROGRAMAÇÃO (Adaptado do texto do prof. Adair Santa Catarina) ALGORITMOS COM QUALIDADE MÁXIMAS DE PROGRAMAÇÃO 1) Algoritmos devem ser feitos para serem lidos por seres humanos: Tenha em mente

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

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

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

ENGENHARIA DE SOFTWARE DESENVOLVIMENTO EM CAMADAS

ENGENHARIA DE SOFTWARE DESENVOLVIMENTO EM CAMADAS ENGENHARIA DE SOFTWARE DESENVOLVIMENTO EM CAMADAS Uma estrutura para um projeto arquitetural de software pode ser elaborada usando camadas e partições. Uma camada é um subsistema que adiciona valor a subsistemas

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

Montagem e Manutenção. Luís Guilherme A. Pontes

Montagem e Manutenção. Luís Guilherme A. Pontes Montagem e Manutenção Luís Guilherme A. Pontes Introdução Qual é a importância da Montagem e Manutenção de Computadores? Sistema Binário Sistema Binário Existem duas maneiras de se trabalhar e armazenar

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

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

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

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

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

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES 3.1 - IDENTIFICADORES Os objetos que usamos no nosso algoritmo são uma representação simbólica de um valor de dado. Assim, quando executamos a seguinte instrução:

Leia mais

28/9/2010. Paralelismo no nível de instruções Processadores superescalares

28/9/2010. Paralelismo no nível de instruções Processadores superescalares Arquitetura de Computadores Paralelismo no nível de instruções Processadores superescalares Prof. Marcos Quinet Universidade Federal Fluminense P.U.R.O. Processadores superescalares A partir dos resultados

Leia mais

Everson Scherrer Borges João Paulo de Brito Gonçalves

Everson Scherrer Borges João Paulo de Brito Gonçalves Everson Scherrer Borges João Paulo de Brito Gonçalves 1 Tipos de Sistemas Operacionais Os tipos de sistemas operacionais e sua evolução estão relacionados diretamente com a evolução do hardware e das

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

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

LÓGICA DE PROGRAMAÇÃO

LÓGICA DE PROGRAMAÇÃO Todos direitos reservados. Proibida a reprodução, mesmo parcial, por qualquer processo mecânico, eletrônico, reprográfico, etc., sem a autorização, por escrito, do(s) autor(es) e da editora. LÓGICA DE

Leia mais

Sistemas de Informações Gerenciais

Sistemas de Informações Gerenciais Sistemas de Informações Gerenciais Aula 3 Sistema de Informação Conceito, Componentes e Evolução Professora: Cintia Caetano INTRODUÇÃO Conceito: Um Sistema de Informação (SI) é um sistema cujo elemento

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

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

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

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

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

DIFERENÇAS ENTRE HUB, SWITCH E ROOTER

DIFERENÇAS ENTRE HUB, SWITCH E ROOTER ESCOLA SECUNDÁRIA DE AROUCA CURSO OPERADOR DE INFORMÁTICA (2) Educação e Formação de Adultos DIFERENÇAS ENTRE HUB, SWITCH E ROOTER 1º PERÍODO Sara Matias ICORLI 2008/2009 Muita gente sabe que hub, switch

Leia mais

Computadores XXI: Busca e execução Final

Computadores XXI: Busca e execução Final Computadores XXI: Busca e execução Final A6 Texto 6 http://www.bpiropo.com.br/fpc20060123.htm Sítio Fórum PCs /Colunas Coluna: B. Piropo Publicada em 23/01/2006 Autor: B.Piropo Na coluna anterior, < http://www.forumpcs.com.br/viewtopic.php?t=146019

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

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

Introdução à Arquitetura de Computadores. Renan Manola Introdução ao Computador 2010/01

Introdução à Arquitetura de Computadores. Renan Manola Introdução ao Computador 2010/01 Introdução à Arquitetura de Computadores Renan Manola Introdução ao Computador 2010/01 Introdução Conceitos (1) Computador Digital É uma máquina que pode resolver problemas executando uma série de instruções

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

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

Requisitos de Software

Requisitos de Software Requisitos de Software Centro de Informática - Universidade Federal de Pernambuco Kiev Gama kiev@cin.ufpe.br Slides originais elaborados por Ian Sommerville e adaptado pelos professores Márcio Cornélio,

Leia mais

Unidade 13: Paralelismo:

Unidade 13: Paralelismo: Arquitetura e Organização de Computadores 1 Unidade 13: Paralelismo: SMP e Processamento Vetorial Prof. Daniel Caetano Objetivo: Apresentar os conceitos fundamentais da arquitetura SMP e alguns detalhes

Leia mais

AUTOMAÇÃO DE ESCRITÓRIOS ADE

AUTOMAÇÃO DE ESCRITÓRIOS ADE Curso: TÉCNICO EM INFORMÁTICA com Habilitação em Programação e Desenvolvimento de Sistemas. AUTOMAÇÃO DE ESCRITÓRIOS ADE NOTA DE AULA 01 Assunto: Introdução a informática. Histórico do computador. Conceitos

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

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira IFPE Disciplina: Sistemas Operacionais Prof. Anderson Luiz Moreira SERVIÇOS OFERECIDOS PELOS SOS 1 Introdução O SO é formado por um conjunto de rotinas (procedimentos) que oferecem serviços aos usuários

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

ALGORITMOS. Supervisão: Prof. Dr.º Denivaldo Lopes

ALGORITMOS. Supervisão: Prof. Dr.º Denivaldo Lopes Laboratory of Software Engineering and Computer Network Engineering for a better life Universidade Federal do Maranhão Curso de Engenharia Elétrica ALGORITMOS Supervisão: Prof. Dr.º Denivaldo Lopes Adelman

Leia mais

Organização e Arquitetura de Computadores I

Organização e Arquitetura de Computadores I Organização e Arquitetura de Computadores I Aritmética Computacional Slide 1 Sumário Unidade Lógica e Aritmética Representação de Números Inteiros Aritmética de Números Inteiros Representação de Números

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

LINGUAGEM C UMA INTRODUÇÃO

LINGUAGEM C UMA INTRODUÇÃO LINGUAGEM C UMA INTRODUÇÃO AULA 1 Conceitos muito básicos 1 Introdução O C nasceu na década de 70. Seu inventor, Dennis Ritchie, implementou-o pela primeira vez usando um DEC PDP-11 rodando o sistema operacional

Leia mais

3. Arquitetura Básica do Computador

3. Arquitetura Básica do Computador 3. Arquitetura Básica do Computador 3.1. Modelo de Von Neumann Dar-me-eis um grão de trigo pela primeira casa do tabuleiro; dois pela segunda, quatro pela terceira, oito pela quarta, e assim dobrando sucessivamente,

Leia mais

ARQUITETURA DE COMPUTADORES - 1866

ARQUITETURA DE COMPUTADORES - 1866 7 Unidade Central de Processamento (UCP): O processador é o componente vital do sistema de computação, responsável pela realização das operações de processamento e de controle, durante a execução de um

Leia mais

FUNDAMENTOS DE HARDWARE COMO FUNCIONA UM PC? Professor Carlos Muniz

FUNDAMENTOS DE HARDWARE COMO FUNCIONA UM PC? Professor Carlos Muniz FUNDAMENTOS DE HARDWARE COMO FUNCIONA UM PC? A arquitetura básica de qualquer computador completo, seja um PC, um Machintosh ou um computador de grande porte, é formada por apenas 5 componentes básicos:

Leia mais

Sistema de Computação

Sistema de Computação Sistema de Computação Máquinas multinível Nível 0 verdadeiro hardware da máquina, executando os programas em linguagem de máquina de nível 1 (portas lógicas); Nível 1 Composto por registrados e pela ALU

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

SISTEMAS OPERACIONAIS

SISTEMAS OPERACIONAIS SISTEMAS OPERACIONAIS Tópico 4 Estrutura do Sistema Operacional Prof. Rafael Gross prof.rafaelgross@fatec.sp.gov.br FUNÇÕES DO NUCLEO As principais funções do núcleo encontradas na maioria dos sistemas

Leia mais

Software Básico (INF1018)

Software Básico (INF1018) Software Básico (INF1018) http://www.inf.puc-rio.br/~inf1018 Noemi Rodriguez (noemi@inf.puc-rio.br) Ana Lúcia de Moura (amoura@inf.puc-rio.br) 1 Objetivo do curso Entender como funciona um computador típico,

Leia mais

Algoritmos não se aprendem: Copiando algoritmos Estudando algoritmos Algoritmos só se aprendem: Construindo algoritmos Testando algoritmos

Algoritmos não se aprendem: Copiando algoritmos Estudando algoritmos Algoritmos só se aprendem: Construindo algoritmos Testando algoritmos 1. INTRODUÇÃO A ALGORITMOS O uso de algoritmos é quase tão antigo quanto a matemática. Com o passar do tempo, entretanto, ele foi bastante esquecido pela matemática. Com o advento das máquinas de calcular

Leia mais

AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: davidmr@ifce.edu.br CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0

AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: davidmr@ifce.edu.br CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0 AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: davidmr@ifce.edu.br CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0 SUMÁRIO 1 Conceitos Básicos... 3 1.1 O que é Software?... 3 1.2 Situações Críticas no desenvolvimento

Leia mais

agility made possible

agility made possible RESUMO DA SOLUÇÃO Utilitário ConfigXpress no CA IdentityMinder a minha solução de gerenciamento de identidades pode se adaptar rapidamente aos requisitos e processos de negócio em constante mudança? agility

Leia mais

http://aurelio.net/vim/vim-basico.txt Entrar neste site/arquivo e estudar esse aplicativo Prof. Ricardo César de Carvalho

http://aurelio.net/vim/vim-basico.txt Entrar neste site/arquivo e estudar esse aplicativo Prof. Ricardo César de Carvalho vi http://aurelio.net/vim/vim-basico.txt Entrar neste site/arquivo e estudar esse aplicativo Administração de Redes de Computadores Resumo de Serviços em Rede Linux Controlador de Domínio Servidor DNS

Leia mais

Curso: Técnico de Informática Disciplina: Redes de Computadores. 1- Apresentação Binária

Curso: Técnico de Informática Disciplina: Redes de Computadores. 1- Apresentação Binária 1- Apresentação Binária Os computadores funcionam e armazenam dados mediante a utilização de chaves eletrônicas que são LIGADAS ou DESLIGADAS. Os computadores só entendem e utilizam dados existentes neste

Leia mais

PARANÁ GOVERNO DO ESTADO

PARANÁ GOVERNO DO ESTADO A COMUNICAÇÃO NA INTERNET PROTOCOLO TCP/IP Para tentar facilitar o entendimento de como se dá a comunicação na Internet, vamos começar contando uma história para fazer uma analogia. Era uma vez, um estrangeiro

Leia mais