17
TRABALHO 03 LINGUAGENS DE PROGRAMAÇÃO INTRODUÇÃO À CIÊNCIA DA COMPUTAÇÃO - COM06850- 2012-II CIÊNCIA DA COMPUTAÇÃO GRUPO 5 2012204302 Caíque de Oliveira de Souza 2012204291 - Heloiza Barros Del‟Esposti 2012204278 - Maycown Douglas O. Miranda 2012204279 - Melissa Silva de Souza 2012204298 - Otto Freitas Quintanilha 2012204286 - Paloma Marques Nobre

Trabalho 03

Embed Size (px)

DESCRIPTION

Trabalho de ICC

Citation preview

Page 1: Trabalho 03

TRABALHO 03 – LINGUAGENS DE PROGRAMAÇÃO

INTRODUÇÃO À CIÊNCIA DA COMPUTAÇÃO - COM06850- 2012-II

CIÊNCIA DA COMPUTAÇÃO

GRUPO 5

2012204302 – Caíque de Oliveira de Souza 2012204291 - Heloiza Barros Del‟Esposti

2012204278 - Maycown Douglas O. Miranda 2012204279 - Melissa Silva de Souza 2012204298 - Otto Freitas Quintanilha 2012204286 - Paloma Marques Nobre

Page 2: Trabalho 03

Compilação

Compilação é o processo de tradução de um programa escrito em linguagem de alto nível para código em

linguagem de máquina. Compilação é um processo análogo ao da montagem (verificação / análise do

código fonte, resolução das referências de memória, reserva de espaço em memória e conversão para

código de máquina binário). O que diferencia a compilação do processo de montagem é sua maior

complexidade. No processo de montagem, há uma relação de 1:1, ou seja, cada instrução do código fonte

resulta em uma instrução de máquina, enquanto na compilação a relação é múltipla, cada instrução do

código fonte gerando várias instruções de máquina.

Durante a compilação, o código fonte é analisado (análise léxica, sintática e semântica), é gerado um

código intermediário e são construídas tabelas de símbolos, alocam-se as áreas de memória para variáveis

e atribui-se os registradores a serem utilizados, e é finalmente gerado o código objeto em linguagem

binária de máquina. Em alguns compiladores, é gerado um código intermediário em Assembly (que pode

ser visualizado pelo programador) e que em seguida passa pelo montador para gerar finalmente o código

objeto em linguagem de máquina.

O código objeto pode ser absoluto (os endereços constantes são endereços reais de memória) ou

relocável (os endereços são relativos, tendo como referência o início do programa, e os endereços reais de

memória são definidos apenas em tempo de execução).

Tipos de Compiladores:

Single-Pass: compilação numa única leitura do programa fonte

Multi-Pass: compilação através de várias leituras do programa fonte

Load-And-Go: compilação e a execução do programa fonte

Debugging: compilação permitindo a depuração do programa fonte

Optimizing: compilação e a otimização do programa alvo

Vantagens:

O código compilado é mais rápido de ser acessado;

Impossibilita ou pelo menos dificulta ser quebrado e visualizado o código-fonte original;

Permite otimização do código por parte do compilador;

Compila o código somente se estiver sem algum erro.

Page 3: Trabalho 03

Desvantagens:

Para ser utilizado o código precisa passar por muitos níveis de compilação;

Assim como vantagem a possibilidade de não poder visualizar o código-fonte, pode ser uma

desvantagem;

Processo de correção ou alteração do código requer que ele seja novamente recompilado.

Interpretação

Com o processo de execução de um programa em fases distintas (compilação / ligação / execução)

apresentado, um programa para ser executado precisa primeiro ter sido convertido para código objeto pelo

compilador e depois ter passado pelo ligador. Esse processo é o mais largamente utilizado, porém não é o

único.

O método alternativo chama-se de interpretação e, a partir do programa fonte, realiza as três fases

(compilação, ligação e execução), comando por comando, em tempo de execução. Não existem fases

distintas nem se produzem códigos intermediários. Todo o processo de conversão é efetuado em tempo de

execução e imediatamente executado. Ou seja, cada comando é lido, verificado, convertido em código

executável e imediatamente executado, antes que o comando seguinte seja sequer lido.

Linguagens como C, Pascal, COBOL, etc, são linguagens tipicamente compiladas, enquanto o BASIC foi

desenvolvido como linguagem interpretada (hoje também existem linguagens BASIC compiladas e o

programador pode optar). As linguagens de programação tipicamente de usuário, tais como das planilhas

Excel, o Word Basic (linguagem de construção de Macros do Word), o Access, etc, são todas linguagens

interpretadas.

Uma vantagem é que o ciclo de escrita, execução, modificação é mais rápido em relação à compilação.

Por outro lado, a execução é mais lenta.

No programa em linguagem de alto nível, os interpretadores executam os passos definidos para cada

instrução e produzem o mesmo resultado que o do programa compilado. Entretanto, a execução de um

programa em linguagem de alto nível com o uso de interpretadores é mais lenta que a execução de um

programa compilado, uma vez que precisa examinar cada instrução no programa-fonte, à medida que ela

ocorre, e desviar para a rotina que executa a instrução.

Vantagens:

Correções e alterações são mais rápidas de serem realizadas;

Código não precisa ser compilado para ser executado;

Consomem menos memória.

Desvantagens:

Page 4: Trabalho 03

Execução é mais lenta do programa;

Necessita sempre ser lido o código original para ser executado;

Veja o comparativo abaixo:

Tradução

Um programa escrito por um programador (chamado código fonte) em uma linguagem de alto

nível é um conjunto de instruções que é clara para programadores, mas não para computadores.

Ou seja, os computadores entendem única e exclusivamente suas linguagens nativas, as

linguagens de máquina. Programas em linguagem de alto nível, a exemplo dos programas escritos

em linguagem de Montagem, também precisam ser traduzidos para linguagem de máquina para

poderem ser submetidos ao computador e processados.

O processo de tradução do programa escrito em uma linguagem simbólica pelo programador,

chamado código fonte (source code) para a linguagem de máquina do computador chamada

código objeto (object code), é chamado compilação e é realizado por um programa chamado

Compilador (Compiler).

Tradução sucessiva de uma linguagem para outra intermediária mais simples, da linguagem fonte

até à linguagem objeto.

Page 5: Trabalho 03

Cada tradução pode dividir-se nas seguintes fases:

Análise Léxica (scanner)

Ele separa a sequência de caracteres que representa o programa fonte em entidades ou tokens,

símbolos básicos da linguagem. Durante a análise léxica, os tokens são classificados como

palavras reservadas, identificadores, símbolos especiais, constantes de tipos básicos (inteiro real,

literal, etc.), entre outras categorias. Basicamente é reconhecer as sequências de símbolos que

representam uma unidade. Ex.: o nome de uma variável, uma constante, uma palavra chave de

uma instrução (while).

Um token consiste de um par ordenado (valor, classe). A classe indica a natureza da informação

contida em valor.

Outras funções atribuídas ao analisador léxico são: ignorar espaços em branco e comentários, e

detectar erros léxicos.

Análise Sintática (parser)

Ele agrupa os tokens fornecidos pelo analisador léxico em estruturas sintáticas, construindo a

árvore sintática correspondente. Para isso, utiliza uma série de regras de sintaxe, que constituem a

gramática da linguagem fonte. É a gramática da linguagem que define a estrutura sintática do

programa fonte.

O analisador sintático tem também por tarefa o reconhecimento de erros sintáticos, que são

construções do programa fonte que não estão de acordo com as regras de formação de estruturas

sintáticas como especificado pela gramática.

Identifica a estrutura gramatical do programa e reconhece o papel de cada componente. É

normalmente construída uma árvore sintática do programa e uma tabela de símbolos, que

identifica variáveis.

Analisador Semântico

O compilador executa ainda a análise semântica. O analisador semântico utiliza a árvore sintática

determinada pelo analisador sintático para: identificar operadores e operandos das expressões,

reconhecer erros semânticos, fazer verificações de compatibilidade de tipo, analisar o escopo das

variáveis, fazer verificações de correspondência entre parâmetros atuais e formais.

Fundamentalmente, a análise semântica trata os aspectos sensíveis ao contexto da sintaxe das

linguagens de programação. Por exemplo, não é possível representar em uma gramática livre de

contexto uma regra como “Todo identificador deve ser declarado antes de ser usado.“, e a

verificação de que essa regra foi aplicada cabe à análise semântica.

Otimização de Código

O processo de otimização de código consiste em melhorar o código intermediário de tal forma que

o programa objeto resultante seja mais rápido em tempo de execução. Por exemplo, um algoritmo

para geração do código intermediário gera uma instrução para cada operador na árvore sintática,

mesmo que exista uma maneira mais otimizada de realizar o mesmo comando.

Geração de Código

A fase final do compilador é a geração do código para o programa objeto, consistindo

normalmente de código em linguagem assembly ou de código em linguagem de máquina. Aqui é o

processo de construir instruções da linguagem máquina (em assembly, normalmente) que simulam

as instruções reconhecidas pelo analisador sintáctico. A geração de código pode englobar: análise

semântica, geração de código intermédio, otimizadores e geração de código final.

Page 6: Trabalho 03

Evolução

Notamos que durante o tempo as linguagens de programação evoluíram devido a necessidade de

eficiência para o programador, pois as linguagens mais primordiais eram bem mistificadas,

quando obtinha-se erros, eram complicado achá-los, também não eram nem um pouco práticas,

devido a cada instrução precisava ser individualmente codificada, entre outras desvantagens.

Com base nas informações anteriores temos as seguintes etapas da evolução das

linguagens de programação:

Linguagem de máquina → Linguagem de montagem → Linguagens de alto nível

A linguagem de máquina é a única que pode ser compreendida pelo computador, o que as

linguagens de alto nível fazem é converter as instruções para a linguagem de máquina através de

compiladores (Programas que transformam linguagens de alto nível em linguagem de máquina). O

código das linguagens de máquina é definido por números binários (0 ou 1).

A linguagem de montagem já vem substituindo os códigos binários por instruções,

símbolos, e endereços. Essa linguagem ficou também conhecida como linguagem simbólica. Um

programa chamado montador, traduz o código em linguagem de máquina.

Já as linguagens de alto nível surgiram melhorando a eficiência da programação. Foram

devidamente projetadas para aliviar o programador dos detalhes da linguagem de montagem. O

processo de conversão de linguagem de alto nível para linguagem de máquina é chamado de

interpretação ou compilação.

Exemplos:

Linguagem de baixo Nível: Assembly

Linguagens De Alto Nível: Basic,Cobol,Pascal,Object-Pascal,Ada,C, C++,C#,Java,

Asp,PHP,Python,Ruby.

Page 7: Trabalho 03

Paradigma Funcional

Um programa é considerado uma função matemática, nesse contexto a função é uma caixa preta

que mantem uma lista de entrada para uma de saída. Uma linguagem funcional predefine um

conjunto de funções primitivas que pode ser utilizado por qualquer programador, e permite que

essas funções sejam combinadas para criar novas funções.

Uma linguagem tem duas vantagens sobre uma procedural, ela incentiva a programação modular

e permite que o programador desenvolva novas funções a partir das já existentes, ajudando o

programador a criar programas maiores, e com menos propensões a erros.

Algumas linguagens funcionais:

Lisp

A linguagem lista projetada por uma equipe de programadores MIT (instituto de tecnologia de

massachussets) baseada em processamento de lista.

Sheme

Devido a falta de padronização da Lisp, havia diferentes versões então , a Sheme veio e definiu

um conjunto de funções primitivas que resolvem problemas. O nome da função e a lista de entrada

da função são limitados entre parênteses. O resultado é uma lista de saída que pode ser utilizada

como uma de entrada para outras funções.

Paradigma declarativo

Utiliza o principio do raciocínio logico para responder a consultas, tem como base a logica formal

definida por matemáticos gregos e posteriormente desenvolvida no calculo de predicados de

primeira ordem.

O raciocínio logico é fundamentado em dedução, a partir de fatos que assumimos serem

verdadeiros, utilizamos regras solidas de raciocínio para deduzir novos fatos.

Exemplo: se A é igual a B e B é igual a C, então A é igual a C .

Um problema associado com as linguagens declarativas é que um programa é especifico para um

domínio particular, pois a coleta de todos os fatos em um programa o torna imenso. Por isso a

programação declarativa é limitada a campos específicos , como a inteligência artificial.

Umas das famosas linguagens declarativas é chamada prolog (programação em logica), um

programa em prolog é composto de fatos e regras.

Page 8: Trabalho 03

Paradigmas da Computação

- Procedural : É um agente ativo que manipula um agente passivo, ou seja um agente passivo

não pode iniciar uma ação por si mesmo, mas pode receber ações de agentes. Em um programa

procedural podemos chamar de agente ativo o que utiliza de objetos (dados/itens) que serão

armazenados no computador e depois um programa o utiliza como ferramenta.Para manipular os

dados o programa executa uma ação, chamada procedimento. Por exemplo,o programa que

apresenta(imprime) o conteúdo de um arquivo, para ser impresso o arquivo precisa ser

anteriormente armazenado na memória. Para imprimir um arquivo, o programa utiliza um

procedimento, que podemos chamar de imprimeArquivos.Esse procedimento geralmente é

escrito anteriormente para incluir todas as ações exigidas para informar ao computador como

imprimir cada caracter do arquivo O programa invoca (chama) o procedimento imprimeArquivo,

em um paradigma procedural , o arquivo e o procedimento(imprimeArquivo) são entidades

completamente separadas. O arquivo é uma entidade independente que pode receber a ação de

imprimir ou algumas outras ações, como deletar, copiar e assim por diante. Para aplicar qualquer

uma dessas ações ao arquivo precisamos de um procedimento para agir sobre o arquivo. O

procedimento imprimeArquivo(ou copiaArquivo ou deletaArquivo) é uma entidade separada para

que já foi escrita, e o programa somente invoca (aciona).

Para evitar escrever um novo procedimento cada vez que precisamos imprimir (mostrar) um

arquivo, podemos escrever um procedimento geral que possibilita imprimir (mostrar) qualquer

arquivo. Quando escrevemos, todas as referencias ao nome do arquivo são substituídas por um

símbolo, tal como F ou FILE, ou algum outro. Quando o procedimento é chamado (invocado),

informamos o nome do arquivo real a ser impresso (mostrado), de modo que podemos escrever

apenas uma vez o procedimento e adiciona-lo (invoca-lo) duas vezes no programa, a fim de

imprimir dois arquivos diferentes.

Precisamos separar o procedimento de seu acionamento pelo programa, pois o programa não

define o procedimento, somente o inicia ou aciona, e este já deve existir. Quando utilizamos uma

linguagem procedural de alto nível, o programa consiste em nada além de inúmeras chamadas

de procedimentos, embora isso não seja imediatamente óbvio, mesmo quando utilizamos um

simples operador matemático, estamos acionando um procedimento que já foi escrito

anteriormente.

Exemplo: Quando utilizamos a expressão A+B e esperamos que ela adicione os valores de dois

“arquivos”, A e B, neste momento estamos acionando o procedimento adiciona e transmitindo-lhe

o nome desses dois arquivos. O procedimento adiciona, precisa de dois arquivos para poder agir,

esse procedimento foi escrito pelo projetista da linguagem e nós apenas o acionamos.

O jeito mais simples de compreender o conceito de paradigma procedural é pensar na relação

entre o procedimento e os objetos sobre os quais ele vai atuar. O Programa procedural é

composto três partes:

- criação do objeto

-conjunto de chamadas de procedimentos e objetos

Page 9: Trabalho 03

-conjunto de códigos para cada procedimento

Algumas linguagens procedurais (linguagens imperativas):

1 –Fortran

Foi a primeira linguagem de alto nível , e durante os últimos 40 anos, passou por várias

versões:Fortran,FortranII,FortranIV,Fortran 77, Fortran 99 e Fortran de alto desempenho(HPF).

A Fortran é uma linguagem ideal para aplicações cientificas e de engenharia, devido a alguns

recursos que possui. Esses recursos podem ser resumidos em:-Aritmética de alta precisão,

Capacidade de manipular números complexos, Cálculo de exponenciação

2 –Cobol

A linguagem do Cobol tinha como objetivo ser utilizada como uma linguagem para negócio , pois

possui recursos específicos diferente do que se é utilizado na área de engenharia, ou seja: -Uma

linguagem de rápido acesso aos arquivos e banco de dados, rápida atualização, grande

quantidade de relatórios gerados, e uma saída formatada de forma simplificada ao usuário.

3-Pascal

A linguagem foi programada com o objetivo especifico de ensinar programação, enfatizando a

programação estruturada, mas nunca atuou na área industrial da programação.

4 –C

A linguagem foi originalmente destinada a escrever sistemas operacionais e software de sistema,

posteriormente tornou-se popular entre programadores, pois, tem todas as instruções de alto

nível que uma linguagem de programação deve ter , oculta do programador os detalhes de

hardware, tendo também algumas instruções de baixo nível que permite melhor acesso e é mais

próxima da linguagem de montagem de qualquer outra linguagem de alto nível.

5 –Ada

A linguagem ADA foi criada para o ministério da defesa dos estados unidos com a finalidade de

ser a linguagem uniformemente utilizada por todas as companhias contratadas por este

ministério, pois tem instruções que possibilitam o processamento em tempo real , oque a torna

adequada para o controle de processos ,tem a capacidade também e paralelo de ser executada

em computadores mainframe com múltiplos processadores.

Page 10: Trabalho 03

Orientado a objetos

Trabalha com objetos ativos em vez de passivos, ou seja as ações serão realizadas sobre esses

objetos recebendo um estimulo externo apropriado para realiza-la , podendo ser agrupado com

todos os procedimentos. O programa apenas envia a solicitação correspondente para o objeto

realizar uma tarefa, assim o programa imprime , copia e em seguida é deletado.

O programa apenas envia o estimulo necessário para os objetos ativos e o arquivo será

impresso,copiado ou deletado.

O conceito baseia-se em métodos compartilhados por todos os objetos do mesmo tipo, se o

programa quiser imprimir envia o estímulo necessário para os objetos ativos e o arquivo será

impresso, comparando o paradigma procedural com o orientado, veremos que no procedural são

partes independentes , já no orientado os métodos pertencem ao objeto.

Classes

Os objetos do mesmo tipo precisam de um conjunto de métodos que utilizam da unidade

chamada classe para criar novos métodos que mostram como o objeto reage a diferentes

estímulos. Para criar esses métodos as linguagens utilizam uma unidade chamada classe.

Métodos

Cada método tem seu cabeçalho , suas variáveis e seus comandos, ou seja, em maioria tudo

oque já foi discutido em relação as linguagens procedurais se aplica aos objetos escritos para um

programa orientado aos objetos, podendo assim se afirmar, que as linguagens orientada aos

objetos são a extensão das procedurais, com algumas novas ideias e recursos, a linguagem C++

por exemplo, é uma extensão da linguagem C.

Herança

Quando uma classe geral é definida podemos estabelecer uma parte mais especifica , que herda

uma característica daquela, mas, também tem algumas novas. Ou seja, herança é uma

subclasse da geral com características adicionais.

Poliformismo

No paradigma orientado podemos definir várias operações com o mesmo nome, que podem

fazer diferentes coisas em classes relacionadas, ou seja, fazemos operações parecidas , porem

distintas em uma mesma classe.

Algumas linguagens orientadas a objetos :

C++

Foi desenvolvida a partir da “C”, utiliza das classes para definir características de objetos

similares, e operações, funções, ou métodos que podem ser aplicadas a elas .

Dois princípios utilizados na linguagem C++ : Herança , Poliformismo.

Page 11: Trabalho 03

Java

Foi desenvolvida para ser uma linguagem mais robusta também baseada em “C”, mas, mais

característica de “C++”, totalmente orientada a classes todos os itens de dados, pertencem a

uma classe. Em Java, um programa pode ser uma aplicação, ou seja, um programa que pode ser

executado independente. Mas, em contra partida é um HTML embutido, armazenado em um

servidor e executado por um servidor.um programa de aplicação é um conjunto de classes e

instancias , ou seja, uma biblioteca de classes.

Uma característica interessante é o suporte multhread , o thread é uma sequencia de ações executadas uma depois da outra, ou seja, possibilita uma execução simultânea de varias linhas de códigos, diferente da C++ que permite somente um thread simples, isto é, o programa todo é executado como uma thread única de processo.

Conceitos Comuns

Identificadores

São nomes escolhidos para representar constantes, variáveis, tipos, funções, procedimentos, unidades, programas e campos de um registro. Ou seja, nome de um local onde se pode colocar qualquer valor do conjunto de valores possíveis de um tipo associado. Usado para manipular todas as dadas variáveis do algoritmo. Pode também ser usado para rotular valores constantes (ex: uso do identificador pi para representar o valor constante 3.14).

(1º) Não pode ser iniciado com um dígito numérico;

(2º) Não pode conter espaços em branco nem símbolos especiais, exceto o sublinha (underline);

(3º) Não pode ser uma palavra reservada;

Tipos de Dados

O tipo de uma variável define os valores que ela pode assumir e as operações que podem ser realizadas com ela.

Tipos de Dados Simples

a) Inteiro (INTEGER) : Representa números entre -32768 até +32767. Ocupa 2 bytes na memória;

b) Real (REAL): Representa os números entre 2.9 x 10 -39 até 1.7 x 1038. Ocupa 6 bytes na memória;

Page 12: Trabalho 03

c) Caractere (CHAR) Representa um dos caracteres, da tabela ASCII. Ocupa 1 byte na memória;

d) Lógica (BOOLEAN): Valor lógico. Assuma somente dois valores: TRUE(Verdade) ou FALSE(Falso). Ocupa 1 byte na memória;

e) String: apresenta uma ou mais unidades literais (no máximo 255). Por convenção, deve-se representar esse tipo entre aspas simples. Ex: „a‟, „a1b343‟, „[email protected]‟, „João da Silva‟. Nos algoritmos esse tipo é descrito como string. Também pode ter tamanho pré-definido, nesse caso, string[10], por exemplo, permite no máximo 10 caracteres, e não 255.

Tipos de Dados Compostos

Além dos tipos predefinidos da linguagem Pascal, existe a possibilidade de se definir outros tipos com estrutura própria, chamados de Tipos Estruturados, a partir do comando TYPE na área de declarações, utilizando alguns dos tipos estruturados predefinidos no Pascal como: Array, Record, File, Set e Pointer, ou seja, Matrizes, Registros, Arquivos, Conjuntos e Ponteiros.

Variaveis

Variáveis e constantes, são espaços reservados na memória ram do computador para guardar informações que serão utilizadas durante o código do programa. Podem ter valores de diversos tamanhos e tipos, tais como números inteiros, números reais, caracteres, frases, enfim, diversas coisas.

Uma variável é formada por uma letra ou então por uma letra seguida de letras ou dígitos, em qualquer número. Não é permitido o uso de espaços em branco ou de qualquer outro caractere, que não seja letra ou dígito, na formação de um identificador. Na formação do nome da variável de um nome significativo, para que se possa ter ideia do seu conteúdo sem abri-la. Se utilizar palavras para compor o nome da variável utilize o “_ ” underline para separar as palavras. As variáveis podem modificar durante a execução do programa.

Literais

Os literais são maneiras de especificar constantes na linguagem. Para garantir que uma constante é realmente de certo tipo, podemos colocar um sufixo para indicar o tipo.

Page 13: Trabalho 03

Constantes

Constante é um determinado valor fixo que não se modifica ao longo do tempo, durante a execução de um programa, ou seja, não variam no decorrer do algoritmo. Conforme o seu tipo, a constante é classificada como sendo numérica lógica ou literal. A declaração de constantes deve ser feita antes da declaração das variáveis.

Entrada e Saída de Dados

Todo o programa necessita de ler e escrever dados, essas instruções podem ser complicadas ou simples. A maioria das linguagens de programação, sempre utiliza uma função predefinida para entrada e saída.

Entrada

A entrada de dados e feita por comandos predefinidos ou funções. Existem milhares de funções de entrada de dados. Um exemplo é uma função que lê dado a partir do teclado e armazena em uma variável.

Saída

A saída de dados é usa mesmo método, ou seja, funções predefinidas e comandos. Um exemplo de saída de dados é um comando que possa imprimir certo texto.

Expressões

Uma Expressão é similar a uma equação matemática, na qual um conjunto de operandos, que podem ser variáveis e/ou constantes, interage com operadores resultando num único valor. Do ponto de vista do Pascal, uma expressão pode resultar um dado de qualquer tipo predefinido; portanto, se uma expressão resulta um valor numérico, é denominada Expressão Aritmética; se resulta um valor lógico é denominada Expressão Lógica e, se manipula ou resulta uma string ou caracter é denominada Expressão Alfanumérica.

Page 14: Trabalho 03

Operadores

Operadores são usados para fazer cálculos, atribuir valores a variáveis, teste de igualdade ou operador de desigualdade e executar outras operações.

Operadores aritméticos

É utilizada na maioria das linguagens, a tabela mostra exemplos de operadores aritméticos.

.

Operadores Relacionais

Operadores relacionais são usados para comparar e verificar se o valor é maior, menor ou igual a outro. O resultadosemprevaiser do tipobooleano.

Page 15: Trabalho 03

Operadores lógicos

A Negação (não), a Conjunção (e) e a Disjunção (ou) são consideradas as três operações fundamentais da lógica computacional, são do tipo booleano.

Comandos de Controle

Um conjunto de comandos executados em uma sequência, numa linguagem procedural, constitui

um programa. Mas em certos casos é necessário modificar esta ordem para , por exemplo, para

repetir um comando.

Para tal, recomenda-se o uso de três construções já conhecidas, sequência, seleção e

repetição. A maioria das linguagens conhecidas usam os comandos que determinam a decisão

por dois caminhos(if-else), e por vários caminhos(switch-case). Já as de repetições ou laço são:

while, do, for. Sendo que todas elas podem ser simuladas utilizando o while.

Page 16: Trabalho 03

Variáveis Locais

O programa ou subprograma as utiliza e as destrói somente em sua utilização, sendo que as

mesmas podem ser utilizadas em outros subprogramas.

Variável Global

Uma variável global é uma variável acessível em todos os escopos de um programa de

computador. O mecanismo de interação com variáveis globais é chamada ambiente global. Em

contraste o ambiente local é um mecanismo no qual as variáveis são locais e sem memória

compartilhada.

O uso de variáveis globais é geralmente considerado inadequado pois seu conteúdo pode ser

potencialmente modificado de qualquer local, e qualquer parte de um código pode depender dela.

A técnica possui o potencial de criar dependências mútuas, o que aumenta a complexidade e

dificuldade de leitura de um código. Entretanto, para alguns casos seu uso pode ser adequado;

um exemplo é a passagem frequente de variáveis continuamente por diversas funções.

Parâmetros

Quando se deseja escrever um subprograma que seja o mais genérico possível, deve-se usar a

passagem de parâmetros. A passagem de parâmetros formaliza a comunicação entre os

módulos. Além disto, permite que um módulo seja utilizado com operandos diferentes,

dependendo do que se deseja do mesmo. Dá-se a designação de parâmetro real ou de chamada

ao objeto utilizado na unidade chamadora/ativadora, e de parâmetro formal ou de definição ao

recebido como parâmetro no subprograma. Dentre os modos de passagem de parâmetros,

destacasse a passagem por valor e a passagem por referência.

Page 17: Trabalho 03

Referências

FOROUZAN, Behrouz; MOSHARRAF, Firouz. Fundamentos da Ciência da Computação,

tradução da 2ª edição internacional.

http://wwwusers.rdc.puc-rio.br/rmano/processo.html

http://www.dcc.fc.up.pt/~nam/aulas/0001/ic/slides/sliic0018/node3.html

http://gec.di.uminho.pt/discip/TextoAC/cap1.html

http://www.dcc.fc.up.pt/~nam/aulas/0001/ic/slides/sliic0018/node4.html

http://www.oficinadanet.com.br/artigo/1527/diferencas_entre_compiladores_e_interpretad

ores - http://angela-santana.zip.net/ - http://www.cin.ufpe.br/~pftbm/apostila-LFeC-II.pdf