Universidade Veiga de Almeida Algoritmos e Linguagem I

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

Download "Universidade Veiga de Almeida Algoritmos e Linguagem I"

Transcrição

1 Aula 1 Conteúdo: 1. Apresentação da disciplina 2. Contextualização e definições: 2.1. Algoritmos 2.2. Programas 2.3. Linguagens de programação 2.4. Sintaxe e semântica 2.5. Desenvolvimento de programas 1. Apresentação da disciplina Apresentação do professor a. Formação acadêmica b. Experiência acadêmica c. Experiência profissional Apresentação dos alunos a. Identificar familiaridade com a disciplina b. Verificar conhecimento de algoritmos e lógica c. Identificar experiência com programação e linguagens Apresentação do plano de aula e bibliografia a. Anexo Plano de Aula Apresentação dos critérios de avaliação a. Freqüência: obrigatória, mínimo de 75% b. Aproveitamento: provas e trabalhos 1 o GQ = Prova 1 + Trabalho 1 2 o GQ = Prova 2 + Trabalho 2 Valores: 0,0 10,0 Pesos: Provas* = 70% / Trabalhos** = 30% M = (1 o GQ + 2 o GQ) / 2 M 7,0 Aprovado 3.0 M < 7,0 Exame final M < 3,0 Reprovado MF = (F + M) / 2 M 5,0 M < 5,0 Aprovado Reprovado * Em nenhuma das provas haverá segunda chamada ** Trabalhos entregues após as datas de entregas serão desconsiderados Aula 1 - Prof. Cláudio Marques - Pág. 1

2 2. Contextualização O computador, diferentemente de outras máquinas, é uma máquina de propósito geral, isto é, serve a diversas finalidades. Por exemplo, um microondas, por mais que possa ser "programado", só serve para esquentar, descongelar e assar alimentos. Já um computador, pode sevir tanto de tela de artista, como máquina de calcular, prancha de um arquiteto, entre outras. Para tal, é necessário que sejam introduzidas dentro dele diretrizes bem específicas, para que sirva a propósitos diferentes. Estas diretrizes são, na verdade, uma seqüência de instruções, que quando executadas produzem um efeito desejado. A esta seqüência de instruções sob uma ordem prescrita, dá-se o nome de algoritmo. Pode-se dizer então, que o computador é um processador de 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 e mais tarde os computadores, o uso de algoritmos ressurgiu com grande vigor, como uma forma de indicar o caminho para a solução dos mais variados problemas. Algoritmo não é a solução do problema, pois, se assim fosse, cada problema teria um único algoritmo. Algoritmo é o caminho para a solução de um problema, e em geral, os caminhos que levam a uma solução são muitos. Ao longo dos anos surgiram muitas formas de representar os algoritmos, alguns utilizando linguagens semelhantes às linguagens de programação e outras utilizando formas gráficas. O aprendizado de algoritmos não se consegue a não ser através de muitos exercícios Algoritmos A automação é o processo em que uma tarefa deixa de ser desempenhada pelo homem e passa a ser realizada por máquinas, sejam estas dispositivos mecânicos (como as máquinas industriais), eletrônicos (como os computadores), ou de natureza mista (como os robôs). Para que a automação de uma tarefa seja bem-sucedida é necessário que a máquina que passará a realizá-la seja capaz de desempenhar cada uma das etapas constituintes do processo a ser automatizado com eficiência, de modo a garantir a repetibilidade do mesmo. Assim, é necessário que seja especificado com clareza e exatidão o que deve ser realizado em cada uma das fases do processo a ser automatizado, bem como a seqüência em que estas fases devem ser realizadas. À especificação da seqüência ordenada de passos que deve ser seguida para a realização de uma tarefa, garantindo a sua repetibilidade, dá-se o nome de algoritmo. Embora esta definição de algoritmo seja correta, podemos definir algoritmo, de maneira informal e completa como: Algoritmo é um conjunto finito de regras, bem definidas, para a solução de um problema em um tempo finito e com um número finito de passos. Informalmente, um algoritmo é qualquer procedimento computacional bem definido que toma algum valor ou conjunto de valores como entrada e produz algum valor ou conjunto de valores como saída. Aula 1 - Prof. Cláudio Marques - Pág. 2

3 Um algoritmo deve sempre possuir pelo menos um resultado, normalmente chamado de saída, e satisfazer a propriedade da efetividade, isto é, todas as operações especificadas no algoritmo devem ser suficientemente básicas para que possam ser executadas de maneira exata e num tempo finito. Na prática não é importante ter-se apenas um algoritmo, mas sim, um bom algoritmo. O mais importante de um algoritmo é a sua correção, isto é, se ele resolve realmente o problema proposto e o faz exatamente. Para se ter um algoritmo, é necessário: 1. Que se tenha um número finito de passos 2. Que cada passo esteja precisamente definido, sem possíveis ambigüidades 3. Que existam zero ou mais entradas tomadas de conjuntos bem definidos 4. Que existam uma ou mais saídas 5. Que exista uma condição de fim sempre atingida para quaisquer entradas e num tempo finito. Para que um computador possa desempenhar uma tarefa é necessário que esta seja detalhada passo a passo, numa forma compreensível pela máquina, utilizando aquilo que se chama de programa. Neste sentido, um programa de computador nada mais é que um algoritmo escrito numa forma compreensível pelo computador Programas Os programas de computador nada mais são do que algoritmos escritos em uma linguagem de computador (Pascal, C, Cobol, Fortran, Delphi, Java, entre outras) e que são interpretados e executados por um computador Linguagens de programação Linguagens de programação são usadas para descrever algoritmos; isto é, seqüências de passos que levam à solução de um problema. Uma linguagem de programação precisa suportar a definição de ações e prover meios para especificar operações básicas de computação, além de permitir que os usuários especifiquem como estes passos devem ser seqüenciados para resolver um problema. Uma linguagem de programação pode ser considerada como sendo uma notação que pode ser usada para especificar algoritmos com precisão Classificação As linguagens de programação podem ser agrupadas em dois grandes grupos: linguagens de baixo nível e linguagens de alto nível. As linguagens de baixo nível são restritas a linguagem de máquina e tem uma forte relação entre as operações implementadas pela linguagem e as operações implementadas pelo hardware. As linguagens de alto nível por outro lado, aproximam-se das linguagens utilizadas por humanos para expressar problemas e algoritmos. Cada declaração numa linguagem de alto nível equivale a várias declarações numa linguagem de baixo nível. A vantagem principal das linguagens de alto nível é a abstração. Isto é o processo em que as propriedades essenciais requeridas para a solução do problema são extraídas enquanto esconde os detalhes da implementação da solução adotada pelo programador. Com o nível de abstração Aula 1 - Prof. Cláudio Marques - Pág. 3

4 aumentado, o programador pode concentrar-se mais na solução do problema ao invés de preocupar-se como o hardware vai tratar do problema. Linguagens de Baixo Nível Estas linguagens são ditas de baixo nível porque existe um baixo nível de comunicação (entendimento) entre os programas escritos e o ser humano. Realmente, os programas escritos neste tipo de linguagem são difíceis de serem feitos e entendidos. A principal característica destas linguagens é a proximidade com a linguagem de máquina, que implica, apesar das dificuldades, em uma maior rapidez de execução dos programas. Exemplos de linguagem de baixo nível: Linguagem de Máquina Lembrando que o computador corresponde basicamente a um conjunto de circuitos, a sua operação é controlada através de programas escritos numa forma bastante primitiva, baseada no sistema binário de numeração. O sistema binário é usado tanto para a representação dos dados quanto das operações (instruções). A esta forma de representação dos programas, é dado o nome de linguagem de máquina, em razão de ser a forma compreendida e executada pelo hardware do sistema. As instruções de linguagem de máquina são representadas por códigos que correspondem a números binários cuja extensão pode variar de 8 a 64 bits. Dependendo da operação considerada, o código de uma instrução pode simbolizar a operação a ser executada e os dados envolvidos na operação. Exemplo de Programa: Por uma questão de custo de hardware, as operações representadas pelas instruções de linguagem de máquina são bastante elementares, como por exemplo, a transferência de dados entre memória e registro da CPU, a adição de dois valores, o teste de igualdade entre dois valores, etc... A linguagem de máquina é impraticável para escrita ou leitura. É inviável escrever ou ler um programa codificado na forma de uma string de bits. Linguagem Hexadecimal Para simplificar a compreensão e a programação de computadores, num primeiro tempo foi adotada a notação hexadecimal para representar programas em linguagem de máquina, onde a seqüência de bits é representada por números hexadecimais. A linguagem hexadecimal é, portanto, apenas uma simplificação de notação da linguagem de máquina. Apesar disto, a programação e leitura usando a linguagem hexadecimal continua impraticável. Linguagem Assembly Embora seja a linguagem diretamente executável pelos processadores, a programação de aplicações diretamente em linguagem de máquina é impraticável, mesmo representada na notação hexadecimal. Por esta razão, a linguagem de máquina de cada processador é acompanhada de uma versão legível da linguagem de máquina que é a chamada linguagem simbólica Assembly. Simbólica pois esta linguagem não é composta de números binários ou hexadecimais como nas duas linguagens anteriores. A linguagem Assembly é na realidade uma versão legível da linguagem de máquina. Ela utiliza Aula 1 - Prof. Cláudio Marques - Pág. 4

5 palavras abreviadas, chamadas de mnemônicos, indicando a operação a ser realizada pelo processador. Abaixo são apresentados dois exemplos de instruções Assembly: MOV R1, R2 nesta instrução identifica-se o mnemônico MOV (abreviação de MOVE) e dois registradores como parâmetros: R1 e R2. Quando o processador executa esta instrução, ele comanda o movimento do conteúdo de R2 para R1 (equivalente à instrução Pascal R1:=R2, sendo R1 e R2 equivalente a duas variáveis); ADD R1, R2 nesta instrução identifica-se o mnemônico ADD (abreviação de ADDITION) e dois registradores como parâmetros: R1 e R2. Quando o processador executa esta instrução, ele comanda a adição do conteúdo de R1 ao conteúdo de R2 e o resultado é armazenado em R1 (equivalente à instrução Pascal R1:=R1+R2). Escolhendo nomes descritivos para as variáveis do programa, e usando mnemônicos para representar códigos de operação, a linguagem assembly facilitou significativamente a leitura de seqüências de instrução de máquina. Como exemplo, supomos a operação de dois números inteiros: A:=B+C. Esta operação, em um PC, em notação hexadecimal ficaria: A A Se associarmos o nome B à posição de memória 200h, C à posição 202h e A à posição 204h, usando a técnica mnemônica, a mesma rotina poderá ser expressa da seguinte forma: MOV AX,B ; registro AX recebe o valor de memória contida na variável B ADD AX,C ; AX recebe a soma de AX (valor de B) com o valor de C MOV A,AX ; variável A recebe valor de AX A maioria concorda que a segunda forma, embora ainda incompleta, é melhor que a primeira para representar a rotina. Apesar de oferecer uma representação mais próxima do que o programador está acostumado a manipular, a linguagem Assembly apresenta certas dificuldades para a realização dos programas, tais como a necessidade de definição de um conjunto relativamente grande de instruções para a realização de tarefas que seriam relativamente simples (se representadas através de outras linguagens) e a exigência do conhecimento de detalhes do hardware do sistema (arquitetura interna do processador, endereços e modos de operação de dispositivos de hardware, etc...). Por outro lado, a utilização da linguagem Assembly proporciona um maior controle sobre os recursos do computador, permitindo também se obter bons resultados em termos de otimização de código. Como a linguagem Assembly é apenas uma versão legível da linguagem de máquina, a passagem de um programa escrito em Assembly para a linguagem de máquina é quase sempre direta, não envolvendo muito processamento. Esta passagem de um programa Assembly para linguagem de máquina é chamada de Montagem, e o programa que realiza esta operação é chamado de montador (Assembler). A linguagem Assembly é orientada para máquina (ou melhor, para processador), é necessário conhecer a estrutura do processador para poder programar em Assembly. A linguagem Assembly utiliza instruções de baixo nível que operam com registros e memórias diretamente. Assim ela é muito orientada às instruções que são diretamente executadas pelo processador. Na seqüência da evolução das linguagens de programação, procurou-se aproximar mais a linguagem de programação à linguagem natural que utilizamos no dia a dia: surgiram então as linguagens de alto nível, tipo Pascal, C, C++, etc. Linguagem de Alto Nível As linguagens de alto nível são assim denominadas por apresentarem uma sintaxe mais próxima da linguagem natural, fazendo uso de palavras reservadas extraídas do vocabulário corrente (como READ, WRITE, TYPE, etc...) e permitirem a manipulação dos dados nas mais diversas formas (números inteiros, reais, vetores, listas, etc...); enquanto a linguagem Assembly trabalha com bits, bytes, palavras, armazenados em memória. Aula 1 - Prof. Cláudio Marques - Pág. 5

6 As linguagens de alto nível ou de segunda geração surgiram entre o final da década de 50 e início dos anos 60. Linguagens como Fortran, Cobol, Algol e Basic, com todas as deficiências que se pode apontar atualmente, foram linguagens que marcaram presença no desenvolvimento de programas, sendo que algumas delas têm resistido ao tempo e às críticas, como por exemplo Fortran, que ainda é visto como uma linguagem de implementação para muitas aplicações de engenharia. Cobol é um outro exemplo de linguagem bastante utilizada no desenvolvimento de aplicações comerciais. Em comparação com a linguagem Assembly, a passagem de um programa escrito em linguagem de alto nível para o programa em linguagem de máquina é bem mais complexa. Para esta passagem são utilizados compiladores e linkadores. Com o desenvolvimento das linguagens de alto nível, o objetivo da independência de máquina foi amplamente alcançada. Dado que os comandos das linguagens de alto nível não referenciam os atributos de uma dada máquina, eles podem ser facilmente compilados tanto em uma máquina como em outra. Assim, um programa escrito em linguagem de alto nível poderia, teoricamente, ser usado em qualquer máquina, bastando escolher o compilador correspondente. Em realidade, no entanto, esta independência de máquina não é tão simples. Quando um compilador é projetado, certas restrições impostas pela máquina subjacente são, em última instância, refletidas como características da linguagem a ser traduzida. Por exemplo, o tamanho do registrador e as células de memória de uma máquina limitam o tamanho máximo dos inteiros que nela podem ser convenientemente manipulados. Disso resulta o fato de que, em diferentes máquinas, uma mesma linguagem pode apresentar diferentes características, ou dialetos. Conseqüentemente, em geral é necessário fazer ao menos pequenas modificações no programa antes de movê-lo de uma máquina para outra. A causa deste problema de portabilidade é, em alguns casos, a falta de concordância em relação à correta composição da definição de uma linguagem em particular. Para auxiliar nesta questão, o American National Standards Institute (ANSI) e a International Organization for Standardization (ISO) adotaram e publicaram padrões para muitas das linguagens mais populares. Em outros casos, surgiram padrões informais, devido à popularidade de um dialeto de uma linguagem e ao desejo, por parte de alguns autores de compiladores, de oferecerem produtos compatíveis. Linguagens de Alto Nível Comparadas com Linguagens de Baixo Nível As linguagens de alto nível podem oferecer muito mais vantagens que as linguagens de baixo nível. A principal motivação para o uso de linguagens de alto nível é que os problemas podem ser solucionados muito mais rapidamente e com muito mais facilidade, pois apresenta um considerável numero de tipos de dados definidos, além das facilidades da programação estruturada. Os programas em linguagem de alto nível são muito mais fáceis de serem desenvolvidos, entendidos e depurados por diversas razões: Elas são mais prováveis de serem auto-documentadas. A estrutura do programa pode ser desenvolvida para refletir a estrutura do problema original. Nomes significativos podem ser escolhidos para variáveis e subprogramas. A solução do problema não necessita ser obscurecida pelo nível de detalhes necessários em um programa em linguagem de baixo nível. O programa em linguagem de alto nível é normalmente fácil de seguir e entender cada passo da execução. Aula 1 - Prof. Cláudio Marques - Pág. 6

7 O compilador, nas linguagens de alto nível, normalmente provê facilidades para a depuração, como visualização dos valores das variáveis, dos registradores e da pilha. Além disso, o compilador pode incluir instruções na geração de código para detectar erros em tempo de execução, como overflow numéricos e violação de limites de vetores e matrizes. A utilização de linguagens de baixo nível é indicada para funções que precisam implementar instruções de máquina específicas que não são suportadas por linguagens de alto nível, embora a grande maioria das linguagens de alto nível apresentem uma biblioteca que permite implementar instruções de baixo nível diretamente em seus programas. A grande eficiência e o reduzido tamanho dos programas desenvolvidos em linguagens de baixo nível são as principais vantagens dessas linguagens Categorização As principais categorias de linguagem de programação são: Imperativas baseadas em variáveis e instruções organizadas (Pascal, C, Clipper, etc). Funcionais sem instruções de atribuição e sem iterações. A computação é feita aplicando-se funções a determinados parâmetros (Lisp). Lógicas baseadas em regras. As instruções não precisam estar ordenadas de acordo com a execução (Prolog). Orientadas a Objetos utilizam instruções como nas linguagens imperativas. Encapsula processos e dados (Object Pascal, C++, Java, etc). Obs: as linguagens de marcação (markup) como o HTML, não são linguagens de programação, pois elas não especificam computações, elas apenas descrevem a aparência de documentos Histórico Existem centenas de linguagens de programação, desenvolvidas desde o início da computação. Essas linguagens foram agrupadas de acordo com suas e características e época em que foram desenvolvidas em 4 gerações: Linguagens de primeira geração A primeira geração de linguagens remonta aos dias da codificação em linguagem de máquina, surgidas com o início da computação na década de 50, especificamente de 1950 a A Linguagem de máquina e Assembly representam esta primeira geração das linguagens de programação. Essas linguagens totalmente dependentes da máquina exibem o mais baixo nível de abstração que uma linguagem pode ser representada. Essas linguagens somente devem ser usadas quando as linguagens de mais alto nível não satisfizerem as necessidades ou não forem suportadas. Linguagens de Segunda Geração A segunda geração de linguagens de programação foi desenvolvida de 1962 a 1974 e serviu de base para o desenvolvimento das modernas linguagens de programação. As características marcantes das linguagens de segunda geração foram o amplo uso com grande familiaridade e aceitação no mercado e a grande quantidade de bibliotecas de software, permitiram a programação multiusuário, sistemas de execução em tempo real e desenvolvimento de gerenciadores de base de dados. Aula 1 - Prof. Cláudio Marques - Pág. 7

8 As linguagens Fortran, Cobol, Algol e algumas extensões como Basic, foram os representantes dessa segunda geração. Fortran é uma linguagem ainda muito utilizada na área de engenharia e pela comunidade científica. Cobol é uma linguagem que foi aceita e ainda continua em uso para aplicações comerciais. Algol foi o precursor de muitas linguagens de terceira geração, por oferecer ricamente estruturas de controle e tipos de dados. Basic foi uma linguagem originalmente criada para o aprendizado e teve seu uso bastante reduzido já na década de 70. Linguagens de Terceira Geração As linguagens de terceira geração, também chamadas de linguagens de programação modernas ou estruturadas, são caracterizadas pela grande capacidade procedural e estrutural de seus dados e foram desenvolvidas de 1974 a As linguagens de terceira geração tiveram como principais características a possibilidade de criar sistemas distribuídos, incorporar recursos mais inteligentes, e exigir um hardware menos robusto. Podem ser divididas em duas grandes categorias: linguagens de propósito gerais e linguagens especializadas. As linguagens de propósito gerais foram desenvolvidas baseadas principalmente na linguagem Algol e servem para uma infinidade de aplicações envolvendo desde a área científica, até a área comercial. As linguagens C, Pascal, PL/1 e Modula-2 são as principais linguagens desta categoria, sendo que as duas primeiras continuam bastante usadas atualmente. As linguagens especializadas são caracterizadas pela forma sintática não usual com que foram desenvolvidas para uma aplicação distinta. Centenas de linguagens especializadas estão em uso atualmente. Dentre as linguagens que encontram aplicações na área de engenharia de software podemos destacar a linguagem Lisp desenvolvida especialmente para manipular símbolos e listas, Prolog desenvolvida para tratar e representar conhecimentos, Smalltalk criada para representar os dados em forma de objetos, sendo a primeira a ser puramente orientada a objetos, APL desenvolvida para manipular vetores, e a linguagem Forth desenvolvida para desenvolver softwares para microprocessadores. Linguagens de quarta geração A quarta geração das linguagens de programação foi desenvolvida a partir de 1986 e teve como características principais a geração de sistemas especialistas, o desenvolvimento de inteligência artificial e a possibilidade de execução dos programas em paralelo. No decorrer da história temos percebido uma evolução para uma abstração maior na geração de programas, usando linguagens de mais alto nível. A primeira geração de linguagens de programação trabalhava com um reduzido conjunto de instruções em nível de máquina. A segunda e terceira geração de linguagens de programação foram desenvolvidas num nível que representam os programas computacionais, distinta e independentemente da arquitetura do processador, mas com completa descrição detalhada dos procedimentos algorítmicos do programa. Com o passar do tempo, as linguagens de quarta geração foram desenvolvidas com um nível de abstração ainda mais alto. As linguagens de quarta geração, conhecidas também como linguagens artificiais contém uma sintaxe distinta para representação de estruturas de controle e dos dados. Essas linguagens por combinarem características procedurais e não procedurais, representam estas estruturas com um alto nível de abstração, eliminando a necessidade de especificar algoritmicamente esses detalhes. Aula 1 - Prof. Cláudio Marques - Pág. 8

9 As linguagens de quarta geração podem ser classificadas em três categorias: linguagens de consulta, geradoras de programas e outras linguagens (4GL). As linguagens de consulta foram desenvolvidas para manipular bases de dados, permitindo o gerenciamento de um grande número de informações armazenados em arquivos. As linguagens geradoras de programas representam uma sofisticada classe das linguagens 4GL. Permitem ao usuário ou programador criar facilmente programas complexos em linguagens de terceira geração, utilizando bem menos declarações e comandos. Estas linguagens possuem um nível bem mais alto que as de terceira geração. Enquadradas como outras linguagens de quarta geração temos as linguagens usadas em sistemas de apoio à decisão, linguagens utilizadas para modelagem de sistemas, linguagens de prototipação, e linguagens de especificação formal que produzem código de máquina. Linguagens desenvolvidas No decorrer da história da computação centenas de linguagens foram desenvolvidas. Já em 1972 havia mais de 200 linguagens desenvolvidas, sendo que a maioria era para objetivos específicos ou acadêmicos, sendo que dessas apenas 12 podem ser consideradas como importantes e significativas. Novas direções das linguagens de programação As novas direções das linguagens de programação, especialmente das linguagens de quarta geração é a sua aplicação com metodologias orientadas a objetos. Essas linguagens são baseadas nos conceitos de objetos, que agrupam comandos de programação com dados em objetos que podem ser usados o tempo todo durante a execução do programa, o que é muito útil em ambientes de execução paralela. Outra tendência dos ambientes de desenvolvimento de programas é fornecer além das linguagens de programação, um ambiente de geração automática de código, onde o programador especifica através de ferramentas visuais as características do programa e a ferramenta se encarrega de gerar a codificação na linguagem específica. Estas ferramentas são muito difundidas na programação para Windows, e são também chamados de RAD (Desenvolvimento Rápido de Aplicativos). A nova geração das linguagens de programação, que já é chamada por muitas pessoas de quinta geração, é baseada em métodos de consulta e utilizam comandos escritos em linguagens naturais, permitindo uma fácil comunicação com o computador Sintaxe e Semântica Toda linguagem tem sintaxe e semântica: A sintaxe de uma linguagem de programação se refere à forma do programa, como as expressões, comandos e declarações são concatenados para formar programas. Ela define a seqüência de caracteres que podem produzir um programa. Assim, esta definição requer uma declaração de um conjunto de caracteres que podem ser usados em um programa válido, junto com um conjunto de regras que apresentam os caminhos possíveis em que estes caracteres podem ser agrupados. A semântica de uma linguagem de programação se refere ao significado dos programas e comandos, como eles se comportam quando são executados em um computador. A especificação semântica de uma Aula 1 - Prof. Cláudio Marques - Pág. 9

10 linguagem de programação é uma tarefa muito mais árdua que a definição sintática, embora sejam usados métodos formais para esta atividade. A sintaxe da linguagem influencia como os programas são escritos pelo programador, lidos por outros programadores e analisado pelo computador. A semântica da linguagem determina como o programa é composto pelo programador, entendido por outros programadores e interpretado pelo computador. A sintaxe é importante, pois é necessário que um programa esteja com os comandos corretamente escritos, mas a semântica é mais importante ainda, pois não basta ter um programa sem erros de sintaxe, mas com os comandos combinados de maneira correta Desenvolvimento de programas Apesar de muito convenientes para o ser humano, os programas elaborados em linguagem de alto nível não são executáveis pela máquina. Os programas produzidos por estas linguagens deverão sofrer um processo de tradução em que serão convertidas as instruções criadas em linguagem de alto nível para os respectivos códigos de operação em linguagem de máquina. A tarefa de tradução de programas será apropriadamente feita por outros programas denominados genericamente de Programas Tradutores. Vale dizer que cada linguagem de programação possui um tradutor próprio. Serão apresentadas a seguir as principais etapas de geração de um programa Geração do código fonte (codificação) A codificação é a escrita, utilizando uma linguagem de programação, das instruções que o computador deve realizar para alcançar um resultado. Para a realização desta tarefa são utilizados os chamados editores. Os editores são a primeira ferramenta à qual o programador recorre na etapa de codificação, pois é através dela que será gerado o arquivo (ou o conjunto de arquivos) que vai conter o código fonte do programa a ser desenvolvido. Apesar de que é possível utilizar qualquer editor de linha (como por exemplo, o EDIT do DOS) para gerar o arquivo de programa, alguns ambientes oferecem ferramentas de edição mais poderosas (orientadas à sintaxe ou de coloração de sintaxe). Alguns ambientes mais recentes oferecem a possibilidade de projeto de interfaces gráficas e gerenciadores de eventos, com geração automatizada do código fonte Tradução do Código Fonte (código objeto) Independente da linguagem utilizada e da arquitetura do sistema computacional, o código fonte não é executável diretamente pelo processador. Ele permite apenas que o programador consiga definir o programa em uma forma legível aos humanos. Para que se possa obter o programa executável, é necessário que o código fonte seja traduzido para o código de máquina do processador que compõe a arquitetura do sistema. Felizmente, isto é realizado de forma automática graças à existência de ferramentas como os Montadores (ou Assemblers que, como o nome indica, são orientados para traduzir programas escritos na linguagem Assembly) e os Compiladores, construídos para gerar o código de programas originalmente escritos em linguagens de alto nível como Pascal, C, Fortran e outras. O código gerado por estas ferramentas é representado segundo o sistema de numeração binária e é denominado código objeto. O código objeto é o código produzido pelo compilador. Ele se trata de uma forma intermediária similar à linguagem de máquina do computador. O código objeto, apesar de estar representado em binário, não é auto-contido, ou seja, não é executável diretamente pelos processadores. A principal razão disto é Aula 1 - Prof. Cláudio Marques - Pág. 10

11 que o código objeto é caracterizado normalmente por referências a partes de programa que não estão necessariamente definidas no mesmo arquivo que gerou o aquele arquivo objeto. Estas outras partes do código do programa podem ter sido geradas a partir de outros arquivos de código fonte concebidos pelo mesmo programador ou existirem sob a forma de arquivos de bibliotecas de sub-rotinas. Existem dois tipos de tradutores: Compiladores - São programas que traduzem outros programas escritos em linguagem de alto nível, para linguagem de máquina. Linguagem de alto nível Tradutor Linguagem de máquina Programa fonte Compilador Programa objeto Ao término do processo de compilação obteremos um novo programa, análogo ao programa original, mas escrito em linguagem de máquina, chamado programa objeto. Pode existir ainda para alguns compiladores uma fase neste processo de tradução, chamada de linkage (ligação) em que são feitas ligações entre os códigos de operação gerados pelo compilador e as rotinas e execução das mesmas. Exemplos de Compiladores: COBOL, FORTRAN, PASCAL, C. Interpretadores: - São programas que traduzem e executam outros programas, escritos em linguagem de alto nível, linha por linha. Como os interpretadores são responsáveis também pela execução dos programas, eles deverão sempre estar presentes na memória da máquina junto com o programa a ser utilizado. Linguagem de alto nível Tradutor Execução Programa fonte Interpretador Execução Aula 1 - Prof. Cláudio Marques - Pág. 11

Linguagens de Programação

Linguagens de Programação Capítulo 4 Linguagens de Programação 4.0 Índice Capítulo 4 1 4.0 Índice 1 4.1 Programação de Computadores 2 4.2 Níveis de Linguagens de Programação 2 4.2.1 Linguagem de Máquina 2 4.2.2 Linguagem Hexadecimal

Leia mais

Linguagens de Programação Classificação

Linguagens de Programação Classificação Classificação Classificação A proximidade que a linguagem de programação tem com a humana determina sua classe (o nível): Linguagem de máquina (primeira geração) Linguagem assembly - de montagem (segunda

Leia mais

Linguagens de Programação

Linguagens de Programação Universidade Federal do Rio Grande do Norte Centro de Tecnologia Departamento de Computação e Automação Linguagens de Programação Professor Responsável: Luiz Affonso Henderson Guedes de Oliveira Prof.

Leia mais

Classificação das linguagens de programação

Classificação das linguagens de programação Introdução Linguagem É um meio de comunicação entre pessoas. Faculdade de expressão audível e articulada do homem. Conjunto de sinais falados, escritos ou gesticulados de que se serve o homem para demonstrar

Leia mais

Programação de Computadores:

Programação de Computadores: Instituto de C Programação de Computadores: Introdução a Linguagens de Programação Luis Martí Instituto de Computação Universidade Federal Fluminense lmarti@ic.uff.br - http://lmarti.com Seis Camadas Problema

Leia mais

Prof. Antonio Almeida de Barros Jr. Prof. Antonio Almeida de Barros Junior

Prof. Antonio Almeida de Barros Jr. Prof. Antonio Almeida de Barros Junior Prof. Antonio Almeida de Barros Jr. Prof. Antonio Almeida de Barros Junior Meio pelo qual se pode indicar os passos que devem ser realizados pelo computador para resolver problemas; Através da linguagem,

Leia mais

Paradigmas de Programação

Paradigmas de Programação Paradigmas de Programação Aula 3 Histórico das Linguagens Prof.: Edilberto M. Silva http://www.edilms.eti.br Prof. Edilberto Silva / edilms.eti.br Definição Linguagens de programação são usadas para descrever

Leia mais

Existem três categorias principais de linguagem de programação: linguagem de máquina, linguagens assembly e linguagens de alto nível.

Existem três categorias principais de linguagem de programação: linguagem de máquina, linguagens assembly e linguagens de alto nível. Aula 3 SOFTWARE (programas) Um programa (software) consiste em uma sequência de instruções escritas numa linguagem precisa chamada linguagem de programação. Estas instruções são traduzidas em um compilador,

Leia mais

Programação de Computadores IV. Introdução a Linguagens de Programação Simone Martins SLIDES CEDIDOS POR BRUNO MARQUES 1

Programação de Computadores IV. Introdução a Linguagens de Programação Simone Martins SLIDES CEDIDOS POR BRUNO MARQUES 1 Programação de Computadores IV Introdução a Linguagens de Programação Simone Martins simone@ic.uff.br SLIDES CEDIDOS POR BRUNO MARQUES 1 Arquitetura de programação 2 O Que é um Dado? Dado é o elemento

Leia mais

Introdução à Computação

Introdução à Computação Introdução à Computação Jordana Sarmenghi Salamon jssalamon@inf.ufes.br jordanasalamon@gmail.com http://inf.ufes.br/~jssalamon Departamento de Informática Universidade Federal do Espírito Santo Agenda

Leia mais

3. Linguagem de Programação C

3. Linguagem de Programação C Introdução à Computação I IBM1006 3. Linguagem de Programação C Prof. Renato Tinós Departamento de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 3. Linguagem de programação C 3.1. Conceitos

Leia mais

Sistema Computacional

Sistema Computacional Algoritmos e Lógica de Programação Conceitos Básicos Abstração Reinaldo Gomes reinaldo@cefet-al.br O que é um? Integração de componentes atuando como uma entidade, com o propósito de processar dados, i.e.

Leia mais

Desenvolvimento de Aplicações Desktop

Desenvolvimento de Aplicações Desktop Desenvolvimento de Aplicações Desktop Conceitos Básicos de Programação Professor: Charles Leite O Desenvolvimento de Programas A programação consiste em indicar como o computador (hardware) deve trabalhar

Leia mais

Programação de Computadores

Programação de Computadores Programação de Computadores Instituto de Computação UFF Departamento de Ciência da Computação Otton Teixeira da Silveira Filho Conteúdo Alguns Conceitos sobre Linguagens Conceito de Algoritmo Pseudocódigo

Leia mais

PROGRAMAÇÃO I. Introdução

PROGRAMAÇÃO I. Introdução PROGRAMAÇÃO I Introdução Introdução 2 Princípios da Solução de Problemas Problema 1 Fase de Resolução do Problema Solução na forma de Algoritmo Solução como um programa de computador 2 Fase de Implementação

Leia mais

Compiladores. Introdução à Compiladores

Compiladores. Introdução à Compiladores Compiladores Introdução à Compiladores Cristiano Lehrer, M.Sc. Introdução (1/2) O meio mais eficaz de comunicação entre pessoas é a linguagem (língua ou idioma). Na programação de computadores, uma linguagem

Leia mais

Informática I. Aula 9. Aula 9-17/05/2006 1

Informática I. Aula 9.  Aula 9-17/05/2006 1 Informática I Aula 9 http://www.ic.uff.br/~bianca/informatica1/ Aula 9-17/05/2006 1 Ementa Histórico dos Computadores Noções de Hardware e Software Microprocessadores Sistemas Numéricos e Representação

Leia mais

Introdução à Programação de Computadores Fabricação Mecânica

Introdução à Programação de Computadores Fabricação Mecânica Introdução à Programação de Computadores Fabricação Mecânica Edilson Hipolito da Silva edilson.hipolito@ifsc.edu.br - http://www.hipolito.info Aula 04 - Linguagens de Programação, Interpretador, compilador

Leia mais

Informática I. Aula 9. Aula 9-27/09/2006 1

Informática I. Aula 9.   Aula 9-27/09/2006 1 Informática I Aula 9 http://www.ic.uff.br/~bianca/informatica1/ Aula 9-27/09/2006 1 Ementa Histórico dos Computadores Noções de Hardware e Software Microprocessadores Sistemas Numéricos e Representação

Leia mais

Programação de Computadores

Programação de Computadores Programação de Computadores Instituto de Computação UFF Departamento de Ciência da Computação Otton Teixeira da Silveira Filho Conteúdo Alguns Conceitos sobre Linguagens Paradigmas para linguagens de Programação

Leia mais

Capítulo 1. Aspectos Preliminares

Capítulo 1. Aspectos Preliminares Capítulo 1 Aspectos Preliminares Tópicos do Capítulo 1 Razões para estudar conceitos de linguagens de programação Domínios de programação Critérios de avaliação de linguagens Influências no projeto de

Leia mais

Introdução à Computação

Introdução à Computação UNIVERSIDADE ESTADUAL DE MARINGÁ DEPARTAMENTO DE INFORMÁTICA Introdução à Computação Prof. Yandre Maldonado - 1 Prof. Yandre Maldonado e Gomes da Costa yandre@din.uem.br Histórico da Computação Prof. Yandre

Leia mais

Introdução à Computação

Introdução à Computação UNIVERSIDADE ESTADUAL DE MARINGÁ DEPARTAMENTO DE INFORMÁTICA Introdução à Computação Prof. Yandre Maldonado - 1 Prof. Yandre Maldonado e Gomes da Costa yandre@din.uem.br Histórico da Computação Prof. Yandre

Leia mais

Programação de Computadores

Programação de Computadores Programação de Computadores Instituto de Computação UFF Departamento de Ciência da Computação Otton Teixeira da Silveira Filho Conteúdo Alguns Conceitos sobre Conceito de Algoritmo Pseudocódigo Tipos de

Leia mais

PROGRAMAÇÃO ORIENTADA A OBJETOS I -CONCEITOS PRELIMINARES. Prof. Angelo Augusto Frozza, M.Sc.

PROGRAMAÇÃO ORIENTADA A OBJETOS I -CONCEITOS PRELIMINARES. Prof. Angelo Augusto Frozza, M.Sc. PROGRAMAÇÃO ORIENTADA A OBJETOS I -CONCEITOS PRELIMINARES Prof. Angelo Augusto Frozza, M.Sc. http://about.me/tilfrozza ROTEIRO O que é programação Linguagens de Programação Paradigmas de Programação História

Leia mais

Introdução à Computação: Máquinas Multiníveis

Introdução à Computação: Máquinas Multiníveis Introdução à Computação: Máquinas Multiníveis Beatriz F. M. Souza (bfmartins@inf.ufes.br) http://inf.ufes.br/~bfmartins/ Computer Science Department Federal University of Espírito Santo (Ufes), Vitória,

Leia mais

Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES. Introdução. Geovane Griesang

Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES. Introdução. Geovane Griesang Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES Introdução geovanegriesang@unisc.br Processadores de linguagem Linguagens de programação são notações para se descrever

Leia mais

Introdução à Programação Aula 02. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação

Introdução à Programação Aula 02. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação Introdução à Programação Aula 02 Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação QUAIS SÃO OS COMPONENTES BÁSICOS DO HW DE UM SISTEMA COMPUTACIONAL?

Leia mais

Puca Huachi Vaz Penna

Puca Huachi Vaz Penna BCC201 Introdução à Computação Turmas 31, 32 e 33 Puca Huachi Vaz Penna Departamento de Computação Universidade Federal de Ouro Preto http://www.decom.ufop.br/puca puca@iceb.ufop.br Aula 2 Introdução:

Leia mais

Fundamentos de Programação 1

Fundamentos de Programação 1 Fundamentos de Programação 1 Slides N. 2 E / Prof. SIMÃO Slides elaborados pelo Prof. Robson Linhares elaborados pelo Prof. Robson Linhares http://www.dainf.ct.utfpr.edu.br/~robson/ Jean Marcelo SIMÃO

Leia mais

Algoritmos e Programação

Algoritmos e Programação Universidade Federal do Vale do São Francisco Curso de Engenharia da Produção / Elétrica Parte 04 Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br www.univasf.edu.br/~jorge.cavalcanti www.twitter.com/jorgecav

Leia mais

Compiladores. Motivação. Tradutores. Motivação. Tipos de Tradutores. Tipos de Tradutores

Compiladores. Motivação. Tradutores. Motivação. Tipos de Tradutores. Tipos de Tradutores Motivação Prof. Sérgio Faustino Compiladores Conhecimento das estruturas e algoritmos usados na implementação de linguagens: noções importantes sobre uso de memória, eficiência, etc. Aplicabilidade freqüente

Leia mais

AULA 03: FUNCIONAMENTO DE UM COMPUTADOR

AULA 03: FUNCIONAMENTO DE UM COMPUTADOR ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I AULA 03: FUNCIONAMENTO DE UM COMPUTADOR Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação O QUE É UM COMPUTADOR?

Leia mais

Curso Profissional de Gestão e Programação de Sistemas Informáticos. Programação e Sistemas de Informação. Módulo 1. 1ª Parte Prof. Sandra Pais Soares

Curso Profissional de Gestão e Programação de Sistemas Informáticos. Programação e Sistemas de Informação. Módulo 1. 1ª Parte Prof. Sandra Pais Soares Curso Profissional de Gestão e Programação de Sistemas Informáticos Programação e Sistemas de Informação Módulo 1 1ª Parte Prof. Sandra Pais Soares Linguagens de Programação Linguagens de Programação Uma

Leia mais

Organização e Arquitetura de Computadores I

Organização e Arquitetura de Computadores I Organização e Arquitetura de Computadores I Conjunto de Instruções Slide 1 Sumário Características de Instruções de Máquina Tipos de Operandos Tipos de Operações Linguagem de Montagem Slide 2 Características

Leia mais

Informática I. Aula Aula 18-29/10/2007 1

Informática I. Aula Aula 18-29/10/2007 1 Informática I Aula 18 http://www.ic.uff.br/~bianca/informatica1/ Aula 18-29/10/2007 1 Ementa Noções Básicas de Computação (Hardware, Software e Internet) HTML e Páginas Web Internet e a Web Javascript

Leia mais

Linguagens de Programação

Linguagens de Programação Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação Linguagens de Programação DCA0800 - Algoritmos e Lógica de Programação Heitor Medeiros 1 Tópicos da aula

Leia mais

Informática I. Aula 14. Aula 14-10/10/2007 1

Informática I. Aula 14.  Aula 14-10/10/2007 1 Informática I Aula 14 http://www.ic.uff.br/~bianca/informatica1/ Aula 14-10/10/2007 1 Ementa Noções Básicas de Computação (Hardware, Software e Internet) HTML e Páginas Web Internet e a Web Javascript

Leia mais

Métodos de implementação de linguagens. Kellen Pinagé

Métodos de implementação de linguagens. Kellen Pinagé Métodos de implementação de linguagens Kellen Pinagé Sumário Métodos de implementação de linguagens Compilação Interpretação pura Híbrido Métodos de implementação de linguagens Principais componentes de

Leia mais

Linguagens de Programação. Roberto Willrich INE- CTC-UFSC URL:

Linguagens de Programação. Roberto Willrich INE- CTC-UFSC   URL: Linguagens de Programação Roberto Willrich INE- CTC-UFSC E-Mail: willrich@inf.ufsc.br URL: http://www.inf.ufsc.br/~willrich Linguagens de Programação Conteúdo Software e Hardware Tipos de Softwares Níveis

Leia mais

Introdução e Conceitos

Introdução e Conceitos Introdução e Conceitos Aula 1 11/08/2017 diegoquirino@gmail.com 1 Agenda 1. Motivações: porque estudar linguagens de programação? 2. Breve Histórico sobre as Linguagens de Programação 3. Processos de Tradução

Leia mais

Introdução. (Aula 2) Organização Estruturada de Computadores

Introdução. (Aula 2) Organização Estruturada de Computadores Introdução (Aula 2) Organização Estruturada de Computadores Introdução Arquitetura de Hardware 01- Monitor 02- Placa-Mãe 03- Processador 04- Memória RAM 05- Placas de Rede, Som, Vídeo, Fax... 06- Fonte

Leia mais

Projeto de Compiladores

Projeto de Compiladores Projeto de Compiladores FIR Faculdade Integrada do Recife João Ferreira 12 e 13 de fevereiro de 2007 Questionário 1. Em quais linguagens de programação você já programou? 2. O que você sabe sobre compiladores?

Leia mais

Infraestrutura de Hardware. Funcionamento de um Computador

Infraestrutura de Hardware. Funcionamento de um Computador Infraestrutura de Hardware Funcionamento de um Computador Computador: Hardware + Software Perguntas que Devem ser Respondidas ao Final do Curso Como um programa escrito em uma linguagem de alto nível é

Leia mais

Resolução de Problemas com Computador. Resolução de Problemas com Computador. Resolução de Problemas com Computador

Resolução de Problemas com Computador. Resolução de Problemas com Computador. Resolução de Problemas com Computador Prof. Araken Medeiros araken@ufersa.edu.br O processo de resolução de um problema com um computador leva à escrita de um algoritmo ou programa e à sua execução. Mas o que é um algoritmo? Angicos, RN 15/9/2009

Leia mais

Tecnólogo em Análise e Desenvolvimento de Sistemas. Sistemas Operacionais (SOP A2)

Tecnólogo em Análise e Desenvolvimento de Sistemas. Sistemas Operacionais (SOP A2) Tecnólogo em Análise e Desenvolvimento de Sistemas Sistemas Operacionais (SOP A2) Conceitos de Hardware e Software Referências: Arquitetura de Sistemas Operacionais. F. B. Machado, L. P. Maia. Editora

Leia mais

Introdução à Computação para Engenharia MAC2166 Prof. Dr. Paulo Miranda IME-USP. Aula 1 Introdução à Computação

Introdução à Computação para Engenharia MAC2166 Prof. Dr. Paulo Miranda IME-USP. Aula 1 Introdução à Computação Introdução à Computação para Engenharia MAC2166 Prof. Dr. Paulo Miranda IME-USP Aula 1 Introdução à Computação Eventos históricos: 1) Primeiro computador a válvulas, o Eletronic Numeric Integrator And

Leia mais

Introdução (Aula 2) Introdução Arquitetura de Hardware. Organização Estruturada de Computadores. Introdução Conceitos (2) Introdução Conceitos (1)

Introdução (Aula 2) Introdução Arquitetura de Hardware. Organização Estruturada de Computadores. Introdução Conceitos (2) Introdução Conceitos (1) Introdução Arquitetura de Hardware Introdução (Aula 2) Organização Estruturada de Computadores 01- Monitor 02- Placa-Mãe 03- Processador 04- Memória RAM 05- Placas de Rede, Som, Vídeo, Fax... 06- Fonte

Leia mais

Algoritmos e Programação

Algoritmos e Programação ESTADO DE MATO GROSSO SECRETARIA DE ESTADO DE CIÊNCIA E TECNOLOGIA UNIVERSIDADE DO ESTADO DE MATO GROSSO CAMPUS UNIVERSITÁRIO DE SINOP FACULDADE DE CIÊNCIAS EXATAS E TECNOLÓGICAS CURSO DE ENGENHARIA ELÉTRICA

Leia mais

Linguagens de Programação

Linguagens de Programação Linguagens de Programação Prof a Jerusa Marchi Departamento de Informática e Estatística Universidade Federal de Santa Catarina e-mail: jerusa@inf.ufsc.br Linguagens de Programação p. 1/5 Linguagens de

Leia mais

Construção de Compiladores. Capítulo 1. Introdução. José Romildo Malaquias. Departamento de Computação Universidade Federal de Ouro Preto 2014.

Construção de Compiladores. Capítulo 1. Introdução. José Romildo Malaquias. Departamento de Computação Universidade Federal de Ouro Preto 2014. Construção de Compiladores Capítulo 1 Introdução José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2014.2 1/22 1 Linguagens de programação 2 Compilação 2/22 Tópicos 1

Leia mais

Programação Estruturada Aula - Introdução a Linguagem de Programação

Programação Estruturada Aula - Introdução a Linguagem de Programação Programação Estruturada Aula - Introdução a Linguagem de Programação Prof. Flávio Barros flavioifma@gmail.com www.flaviobarros.com.br ORGANIZAÇÃO BÁSICA DE UM COMPUTADOR 2 ORGANIZAÇÃO BÁSICA DE UM COMPUTADOR

Leia mais

Computadores podem ser úteis em problemas que envolvem: Grande número de dados. Grande número de cálculos. Complexidade. Precisão.

Computadores podem ser úteis em problemas que envolvem: Grande número de dados. Grande número de cálculos. Complexidade. Precisão. O uso do computador Computadores podem ser úteis em problemas que envolvem: Grande número de dados. Grande número de cálculos. Complexidade. Precisão. Exemplos: Modelos meteorológicos. Cálculo estrutural.

Leia mais

Prof. Sandro Wambier

Prof. Sandro Wambier Prof. Sandro Wambier São elementos da Arquitetura de um computador: conjunto de instruções de um processador, os modos de endereçamentos, o tipo e tamanho dos dados manipulados pelo processador, ex.: Intel

Leia mais

TÉCNICO EM MANUTENÇÃO E SUPORTE EM INFORMÁTICA FORMA SUBSEQUENTE. Professora: Isabela C. Damke

TÉCNICO EM MANUTENÇÃO E SUPORTE EM INFORMÁTICA FORMA SUBSEQUENTE. Professora: Isabela C. Damke TÉCNICO EM MANUTENÇÃO E SUPORTE EM INFORMÁTICA FORMA SUBSEQUENTE Professora: Isabela C. Damke isabeladamke@hotmail.com Linguagem de Programação Uma linguagem de programação é um conjunto de símbolos (

Leia mais

Conceitos básicos sobre computadores (continuação)

Conceitos básicos sobre computadores (continuação) SSC0101 - ICC1 Teórica Introdução à Ciência da Computação I Conceitos básicos sobre computadores (continuação) Prof. Vanderlei Bonato Prof. Cláudio Fabiano Motta Toledo Sumário O que é um computador e

Leia mais

Introdução à Computação Parte 2

Introdução à Computação Parte 2 Introdução à Computação Parte 2 José Gustavo de Souza Paiva Computação Objetivo básico auxiliar os seres humanos em trabalhos repetitivos e bra çais, diminuindo esfor ços e economizando tempo O computador

Leia mais

Algoritmos e Programação

Algoritmos e Programação ESTADO DE MATO GROSSO SECRETARIA DE ESTADO DE CIÊNCIA E TECNOLOGIA UNIVERSIDADE DO ESTADO DE MATO GROSSO CAMPUS UNIVERSITÁRIO DE SINOP FACULDADE DE CIÊNCIAS EXATAS E TECNOLÓGICAS Algoritmos e Programação

Leia mais

Estrutura e funcionamento básico de um computador

Estrutura e funcionamento básico de um computador Estrutura e funcionamento básico de um computador O que é um computador? Um computador é uma máquina composta por um conjunto de dispositivos electrónicos e electromecânicos capazes de processar informação.

Leia mais

SSC510 Arquitetura de Computadores 1ª AULA

SSC510 Arquitetura de Computadores 1ª AULA SSC510 Arquitetura de Computadores 1ª AULA REVISÃO DE ORGANIZAÇÃO DE COMPUTADORES Arquitetura X Organização Arquitetura - Atributos de um Sistema Computacional como visto pelo programador, isto é a estrutura

Leia mais

Linguagens de Programação

Linguagens de Programação Linguagens de Programação 128 13 129 Linguagens de Programação Uma linguagem de programação é um vocabulário e um conjunto de regras gramaticais usadas para escrever programas de computador. Esses programas

Leia mais

Olá pessoal, Hoje vamos entender os conceitos sobre linguagem de programação. Definição, tipos de linguagens e as linguagens mais utilizadas

Olá pessoal, Hoje vamos entender os conceitos sobre linguagem de programação. Definição, tipos de linguagens e as linguagens mais utilizadas Olá pessoal, Hoje vamos entender os conceitos sobre linguagem de programação. Definição, tipos de linguagens e as linguagens mais utilizadas atualmente. Uma linguagem de programação é um conjunto padronizado

Leia mais

Aula teórica 7. Preparado por eng.tatiana Kovalenko

Aula teórica 7. Preparado por eng.tatiana Kovalenko Aula teórica 7 Tema 7. Introdução a Programação Ø Linguagens de Programação Ø LP Java ØEstrutura de um programa em Java ØIdentificadores, variáveis e constantes. ØTipos de dados básicos Preparado por eng.tatiana

Leia mais

a) Computador b) Estrutura do sistema i. Hardware ii.software c) Linguagens de Programação i. Paradigmas e Programação 1.

a) Computador b) Estrutura do sistema i. Hardware ii.software c) Linguagens de Programação i. Paradigmas e Programação 1. a) Computador b) Estrutura do sistema i. Hardware ii.software c) Linguagens de Programação i. Paradigmas e Programação 1. Estruturada 2. Orientada a eventos 3. Orientada a objetos d) Sistemas Operacionais

Leia mais

Paradigmas de Linguagens

Paradigmas de Linguagens Paradigmas de Linguagens Aula 1: Introdução e Conceitos Básicos Professora Sheila Cáceres O que é um paradigma??? Paradigmas de Linguagens - Sheila Cáceres 2 O que é um paradigma??? Paradigmas de Linguagens

Leia mais

Linguagens de Programação

Linguagens de Programação O estudante estuda muito. Regras: 7 9 12 14. . Regras: 2 4 . Regras: 1 Representar através de uma árvore de derivação. 77 O estudante estuda muito.

Leia mais

Conversões de Linguagens: Tradução, Montagem, Compilação, Ligação e Interpretação

Conversões de Linguagens: Tradução, Montagem, Compilação, Ligação e Interpretação Conversões de Linguagens: Tradução, Montagem, Compilação, Ligação e Interpretação Para executar uma tarefa qualquer, um computador precisa receber instruções precisas sobre o que fazer. Uma seqüência adequada

Leia mais

Algoritmos. Prof. Jonatas Bastos Site:

Algoritmos. Prof. Jonatas Bastos   Site: Algoritmos Prof. Jonatas Bastos Email: jonatasfbastos@gmail.com Site: http://jonatasfbastos.wordpress.com/ 1 Dúvidas! p p p Como os computadores entendem os algoritmo? Os computadores não entendem os passos

Leia mais

Linguagem de Programação

Linguagem de Programação Linguagem de Programação aula 4 Engenharia Elétrica e Engenharia de Automação Introdução à Computação 1.o sem/2013 Profa Suely (e-mail: smaoki@yahoo.com) Programas Programas são seqüências de instruções

Leia mais

II.1 Conceitos Fundamentais. Uma delas é programar o =>

II.1 Conceitos Fundamentais. Uma delas é programar o => II.1 Conceitos Fundamentais II.2 Gerações das Linguagens de Programação II.3 Linguagem de Programação II.4 Sistema Operacional II.5 Tradutores II.5.1 Estrutura de um tradutor II.5.1.1 Análise Léxica II.5.1.3

Leia mais

INFORMÁTICA: Informação automática

INFORMÁTICA: Informação automática INTRODUÇÃO INFORMÁTICA: Informação automática Definição: é a ciência que estuda o tratamento automático e racional da informação (encarregada pelo estudo e desenvolvimento de máquinas e métodos para processar

Leia mais

INTRODUÇÃO À PROGRAMAÇÃO. Introdução. Sérgio Carlos Portari Júnior

INTRODUÇÃO À PROGRAMAÇÃO. Introdução. Sérgio Carlos Portari Júnior INTRODUÇÃO À PROGRAMAÇÃO Introdução Sérgio Carlos Portari Júnior Sergio.junior@uemg.br TÓPICOS ABORDADOS Comparação homem x computador Entendendo o computador Linguagens de Programação Tipos de traduções

Leia mais

1 Introdução à Programação O que é? Para que serve?... 1

1 Introdução à Programação O que é? Para que serve?... 1 Nesta aula... Conteúdo 1 Introdução à Programação 1 1.1 O que é?................................. 1 1.2 Para que serve?............................. 1 2 Linguagens de programação 2 2.1 Programação estruturada........................

Leia mais

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

OFICINA DA PESQUISA PROGRAMAÇÃO APLICADA À CIÊNCIA DA COMPUTAÇÃO OFICINA DA PESQUISA PROGRAMAÇÃO APLICADA À CIÊNCIA DA COMPUTAÇÃO Prof. Msc. Carlos José Giudice dos Santos carlos@oficinadapesquisa.com.br www.oficinadapesquisa.com.br Compiladores e Interpretadores Compiladores

Leia mais

Aula 5 Oficina de Programação Introdução ao C. Profa. Elaine Faria UFU

Aula 5 Oficina de Programação Introdução ao C. Profa. Elaine Faria UFU Aula 5 Oficina de Programação Introdução ao C Profa. Elaine Faria UFU - 2017 Linguagem de Programação Para que o computador consiga ler um programa e entender o que fazer, este programa deve ser escrito

Leia mais

Linguagens Computacionais (Conceitos Básicos)

Linguagens Computacionais (Conceitos Básicos) Linguagens Computacionais (Conceitos Básicos) George Darmiton da Cunha Cavalcanti (gdcc@cin.ufpe.br) Tópicos Razões para estudar os conceitos de linguagens de programação Domínios de programação Critérios

Leia mais

Programação de Computadores I Introdução PROFESSORA CINTIA CAETANO

Programação de Computadores I Introdução PROFESSORA CINTIA CAETANO Programação de Computadores I Introdução PROFESSORA CINTIA CAETANO Introdução Resolução de problemas Encontrar uma maneira de descrever este problema de uma forma clara e precisa. Encontremos uma seqüência

Leia mais

Conceitos de Linguagens de Programação - Características. Paavo Soeiro

Conceitos de Linguagens de Programação - Características. Paavo Soeiro Conceitos de Linguagens de Programação - Características Paavo Soeiro Motivação Para que possa escolher uma linguagem apropriada ao problema. Melhorar o entendimento da linguagem utilizada. Facilitar o

Leia mais

ORGANIZAÇÃO DE COMPUTADORES

ORGANIZAÇÃO DE COMPUTADORES ORGANIZAÇÃO DE COMPUTADORES AULA 03 PROFº RITIELLE SOUZA DISTRIBUIÇÃO LÓGICA DISTRIBUIÇÃO LÓGICA Arquitetura de Von Neumann Uma unidade central de processamento recebe informações através de uma unidade

Leia mais

CONCEITOS DE LINGUAGENS DE PROGRAMAÇÃO

CONCEITOS DE LINGUAGENS DE PROGRAMAÇÃO CONCEITOS DE LINGUAGENS DE PROGRAMAÇÃO ROTEIRO 1. INTRODUÇÃO 2. LINGUAGENS IMPERATIVAS 1. CONCEITO 2. PARADIGMA IMPERATIVO 3. ORIGENS 4. MODELO COMPUTACIONAL 1. ARQUITETURA DE VON NEUMANN 2. CARACTERISTICAS

Leia mais

Noções de compilação

Noções de compilação Noções de compilação Compilador: o que é, para que serve e estrutura geral Parentes do compilador e programas correlatos Prof. Thiago A. S. Pardo 1 Exercício em duplas Para esquentar... 2 1 Compilação:

Leia mais

Programação I Apresentação

Programação I Apresentação Programação I Apresentação Prof. Carlos Alberto carlos.batista@facape.br carlos36_batista@yahoo.com.br Referências JUNIOR, D. P.; NAKAMITI, G. S.; ENGELBRECHT, A. de M. E.; BIANCHI, F. Algoritmos e Programação

Leia mais

Introdução à Computação

Introdução à Computação Universidade Federal do Maranhão Curso de Química Departamento de Informática Introdução à Computação Linguagem Fortran Profa. Msc. Maria Auxiliadora Freire maria@deinf.ufma.br 1 Lógica de Programação

Leia mais

Introdução à Programação

Introdução à Programação Introdução à Programação Aula 02 Algoritmos e Ciclo de Desenvolvimento Edirlei Soares de Lima Modelo de um Computador Linguagem de Máquina Um processador executa instruções de máquina.

Leia mais

EA876 - Introdução a Software de Sistema

EA876 - Introdução a Software de Sistema A876 - Introdução a Software de Sistema Software de Sistema: conjunto de programas utilizados para tornar o hardware transparente para o desenvolvedor ou usuário. Preenche um gap de abstração. algoritmos

Leia mais

Slides trabalhados durante a quinta aula

Slides trabalhados durante a quinta aula Slides trabalhados durante a quinta aula prática Estruturas de Controle de Fluxo 3. Laços de repetição (continuação) Exercício: Construa um algoritmo, representando-o através de um pseudocódigo e de um

Leia mais

Arquitetura e Organização de computadores

Arquitetura e Organização de computadores Arquitetura e Organização de computadores Aula 1: Organização e evolução de computador, parte 2 Prof. MSc. Pedro Brandão Neto, pedroobn@gmail.com Sistemas de Informação - UNDB Introdução 2 Máquinas Multiníveis

Leia mais

1.1 Linguagens de Programação

1.1 Linguagens de Programação Fundamentos Procurando fazer com que haja uma melhor compreensão para o estudo e desenvolvimento utilizando linguagens de programação, este capítulo apresenta conceitos básicos sobre como um programa pode

Leia mais

INTRODUÇÃO À PROGRAMAÇÃO

INTRODUÇÃO À PROGRAMAÇÃO INTRODUÇÃO À PROGRAMAÇÃO 1 - CONCEITO DE ALGORITMO A automação é o processo em que uma tarefa deixa de ser desempenhada pelo homem e passa a ser realizada por máquinas, sejam estas dispositivos mecânicos,

Leia mais

Memória. Arquitetura de Von Neumann. Universidade do Vale do Rio dos Sinos Laboratório I Prof.ª Vera Alves 1 CPU. Unidade de controle ULA

Memória. Arquitetura de Von Neumann. Universidade do Vale do Rio dos Sinos Laboratório I Prof.ª Vera Alves 1 CPU. Unidade de controle ULA Universidade do Vale do Rio dos Sinos Laboratório I Prof.ª Vera Alves 1 Arquitetura de Von Neumann CPU Unidade de controle Unidade de entrada Unidade de saída ULA Von Neumann era um gênio. Falava muitos

Leia mais

Introdução. Parte 01. Desenvolvimento de Programação Orientada a Objetos. Prof. Pedro Neto

Introdução. Parte 01. Desenvolvimento de Programação Orientada a Objetos. Prof. Pedro Neto Introdução Parte 01 Prof. Pedro Neto Aracaju Sergipe - 2011 Conteúdo 1. Introdução i. Paradigmas de ii. Motivação da OO iii. Desafio das novas tecnologias iv. Ambientes de Desenvolvimento Modernos v. OO

Leia mais

INF 1005 Programação I

INF 1005 Programação I INF 1005 Programação I Aula 02 Algoritmos e Ciclo de Desenvolvimento Edirlei Soares de Lima Modelo de um Computador Linguagem de Máquina Um processador executa instruções de máquina

Leia mais

Programação I A Linguagem C. Prof. Carlos Alberto

Programação I A Linguagem C. Prof. Carlos Alberto Programação I A Linguagem C Prof. Carlos Alberto carlos.batista@facape.br carlos36_batista@yahoo.com.br 2 Origem A linguagem C foi desenvolvida em 1972, nos Laboratórios Bell, por Dennis Ritchie. Implementada

Leia mais

Assunto 2 - Software. Prof. Miguel Damasco

Assunto 2 - Software. Prof. Miguel Damasco Assunto 2 - Software UD 1 - FUNDAMENTOS DE INFORMÁTICA Prof. Miguel Damasco a. Gerações dos Softwares 1ª Geração: Linguagem de máquina notação numérica binária ou hexadecimal, linguagem de baixo nível,

Leia mais

CES-10 Introdução à Computação. Prof. Paulo André IEC - ITA

CES-10 Introdução à Computação. Prof. Paulo André IEC - ITA CES-10 Prof. Paulo André Estrutura do Curso Conceitos Básicos de Programação Algoritmos Estruturas de Controle Comandos de Entrada e Saída e Manipulação de Arquivos Rotinas, Variáveis Estruturadas e Ponteiros

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais CAP 2: Conceitos de Hardware e Software Prof. MSc. Diego R. Moraes diegorm@anhanguera.com Download de todo conteúdo da disciplina https://sites.google.com/site/diegorafaelmoraes/downloads

Leia mais

Introdução à Computação MAC0110

Introdução à Computação MAC0110 Introdução à Computação MAC0110 Prof. Dr. Paulo Miranda IME-USP Aula 1 Introdução à Computação Eventos históricos: 1) Primeiro computador a válvulas, o Eletronic Numeric Integrator And Calculator (ENIAC).

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 2016 Roteiro 1 Por que aprender a programar? 2 Hardware e Software 3 Organização de um ambiente computacional 4 Algoritmos

Leia mais

Conceitos de Linguagens de Programação

Conceitos de Linguagens de Programação Conceitos de Linguagens de Programação Aula 03 Processo de Compilação Edirlei Soares de Lima Métodos de Implementação Arquitetura de Von Neumann: A linguagem de máquina de um computador

Leia mais