Compiladores (LEIC-A 2 o Semestre 2008/2009) Linguagem S9 Manual de Referência 16 de Março de 2009

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

Download "Compiladores (LEIC-A 2 o Semestre 2008/2009) Linguagem S9 Manual de Referência 16 de Março de 2009"

Transcrição

1 Compiladores (LEIC-A 2 o Semestre 2008/2009) Linguagem S9 Manual de Referência 16 de Março de 2009 A nota do projecto deve ser positiva (i.e. > 0) e contribui com um máximo de 8 valores (40%) para a nota final. Fraudes na execução do projecto terão como resultado a classificação de 0 (zero) valores. Datas: 2009/04/25 12:00 (entrega intermédia); 2009/06/11 12:00 (entrega final); 2009/06/ /06/17 (teste prático). Dúvidas que não possam ser esclarecidas presencialmente ou através do material no Fénix, devem ser colocadas através de correio electrónico (ver endereço no Fénix). Advertem-se os alunos contra a utilização de fontes de informação não oficialmente associadas ao corpo docente. Correcções a que este manual esteja sujeito serão devidamente anunciadas. Este documento não descreve a linguagem S9 formalmente, preferindo-se uma exposição intuitiva (em português). 1 Introdução A linguagem S9 é uma linguagem imperativa e fortemente tipificada. 1.1 Tipos de dados A linguagem define cinco tipos de dados manipuláveis, alguns dos quais estruturados. Ver também 3.1 e Números inteiros Designados por int, ocupam 4 bytes em complemento para dois, alinhados a 32 bits. Números reais Designados por real, ocupam 8 bytes em vírgula flutuante (norma IEEE 754). Cadeias de caracteres Designadas por string, são terminadas pelo carácter com o valor 0 ASCII (NULL). As variáveis e literais do tipo string podem apenas ser utilizados em atribuições, em impressões e como argumentos/retornos de funções. Ponteiros Designados pela palavra ptr e pelo tipo apontado, representam endereços de outros objectos, ocupando 4 bytes, alinhados a 32 bits. Podem ser objecto de operações aritméticas (deslocamentos) e permitem aceder ao valor apontado. Estruturas Designados por struct e pelos elementos constituintes, representam tipos estruturados, i.e., organizações de objectos de outros tipos. A dimensão de uma estrutura (em bytes) depende da sua constituição. 1.2 Verificação de tipos As operações em S9 dependem dos tipos de dados a que são aplicadas. Os tipos suportados por cada operador e a operação a realizar são indicados na definição das expressões (ver 6). 1.3 Manipulação de nomes As entidades nomeadas (ver também 2.3) em S9 correspondem a tipos estruturados, constantes, variáveis e funções. Nos pontos que se seguem, usa-se o termo entidade para as designar indiscriminadamente, usando-se listas explícitas quando a descrição for válida apenas para um subconjunto Espaços de nomes O espaço de nomes global é único, pelo que um nome utilizado para designar uma entidade num dado contexto não pode ser utilizado para designar outras (ainda que de natureza diferente). 1

2 1.3.2 Validade das variáveis As entidades globais (declaradas fora de qualquer função), existem do início ao fim da execução do programa. As contantes e variáveis locais a uma função existem apenas durante a sua execução, e os argumentos formais são válidos enquanto a função está activa Visibilidade dos identificadores Os identificadores estão visíveis desde a sua declaração até ao fim do seu alcance: ficheiro (globais) ou à função (locais). A reutilização de um identificador num contexto inferior encobre possíveis declarações em contextos superiores. Em particular, a redeclaração de um identificador numa função encobre o global até ao fim da função. Não é possível definir funções dentro de funções. É possível importar símbolos globais dentro de funções e seus contextos inferiores (visibilidade restringida), embora não seja possível defini-los (ver 3.5.2). 2 Convenções Lexicais Existem seis grupos de elementos lexicais (tokens). Em cada caso, é considerada a maior sequência de caracteres que constitua um elemento lexical válido. 2.1 Caracteres brancos São considerados caracteres brancos aqueles que, embora servindo para separar os elementos lexicais, não representam nenhum elemento lexical. São considerados caracteres brancos: espaço ASCII SP (0x20, ou ), mudança de linha ASCII LF (0x0A, ou \n), recuo do carreto ASCII CR (0x0D, \r) e tabulação horizontal ASCII HT (0x9, ou \t). 2.2 Comentários Os comentários funcionam como separadores de elementos lexicais. Existem dois tipos de comentários. Explicativos Começam com a sequência // (desde que a sequência não faça parte de uma cadeia de caracteres), e acabam no fim da linha. Operacionais Começam com /* e terminam com */ (desde que não façam parte de cadeias de caracteres). Podem estar aninhados. 2.3 Identificadores Também designados por nomes, são iniciados por uma letra (maiúscula ou minúscula) ou por _ (carácter sublinhado). O primeiro carácter é seguido por 0 (zero) ou mais letras, dígitos ou _. O número de caracteres que constituem um identificador é ilimitado e dois nomes designam identificadores distintos se houver alteração de maiúscula para minúscula, ou vice-versa, de pelo menos um carácter. 2.4 Palavras chave As palavras indicadas de seguida estão reservados em S9 (palavras chave), não podendo ser utilizadas como identificadores. Estas palavras têm de ser escritas exactamente como indicado: const void int real ptr struct string public use sizeof new delete next stop return if then elif else while for 2.5 Literais São notações para valores constantes de alguns tipos da linguagem (não confundir com constantes, i.e., identificadores que designam elementos cujo valor não pode sofrer alterações durante a execução do programa). 2

3 2.5.1 Inteiros Um literal inteiro é um número não negativo (uma constante inteira pode, contudo, ser negativa: números negativos são construídos pela aplicação do operador menos unário (-) a um literal positivo). Um literal inteiro em decimal é constituído por uma sequência de 1 (um) ou mais dígitos decimais (dígitos de 0 a 9) em que o primeiro dígito não é um 0 (zero), excepto no caso do número 0 (zero). Neste caso, é composto apenas pelo dígito único 0 (zero) (em qualquer base de numeração). Um literal inteiro em octal começa sempre pelo dígito 0 (zero), sendo seguido de um ou mais dígitos de 0 a 7. Um literal inteiro em hexadecimal começa sempre pela sequência 0x, sendo seguido de um ou mais digitos de 0 a 9, de a a f ou de A a F. As letras de a a f, ou de A a F, representam os valores de 10 a 15 respectivamente. Um literal inteiro em binário começa sempre pela sequência 0b, sendo seguido de um ou mais digitos 0 ou 1. Se não for possível representar o literal inteiro na máquina, devido a um overflow, deverá ser gerado um erro lexical Reais Os literais reais são expressos em notação científica (tal como em C) ou em notação de engenharia, onde a parte exponencial não existe e o ponto decimal é substituído pelas letras y (yocto/iocto = = 1E-24), z (zecto = = 1E-21), a (atto/ato = = 1E-18), f (femto/fento = = 1E-15), p (pico = = 1E-12), n (nano = 10 9 = 1E-9), u (micro = 10 6 = 1E-6), m (milli/mili = 10 3 = 1E-3), k (kilo/quilo = 10 3 = 1E+3), M (mega = 10 6 = 1E+6), G (giga = 10 9 = 1E+9), T (tera = = 1E+12), P (peta = = 1E+15), E (exa = = 1E+18), Z (zetta/zeta = = 1E+21), Y (yotta/yota = = 1E+24). Quando a notação for ambígua, é preferida a interpretação segundo a notação de engenharia Cadeias de caracteres São consituídas por dois ou mais caracteres iniciadores seguidos, sem separadores, mas constituindo elementos lexicais distintos, bem como uma só cadeia de texto (opcionalmente, poderão existir caracteres brancos entre os elementos lexicais que compõem a cadeia de caracteres). Os caracteres iniciadores podem ser valores inteiros, caracteres individuais ou cadeias de texto. Os valores inteiros em qualquer base, que representam um só carácter. Os caracteres individuais começam e terminam com o carácter plica ( ) podendo conter um só carácter ou uma sequência especial iniciada por (\). Uma sequência especial pode ser representada pelos caracteres ASCII LF, CR e HT (\n, \r e \t, respectivamente), ou ainda a plica (\ ) ou a barra (\\). Qualquer outro carácter pode ser representado por 1 ou 2 digitos hexadecimais precedidos do carácter \, por exemplo \0a ou apenas \A se o carácter seguinte não representar um digito hexadecimal. Uma cadeia de texto, começa e termina com o carácter aspa ("), pode conter qualquer número de caracteres, podendo estes ser valores ASCII (excepto o 0 ou NULL). Dentro das cadeias de texto, os caracteres utilizados para iniciar ou terminar comentários têm o seu valor normal ASCII não iniciando ou terminando qualquer comentário. As mesmas sequências especiais dos caracteres individuais podem ser utilizados nas cadeia de texto, excepto a sequência \ que é substituída pela sequência \". O carácter aspa (") pode ser utilizado numa cadeia de texto, desde que precedido de \ Estruturas Os literais de estruturas são constituídos por sequências de outros literais separados por vírgulas (,). Estes literais são iniciados com { e terminados com } Ponteiros O único literal admissível para ponteiros é 0 (zero), indicando o ponteiro nulo. 2.6 Operadores de expressões São considerados operadores os seguintes elementos lexicais: - +! # * / % ˆ = < > == >= <=!= &&! [ 3

4 2.7 Delimitadores Os elementos lexicais seguintes são considerados delimitadores/terminadores: ;, 3 Gramática 3.1 Gramática A gramática da linguagem S9 pode ser resumida pelas regras abaixo. Considerou-se que os elementos em tipo fixo são literais, que os parênteses curvos agrupam elementos, que elementos alternativos são separados por uma barra vertical, que elementos opcionais estão entre parênteses rectos, que os elementos que se repetem zero ou mais vezes estão entre e. A barra vertical e os parênteses são elementos lexicais da linguagem quando representados em tipo fixo. ficheiro declaração declaração declaração variável ; estrutura ; função variável [ const ] [ qualificador ] tipo identificador [ = expressão ] estrutura struct identificador [ { variáveis } ] struct identificador = estruturado função [ qualificador ] ( tipo void ) identificador ( [ variáveis ] ) [ -> literal ] [ bloco ] variáveis variável, variável tipo int real string ptr < tipo > identificador qualificador public use literal atómico estruturado atómico literal-inteiro literal-real carácter cadeia estruturado { expressão, expressão } literal-inteiro.. literal-inteiro bloco { variável ; instrução } instrução if ( expressão ) instrução elif ( expressão ) instrução [ else instrução ] for ( [ variáveis ] ; [ expressão ] ; [ expressão ] ) instrução for ( [ expressão ] ; [ expressão ] ; [ expressão ] ) instrução while ( expressão ) instrução [ else instrução ] expressão ( ;! ) next [ literal-inteiro ] ; stop [ literal-inteiro ] ; return bloco Elementos lexicais Foram omitidos da gramática, por já terem sido definidos acima, os seguintes elementos: identificador ( 2.3), literal-inteiro ( 2.5.1), literal-real ( 2.5.2), carácter ( 2.5.3) e cadeia ( 2.5.3) Expressões Foi omitida da gramática a regra corresponte à definição de expressões: serão tratadas em Left value Os elementos de uma expressão que podem ser utilizados como left-values encontram-se individualmente identificados em 6. Todos os left-values representam posições de memória passíveis de ser modificadas. 3.2 Constantes A linguagem define identificadores constantes: precedem a declaração pela palavra reservada const, impedindo que o identificador declarado possa ser utilizado em operações que modifiquem o seu valor. Caso um identificador designe uma constante inteira não pública (ver 3.5.2) o seu valor deverá ser directamente substituído no código, não ocupando espaço. 3.3 Ficheiros Os ficheiros descritos em S9 são uniformes, sendo o principal aquele que contiver a função principal, designada por s9. 4

5 3.4 Tipos estruturados Uma estrutura permite agrupar um conjunto de valores de vários tipos Declaração As estruturas em S9 são sempre designadas por identificadores constantes seguidas de um corpo com as definições dos campos que as compõem. Não existem estruturas com corpos vazios. Alternativamente, uma estrutura pode ser definida a partir de um modelo: definido por um literal exemplo ou por um intervalo entre dois inteiros (neste caso, a estrutura é constituída por tantos campos quantos os inteiros no intervalo indicado, sendo acedidos os seus campos pela posição que ocupam). A declaração de uma estrutura sem corpo é utilizada para efectuar declarações antecipadas (utilizadas para pré-declarar estruturas que sejam usadas antes de serem definidas). Caso a declaração tenha corpo, define-se uma nova estrutura Estruturas globais Uma estrutura pode ser utilizada fora do módulo onde foi definida, desde que não seja necessário conhecer a sua definição. A palavra reservada public designa uma estrutura globalmente visível no módulo actual e acessível a partir de outros módulos. A declaração de uma estrutura globalmente visível faz-se como nas declarações antecipadas (ver 3.4.1) Inicialização por omissão A inicialização por omissão aplica-se a cada campo da estrutura e é utilizada quando a inicialização ou operador de atribuição não contêm toda a informação necessária para preencher todos os campos. Quando se aplicam operadores sobre valores incompletos, os valores omitidos devem correspondem aos últimos campos da estrutura. A inicialização de cada campo é como descrita para as variáveis e constantes ( 3.5). Quando se reserva memória para uma estrutura, os valores por omissão devem ser respeitados. 3.5 Declaração de variáveis e constantes Cada declaração permite declarar uma única variável ou constante. Uma declaração inclui os componentes descritos nos pontos seguintes Constante Designada pela palavra reservada const, que torna o identificador constante, ou seja, cujo valor representado não pode ser modificado Símbolos globais Existem dois qualificadores opcionais, que gerem a utilização de identificadores globais: Símbolos públicos Designados pela palavra reservada public. Os identificadores são globalmente visíveis no módulo actual e acessíveis a partir de outros módulos. Pré-declarações Designadas pela palavra reservada use, para o caso de constantes, variáveis ou funções, que podem estar declaradas mais à frente no ficheiro ou num outro ficheiro (possivelmente noutra linguagem). Apenas é possível aplicar use a declarações. public pode também ser aplicada a definições Tipos de dados Os tipos são como descrito em

6 3.5.4 Identificador O identificador passa a nomear a entidade declarada Inicialização A existir, inicia-se com o operador = seguido de expressão do tipo declarado: inteiro (uma expressão inteira), real (uma expressão real), ponteiro (uma expressão do tipo ponteiro), estrutura (uma expressão correspodente ao tipo da estrutura). As cadeia de caracteres são (possivelmente) inicializadas com uma lista não nula de valores sem separadores (opcionalmente, poderão existir caracteres brancos entre os elementos lexicais que compõem a cadeia de caracteres). Os valores podem ser inteiros (ver 2.5.3), caracteres individuais ou cadeias de texto. Estes valores são sempre constantes, independentemente de o identificador que as designa ser constante ou não. Estruturas com apenas um campo podem ser iniciadas a partir de elementos atómicos do tipo correspondente. Neste caso, os caracteres delimitadores do literal da estrutura são opcionais. Inicializadores de estruturas com valores por omissão devem obedecer às restrições descritas em Notar que declarações de constantes não iniciadas só são possíveis se corresponderem a identificadores pré-declarados, pertencentes a outros módulos. 4 Funções Uma função permite agrupar um conjunto de instruções num corpo, que é executado com base num conjunto de parâmetros (os argumentos formais) quando é invocada a partir de uma expressão. O programa tem início na função com nome s Declaração As funções em S9 são sempre designadas por identificadores constantes precedidos do tipo de dados devolvido pela função. As funções que recebam argumentos devem indicá-los no cabeçalho. Funções sem argumentos definem um cabeçalho vazio. Uma declaração de uma função sem corpo é utilizada para tipificar um identificador exterior ou para efectuar declarações antecipadas (utilizadas para pré-declarar funções que sejam usadas antes de ser definidas, por exemplo, entre duas funções mutuamente recursivas). Caso a declaração tenha corpo, define-se uma nova função. 4.2 Invocação A função só pode ser invocada através de um identificador que refira uma função previamente declarada ou definida. Caso existam argumentos, na invocação da função, o seu identificador é seguido de uma lista de expressões delimitadas por parênteses curvos. A lista de expressões é uma sequência, possivelmente vazia, de expressões separadas por vírgulas. As expressões são avaliadas da direita para a esquerda antes da invocação da função (convenção Cdecl) e o valor resultante passado por cópia (passagem de argumentos por valor). O número e tipo de parâmetros actuais deve ser igual ao número e tipo dos parâmetros formais da função invocada. Caso existam parâmetros opcionais, iniciados na declaração da função, os seus valores são utilizados na falta de parâmetros actuais e apenas se forem os últimos. A ordem dos parâmetros actuais deverá ser a mesma dos argumentos formais da função a ser invocada. Os parâmetros actuais devem ser colocados na pilha de dados pela ordem inversa da sua declaração (o primeiro no topo da pilha) e o endereço de retorno no topo da pilha. A função chamadora coloca os argumentos na pilha e é também responsável pela sua remoção, após o retorno da função chamada (convenção Cdecl). Ainda de acordo com esta convenção, a passagem de retorno que não é possível colocar num registo é feita por referência passada como o primeiro argumento (i.e., o chamador reserva o espaço necessário e envia a localização à função invocada). 4.3 Corpo O valor devolvido por uma função, definido através do left-value especial que tem o mesmo nome da função, deve ser sempre do tipo declarado. 6

7 Se existir um valor declarado por omissão para o retorno da função, então deve ser utilizado se não for especificado outro. É um erro especificar um valor de retorno se o tipo de retorno for void. Uma instrução return causa a interrupção imediata da função. 5 Instruções Excepto quando indicado, as instruções são executadas em sequência, sendo os seus efeitos traduzidos, em geral, pela alteração do valor de variáveis. 5.1 Instrução condicional Se a expressão que segue a palavra chave if for diferente de 0 (zero) então o bloco seguinte é executado. Caso existam cadeias com elif consecutivas, as suas expressões serão sucessivamente testadas, caso todas as condições anteriores sejam nulas (iguais a 0). Assim que uma dessas condições seja diferente de 0 (zero), o corpo correspondente é executado e a instrução termina. Caso exista uma palavra chave else, o seu corpo só é executado se nenhum dos anteriores corpos da instrução o tenha sido. 5.2 Instruções de iteração Controladas por três grupos de expressões, podendo o primeiro grupo corresponde a declarações de variáveis locais ao ciclo. O comportamento do ciclo é análogo ao for da linguagem C. Existe um ciclo while análogo ao da linguagem C. A variante while-else permite que o corpo que segue a palavra reservada else seja executado quando a expressão de controlo do ciclo é falsa. 5.3 Instrução de retorno Indicada pela palavra reservada return, a existir deverá ser a última instrução do bloco em que se insere. Ver Instrução de continuação Iniciada pela palavra reservada next, a existir deverá ser a última instrução do bloco em que se insere. Esta instrução reinicia o ciclo mais interior em que a instrução se encontrar, tal como a instrução continue em C. Quando seguida de um número inteiro n, reinicia o n-ésimo ciclo a contar do actual (n = 1). Esta instrução só pode existir dentro de um ciclo. 5.5 Instrução de terminação Iniciada pela palavra reservada stop, a existir deverá ser a última instrução do bloco em que se insere. Esta instrução termina a execução do ciclo interior em que a instrução se encontrar, tal como a instrução break em C. Quando seguida de um número inteiro n, termina o n-ésimo ciclo a contar do actual (n = 1). Esta instrução só pode existir dentro de um ciclo. 5.6 Expressão como instrução Qualquer expressão pode ser utilizada como instrução, mesmo que não produza qualquer efeito secundário. Caso a expressão seja terminada por! o seu valor deve ser impresso. O valor deve ser impresso em decimal para os valores do tipo int e em ASCII e ISO-LATIN-15 para valores do tipo string. 6 Expressões Uma expressão é uma representação algébrica de uma quantidade. Assim, todas as expressões devolvem um valor. As expressões em S9 utilizam operadores algébricos comuns: soma, subtracção, multiplicação e divisão inteira e resto da divisão, além de outros operadores. 7

8 As expressões são sempre avaliadas da esquerda para a direita, independentemente da associatividade do operador. A precedência dos operadores é a mesma para operadores na mesma secção, sendo as secções seguintes de menor prioridade que as anteriores. O valor resultante da aplicação da expressão bem como a sua associatividade são indicados para cada operador. A tabela seguinte que resume os operadores em S9, por grupos de precedência decrescente: primária ( ) [ ] não associativos unária - + # sizeof não associativos potência ˆ da direita para a esquerda multiplicativa * / % da esquerda para a direita aditiva + - da esquerda para a direita comparativa < > <= >= da esquerda para a direita igualdade ==!= da esquerda para a direita não lógico! não associativo e lógico && da esquerda para a direita ou lógico da esquerda para a direita atribuição = da direita para a esquerda Os operadores têm o mesmo significado que em C, além do operador de leitura (que e do operador de potência (que usa ˆ). 6.1 Expressões primárias Identificadores Um identificador é uma expressão desde que tenha sido devidamente declarado. Um identificador pode denotar uma variável ou uma constante. Um identificador é o caso mais simples de um left-value, i.e., uma entidade que pode ser utilizada no lado esquerdo (left value) de uma atribuição. O nome de uma função constitui um identificador especial dentro da função actual, designando o valor de retorno Literais Os literais podem ser valores constantes inteiros não negativos, reais, tal como definidos nas convenções lexicais, ou cadeias de caracteres. Ver Parênteses curvos Uma expressão entre parênteses curvos tem o valor da expressão sem os parênteses e permite alterar a prioridade dos operadores. Uma expressão entre parênteses não pode ser utilizada como left-value (ver em indexação) Indexação Uma expressão indexação devolve o valor contido numa posição indicada por um ponteiro. Consiste de uma expressão ponteiro seguida do índice entre parênteses rectos. Se a expressão ponteiro for um left-value, então a expressão indexação poderá também ser um left-value Invocação Uma função só pode ser invocada através de um identificador que corresponda a uma função previamente declarada ou definida Leitura A operação de leitura de um valor inteiro ou real pode ser efectuado pela que devolve o valor lido, de acordo com o tipo esperado (inteiro ou real). Caso se use como argumento do operador de impressão (!), deve ser lido um inteiro. 8

9 6.1.7 Acesso a um campo O acesso a campos de estruturas faz-se através do operador. e pela indicação do nome do campo (tal como em C) ou através da indicação da posição do campo na estrutura (como se de um vector se tratasse), através do sendo a primeira posição designada pelo valor 0 (zero). 6.2 Expressões unárias Identidade A expressão identidade (+) devolve o valor do seu argumento inteiro ou real Simétrico A expressão valor simétrico (-) devolve o simétrico do seu argumento inteiro ou real Reserva de memória A expressão reserva de memória (#) devolve o ponteiro que aponta para a zona de memória na pilha da função actual contendo espaço suficiente para o número de bytes indicados pelo seu argumento inteiro. O tipo de retorno é idêntico ao do left-value utilizado. 6.3 Expressão de potência A operação é apenas aplicável a valores inteiros, devolvendo a multiplicação do primeiro argumento por ele próprio tantas vezes quantas o valor do segundo argumento. 6.4 Expressões multiplicativas As operações são apenas aplicáveis a valores inteiros e reais, devolvendo o resultado da respectiva operação algébrica. 6.5 Expressões de grandeza As operações são aplicáveis a valores inteiros ou reais devolvendo o valor inteiro 0 (zero) caso seja falsa e um valor diferente de zero caso contrário. 6.6 Expressões de igualdade As operações são aplicáveis a valores inteiros e reais, tal como no caso anterior. 6.7 Expressões de negação lógica A operação é aplicável a valores inteiros, devolvendo o valor inteiro 0 (zero) caso o argumento seja diferente de 0 (zero) e um valor diferente de zero caso contrário. 6.8 Expressões de junção lógica A operação é aplicável a valores inteiros, devolvendo um valor diferente de zero caso ambos os argumentos sejam diferente de 0 (zero) e um valor diferente de zero caso contrário. Caso o primeiro argumento seja 0 (zero) o segundo argumento não deve ser avaliado. 9

10 6.9 Expressões de alternativa lógica A operação é aplicável a valores inteiros, devolvendo o valor inteiro 0 (zero) caso ambos os argumentos sejam iguais a 0 (zero) e um valor diferente de zero caso contrário. Caso o primeiro argumento seja um valor diferente de zero o segundo argumento não deve ser avaliado Expressões de atribuição O valor da expressão do lado direito do operador é guardado na posição indicada pelo left-value do lado esquerdo do operador de atribuição. Só podem atribuídos valores a variáveis do mesmo tipo Expressão sizeof Indica o número de bytes realmente ocupados pela representação em memória do objecto indicado como argumento. Retorna um valor inteiro. 7 Exemplos Os exemplos apresentados não são exaustivos, pelo que não ilustram todos os aspectos da linguagem. O cálculo da função de Ackermann: esta função tem um crescimento muito rápido pelo que nos computadores actuais, mesmo utilizando C, os argumentos não deverão exceder m=3 e n=12 para executar em poucos segundos. public int cnt = 0; public int ackermann(int m, int n) { cnt = cnt + 1; if (m == 0) then ackermann = n+1; elif (n == 0) ackermann = ackermann(m-1, 1); else ackermann = ackermann(m-1, ackermann(m, n-1)); } public int getcnt() { getcnt = cnt; } Exemplo da utilização das funções noutro ficheiro: use int argc(); use string argv(int n); use int ackermann(int m, int n); use int getcnt(); public int s9() -> 0 { int m = 0; int n = 0; "Teste para a função de Ackermann\n"! "Introduza M (<3): "! m "Introduza N (<5): "! n "Valor de ackermann("! m! ", "! n! "): "! ackermann(m, n)! "\n"! "Calls to ackermann: "! getcnt()! "\n"! } 8 Omissões Casos omissos e erros serão corrigidos em futuras versões do manual de referência. 10

Projecto de Compiladores LEIC-A 2007/2008 (2 o Semestre) Linguagem NX6 Manual de Referência 4 de Março de 2008

Projecto de Compiladores LEIC-A 2007/2008 (2 o Semestre) Linguagem NX6 Manual de Referência 4 de Março de 2008 Projecto de Compiladores LEIC-A 2007/2008 (2 o Semestre) Linguagem NX6 Manual de Referência 4 de Março de 2008 A nota do projecto deve ser positiva (i.e. > 0) e contribui com um máximo de 8 valores (40%)

Leia mais

1 Características Básicas

1 Características Básicas Compiladores (LEIC-A 2 o Semestre 2010/2011) Linguagem at Manual de Referência 10 de Maio de 2011 A nota do projecto (40% da nota final) deve ser superior a 9,5 (sem arredondamentos). Fraudes na execução

Leia mais

1 Tipos de dados. 2 Manipulac~ao de nomes. Projecto de Compiladores Ano lectivo 2012/2013, 2 o Semestre

1 Tipos de dados. 2 Manipulac~ao de nomes. Projecto de Compiladores Ano lectivo 2012/2013, 2 o Semestre Projecto de Compiladores Ano lectivo 2012/2013, 2 o Semestre MAYFLY (manual de referência) 12 de Abril de 2013 Esclarecimento de dúvidas: Consultar sempre o corpo docente atempadamente: presencialmente

Leia mais

1 Tipos de dados. 2 Manipulac~ao de nomes

1 Tipos de dados. 2 Manipulac~ao de nomes Projecto de Compiladores Ano lectivo 2013/2014, 2 o Semestre OBI-WAN (OB1) (manual de referência) 28 de Fevereiro de 2014 Esclarecimento de dúvidas: Consultar sempre o corpo docente atempadamente: presencialmente

Leia mais

Compiladores LEIC Alameda 2 o Semestre 2009/2010 Linguagem Pipoca Manual de Referência 5 de Abril de 2010

Compiladores LEIC Alameda 2 o Semestre 2009/2010 Linguagem Pipoca Manual de Referência 5 de Abril de 2010 Compiladores LEIC Alameda 2 o Semestre 2009/2010 Linguagem Pipoca Manual de Referência 5 de Abril de 2010 Classificação mínima: 9,50 valores (sem arredondamentos) (40% da nota final). Fraudes na execução

Leia mais

Compiladores LEIC Alameda 2 o Semestre 2009/2010 Linguagem Pipoca Manual de Referência 29 de Março de 2010

Compiladores LEIC Alameda 2 o Semestre 2009/2010 Linguagem Pipoca Manual de Referência 29 de Março de 2010 Compiladores LEIC Alameda 2 o Semestre 2009/2010 Linguagem Pipoca Manual de Referência 29 de Março de 2010 Classificação mínima no projecto: 9,50 valores (sem arredondamentos) (40% da nota final). Fraudes

Leia mais

Compiladores LEIC Alameda 2 o Semestre 2009/2010 Linguagem Pipoca Manual de Referência 22 de Março de 2010

Compiladores LEIC Alameda 2 o Semestre 2009/2010 Linguagem Pipoca Manual de Referência 22 de Março de 2010 Compiladores LEIC Alameda 2 o Semestre 2009/2010 Linguagem Pipoca Manual de Referência 22 de Março de 2010 Classificação mínima no projecto: 9,50 valores (sem arredondamentos) (40% da nota final). Fraudes

Leia mais

Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões.

Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões. 1 Estruturas da linguagem C 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões. Identificadores Os identificadores seguem a duas regras: 1. Devem ser começados por letras

Leia mais

Elementos Básicos. C# - Elementos básicos. Primeiro programa Tipos de dados Variáveis Constantes Expressões e operadores Controlo de fluxo Tabelas

Elementos Básicos. C# - Elementos básicos. Primeiro programa Tipos de dados Variáveis Constantes Expressões e operadores Controlo de fluxo Tabelas C# - Elementos básicos Daniela da Cruz 2010 Elementos Básicos Primeiro programa Tipos de dados Variáveis Constantes Expressões e operadores Controlo de fluxo Tabelas Linguagens de Programação - Daniela

Leia mais

PROGRAMAÇÃO I E N T R A DA E S A Í DA D E DA D O S

PROGRAMAÇÃO I E N T R A DA E S A Í DA D E DA D O S PROGRAMAÇÃO I VA R I Á V E I S, C O N S TA N T E S, O P E R A D O R E S E N T R A DA E S A Í DA D E DA D O S Variáveis 2 Variáveis são locais onde são armazenados os valores na memória. Toda variável é

Leia mais

Revisão da Linguagem C Prof. Evandro L. L. Rodrigues

Revisão da Linguagem C Prof. Evandro L. L. Rodrigues SEL0433 Aplicação de Microprocessadores I Revisão da Linguagem C Prof. Evandro L. L. Rodrigues Estrutura de um programa C Diretivas de pré processamento Declaração de variáveis globais Declaração de protótipos

Leia mais

A Linguagem C. A forma de um programa em C

A Linguagem C. A forma de um programa em C A Linguagem C Criada em 1972 por D. M. Ritchie e K. Thompson. Tornou-se uma das mais importantes e populares, principalmente pela portabilidade e flexibilidade. Foi projetada para o desenvolvimento de

Leia mais

Linguagem de Programação I. Aula 06 Linguagem C: Tipos de Dados

Linguagem de Programação I. Aula 06 Linguagem C: Tipos de Dados Linguagem de Programação I Aula 06 Linguagem C: Tipos de Dados Da Aula Anterior Linguagens de Programação A Linguagem C: Como tudo começou Principais características da Linguagem C O primeiro programa

Leia mais

Hello World. Linguagem C. Tipos de Dados. Palavras Reservadas. Operadores Aritméticos. Pré e pós incremento e pré e pós decremento

Hello World. Linguagem C. Tipos de Dados. Palavras Reservadas. Operadores Aritméticos. Pré e pós incremento e pré e pós decremento Hello World Linguagem C printf("hello world!\n"); main é a função principal, a execução do programa começa por ela printf é uma função usada para enviar dados para o vídeo Palavras Reservadas auto double

Leia mais

PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS

PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS Docente: Éberton da Silva Marinho e-mail: ebertonsm@gmail.com eberton.marinho@gmail.com

Leia mais

ECT1203 Linguagem de Programação

ECT1203 Linguagem de Programação Universidade Federal do Rio Grande do Norte Escola de Ciências e Tecnologia ECT1203 Linguagem de Programação Prof. Aquiles Burlamaqui Profa. Caroline Rocha Prof. Luiz Eduardo Leite Prof. Luciano Ferreira

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 Tipos de variáveis comuns em linguagens em geral Identificadores

Leia mais

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

Programação de Computadores I Introdução ao C PROFESSORA CINTIA CAETANO Programação de Computadores I Introdução ao C PROFESSORA CINTIA CAETANO Introdução Criada em 1972, por Dennis Ritchie; Centro de Pesquisas da Bell Laboratories; Para utilização no S.O. UNIX; C é uma linguagem

Leia mais

ALGORITMOS E APLICAÇÕES. FATEC IPIRANGA ADS Noturno 1º semestre de 2012 Prof. Luiz Carlos de Jesus Junior

ALGORITMOS E APLICAÇÕES. FATEC IPIRANGA ADS Noturno 1º semestre de 2012 Prof. Luiz Carlos de Jesus Junior ALGORITMOS E APLICAÇÕES FATEC IPIRANGA ADS Noturno 1º semestre de 2012 Prof. Luiz Carlos de Jesus Junior Formato Básico do Pseudocódigo Tipos de dados O VisuAlg prevê quatro tipos de dados: inteiro, real,

Leia mais

#include <stdio.h> Void main() { printf( Cheguei!\n"); } INTRODUÇÃO A LINGUAGEM C

#include <stdio.h> Void main() { printf( Cheguei!\n); } INTRODUÇÃO A LINGUAGEM C #include Void main() { printf( Cheguei!\n"); } INTRODUÇÃO A LINGUAGEM C ANTES DO C ERA A LINGUAGEM B B foi essencialmente uma simplificação da linguagem BCPL. B só tinha um tipo de dado, que

Leia mais

PROGRAMAS BÁSICOS EM C++ Disciplina: Introdução à Ciência da Computação Prof. Modesto Antonio Chaves Universidade estadual do Sudoeste da Bahia

PROGRAMAS BÁSICOS EM C++ Disciplina: Introdução à Ciência da Computação Prof. Modesto Antonio Chaves Universidade estadual do Sudoeste da Bahia PROGRAMAS BÁSICOS EM C++ Disciplina: Introdução à Ciência da Computação Prof. Modesto Antonio Chaves Universidade estadual do Sudoeste da Bahia Calculo da área de um triângulo Algoritmo Área Var base,

Leia mais

Princípios de Desenvolvimento de Algoritmos MAC122

Princípios de Desenvolvimento de Algoritmos MAC122 Princípios de Desenvolvimento de Algoritmos MAC122 Prof. Dr. Paulo Miranda IME-USP Aula de Revisão: Variáveis e Atribuições Introdução Memória Principal: Vimos no curso anterior que a CPU usa a memória

Leia mais

Introdução à Computação MAC0110

Introdução à Computação MAC0110 Introdução à Computação MAC0110 Prof. Dr. Paulo Miranda IME-USP Aula 2 Variáveis e Atribuições Memória Principal: Introdução Vimos que a CPU usa a memória principal para guardar as informações que estão

Leia mais

K&R: Capitulo 2 IAED, 2012/2013

K&R: Capitulo 2 IAED, 2012/2013 Elementos da Linguagem C K&R: Capitulo 2 Elementos da Linguagem C Identificadores Tipos Constantes Declarações Operadores aritméticos, lógicos e relacionais Conversões de tipos Operadores de incremento

Leia mais

Referências. Linguagem C. Tipos de variáveis em XC8. Tipos de variáveis. Tipos de variáveis em XC 8 Exemplo. Radicais numéricos em C

Referências. Linguagem C. Tipos de variáveis em XC8. Tipos de variáveis. Tipos de variáveis em XC 8 Exemplo. Radicais numéricos em C Referências Linguagem C Jun Okamoto Jr. Kernighan, Brian W. and Ritchie, Dennis M. The C Programming Language (ANSI C); Prentice Hall; 2ª Edição; 1988 Microchip Technology Inc. MPLAB XC8 C Compiler User

Leia mais

Engenharia Elétrica AAM. Professor: Marco Shawn Meireles Machado

Engenharia Elétrica AAM. Professor: Marco Shawn Meireles Machado Engenharia Elétrica AAM Professor: Marco Shawn Meireles Machado Objetivos da Aula: Definir linguagem de alto nível e baixo nível; Descrever a linguagem assembler; Descrever a linguagem C; Revisão linguagem

Leia mais

Sintaxe da linguagem Java

Sintaxe da linguagem Java Sintaxe da linguagem Java (PG) Centro de Cálculo Instituto Superior de Engenharia de Lisboa Pedro Alexandre Pereira (palex@cc.isel.ipl.pt) Classe pública com método main Uma classe pública com nome A tem

Leia mais

A linguagem algorítmica utiliza o português para a definição dos comandos e tem as seguintes característica:

A linguagem algorítmica utiliza o português para a definição dos comandos e tem as seguintes característica: 1 de 16 08/02/2012 14:08 Linguagem Linguagem Algorítmica A linguagem algorítmica utiliza o português para a definição dos comandos e tem as seguintes característica: 1 - A linguagem não á sensível á capitulação

Leia mais

Diagramas Sintáticos

Diagramas Sintáticos Diagramas Sintáticos Centro de Cálculo Instituto Superior de Engenharia de Lisboa Pedro Alexandre Pereira (palex@cc.isel.ipl.pt) Classe pública com método main Cada classe X pública é declarada num ficheiro

Leia mais

Linguagem C Princípios Básicos (parte 1)

Linguagem C Princípios Básicos (parte 1) Linguagem C Princípios Básicos (parte 1) Objetivos O principal objetivo deste artigo é explicar alguns conceitos fundamentais de programação em C. No final será implementado um programa envolvendo todos

Leia mais

Introdução ao Fortran 90-1

Introdução ao Fortran 90-1 Introdução ao Fortran 90-1 Departamento de Física UFPel Definição de Programa em Fortran 90 Programa ou Código-fonte Programa ou código-fonte é um conjunto de instruções, também chamadas de comandos, escritas

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.2. Estrutura de Programas e Representação

Leia mais

AULA TEÓRICA 3 Tema 2. Introdução a programação em Java (JVM, JDK)

AULA TEÓRICA 3 Tema 2. Introdução a programação em Java (JVM, JDK) AULA TEÓRICA 3 Tema 2. Introdução a programação em Java (JVM, JDK) Ø LP Java. Estrutura de um programa em Java. Ø Conjunto de caracteres utilizado. Ø Identificadores. Ø Variáveis e constantes. Ø Tipos

Leia mais

Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Básicas. Aula Tópico 2

Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Básicas. Aula Tópico 2 Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Básicas Aula Tópico 2 1 Problema 3 Exibir o maior número inteiro que pode ser representado no computador. 2 Qual o maior número inteiro? Para o compilador

Leia mais

Universidade Federal do Espírito Santo. Programação I Tipos de Dados Básicos - C Professora: Norminda Luiza

Universidade Federal do Espírito Santo. Programação I Tipos de Dados Básicos - C Professora: Norminda Luiza Universidade Federal do Espírito Santo Programação I Tipos de Dados Básicos - C Professora: Norminda Luiza Variáveis Tipos de Dados Básicos Formação dos identificadores o nome deve começar com uma letra

Leia mais

Algoritmos e Estruturas de Dados I IEC012. Linguagem C - Guia de bolso - Prof. César Melo

Algoritmos e Estruturas de Dados I IEC012. Linguagem C - Guia de bolso - Prof. César Melo Algoritmos e Estruturas de Dados I IEC012 Linguagem C - Guia de bolso - Prof. César Melo Histórico A linguagem C é uma linguagem de programação inventada na década de 1970 por Dennis Ritchie Brian Kennigaham.

Leia mais

Capítulo 2 Operadores. A função scanf()

Capítulo 2 Operadores. A função scanf() Capítulo 2 Operadores A função scanf() A função scanf() é outra das funções de E/S implementadas em todos os compiladores e nos permite ler dados formatados da entrada padrão (teclado). Sintaxe: scanf(

Leia mais

Linguagens de Programação I

Linguagens de Programação I Linguagens de Programação I Tema # 4 Operadores em C Susana M Iglesias FUNÇÕES ENTRADA-SAÍDA I/O printf(), utilizada para enviar dados ao dispositivo de saída padrão (stdout), scanf(), utilizada para ler

Leia mais

A linguagem C (visão histórica)

A linguagem C (visão histórica) A linguagem C (visão histórica) A linguagem C é uma linguagem de programação desenvolvida no ínício dos anos 70 por Dennis Ritchie, que trabalhava nos laboratórios Bell e que também inciou em paralelo,

Leia mais

Objectivos. Observar os tipos fornecidos pelo C++ Explicar as regras sintácticas para nomes de identificadores Estudar variáveis e constantes

Objectivos. Observar os tipos fornecidos pelo C++ Explicar as regras sintácticas para nomes de identificadores Estudar variáveis e constantes Tipos de Dados Objectivos Observar os tipos fornecidos pelo C++ São dados alguns exemplos Explicar as regras sintácticas para nomes de identificadores Estudar variáveis e constantes O que são Como se distinguem

Leia mais

Aula 3 Conceitos de memória, variáveis e constantes Cleverton Hentz

Aula 3 Conceitos de memória, variáveis e constantes Cleverton Hentz Aula 3 Conceitos de memória, variáveis e constantes Cleverton Hentz Sumário de Aula } Conceito de Memória } Variáveis e Tipos de Dados } Constantes 2 Conceito de Memória } A memória de um computador é

Leia mais

Operadores e separadores Identificadores Palavras chave Constantes

Operadores e separadores Identificadores Palavras chave Constantes Sumário Abordagem de um problema Noções de léxico e de sintaxe Alfabeto da linguagem C Operadores e separadores Identificadores Palavras chave Constantes Programação 2007/2008 DEEC-IST 1 Problema Pretende-se

Leia mais

Compilação da linguagem Panda

Compilação da linguagem Panda Construção de Compiladores I [BCC328] Atividades Práticas Compilação da linguagem Panda Departamento de Computação Universidade Federal de Ouro Preto Prof. José Romildo Malaquias 22 de abril de 2015 Resumo

Leia mais

1/50. Conceitos Básicos. Programa Básico

1/50. Conceitos Básicos. Programa Básico 1/50 Conceitos Básicos Programa Básico 2/50 Operações básicas de entrada e saída #include main retorna um inteiro int main() { std::cout

Leia mais

Programação científica C++

Programação científica C++ Programação científica C++ NIELSEN CASTELO DAMASCENO Slide 2 Expressões Combinação de dados e operadores que resulta em um valor. expressão x = 2 * y + 4; variável operador constante Memória do computador

Leia mais

Linguagem C. André Tavares da Silva.

Linguagem C. André Tavares da Silva. Linguagem C André Tavares da Silva dcc2ats@joinville.udesc.br Variáveis Posição nomeada de memória que é usada para guardar um valor que pode ser modificado pelo programa. Todas as variáveis devem ser

Leia mais

Laboratório de Programação II

Laboratório de Programação II Laboratório de Programação II Aula 02 Prof. Diemesleno Souza Carvalho diemesleno@iftm.edu.br http://www.diemesleno.com.br Na aula passada vimos... Na aula passada vimos... 01 Introdução à linguagem C;

Leia mais

Conceitos Básicos de C

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

Leia mais

Fundamentos de Programação. Linguagem C++ aula II - Variáveis e constantes. Prof.: Bruno Gomes

Fundamentos de Programação. Linguagem C++ aula II - Variáveis e constantes. Prof.: Bruno Gomes Fundamentos de Programação Linguagem C++ aula II - Variáveis e constantes Prof.: Bruno Gomes 1 Variáveis Representa uma porção da memória que pode ser utilizada pelo programa para armazenar informações

Leia mais

Controlo de Execução. K&R: Capitulo 3

Controlo de Execução. K&R: Capitulo 3 Controlo de Execução K&R: Capitulo 3 IAED, 2009/2010 Controlo de Execução Instruções e Blocos if else-if switch Ciclos: Instruçõeswhile e for Instruçãodo-while break e continue goto e labels 2 IAED, 2009/2010

Leia mais

Ambiente de desenvolvimento

Ambiente de desenvolvimento Linguagem C Ambiente de desenvolvimento Um programa em C passa por seis fases até a execução: 1) Edição 2) Pré-processamento 3) Compilação 4) Linking 5) Carregamento 6) Execução Etapa 1: Criação do programa

Leia mais

4. Estruturas Fundamentais de Programação em C

4. Estruturas Fundamentais de Programação em C 4. Estruturas Fundamentais de Programação em C 4.1. Imprimindo Mensagens e Valores no Monitor de Vídeo A biblioteca de entrada e saída (stdio.h) possui a função printf que imprime mensagens e valores diretamente

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

Computação L2. Linguagem C++ Observação: Material Baseado na Disciplina Computação Eletrônica.

Computação L2. Linguagem C++ Observação: Material Baseado na Disciplina Computação Eletrônica. Computação L2 Linguagem C++ ovsj@cin.ufpe.br Observação: Material Baseado na Disciplina Computação Eletrônica. Alfabeto São os símbolos ( caracteres ) permitidos na linguagem: Letras (maiúsculas e minúsculas);

Leia mais

Computação Eletrônica. Tipos de dados, constantes, variáveis, operadores e expressões. Prof: Luciano Barbosa

Computação Eletrônica. Tipos de dados, constantes, variáveis, operadores e expressões. Prof: Luciano Barbosa Computação Eletrônica Tipos de dados, constantes, variáveis, operadores e expressões Prof: Luciano Barbosa Site da disciplina: www.cin.ufpe.br/~if165/ Recapitulando num cubo = n * n * n cubo Algoritmo

Leia mais

Lição 4 Fundamentos da programação

Lição 4 Fundamentos da programação Lição 4 Fundamentos da programação Introdução à Programação I 1 Objetivos Ao final desta lição, o estudante será capaz de: Identificar as partes básicas de um programa em Java Reconhecer as diferenças

Leia mais

LÓGICA DE PROGRAMAÇÃO. PROFª. M.Sc. JULIANA H Q BENACCHIO

LÓGICA DE PROGRAMAÇÃO. PROFª. M.Sc. JULIANA H Q BENACCHIO LÓGICA DE PROGRAMAÇÃO PROFª. M.Sc. JULIANA H Q BENACCHIO Modificadores de Tipos Os tipos de dados básicos em C podem estar acompanhados por modificadores na declaração de variáveis. Tais modificadores

Leia mais

Introdução à Linguagem de Programação C: Variáveis, Constantes, Expressões, Atribuição, Tipos de dados, Entrada e Saída de Dados

Introdução à Linguagem de Programação C: Variáveis, Constantes, Expressões, Atribuição, Tipos de dados, Entrada e Saída de Dados Introdução à Linguagem de Programação C: Variáveis, Constantes, Expressões, Atribuição, Tipos de dados, Entrada e Saída de Dados Disciplina de Programação de Computadores I Universidade Federal de Ouro

Leia mais

FACULDADE BATISTA MINEIRA - CST Banco de Dados Estruturas de Dados - Variáveis

FACULDADE BATISTA MINEIRA - CST Banco de Dados Estruturas de Dados - Variáveis Variável, na Matemática, é um termo utilizado em substituição de outro, normalmente, desconhecido. É utilizado para representar um número ou um conjunto. No contexto da programação de computadores, uma

Leia mais

Linguagem C: Introdução

Linguagem C: Introdução Linguagem C: Introdução Linguagem C É uma Linguagem de programação genérica que é utilizada para a criação de programas diversos como: Processadores de texto Planilhas eletrônicas Sistemas operacionais

Leia mais

Disciplina: Introdução à Engenharia da Computação

Disciplina: Introdução à Engenharia da Computação Colegiado de Engenharia de Computação Disciplina: Introdução à Engenharia da Computação Aula 07 (semestre 2011.2) Prof. Rosalvo Ferreira de Oliveira Neto, M.Sc. rosalvo.oliveira@univasf.edu.br 2 Representação

Leia mais

Algoritmos e Estruturas de Dados I (DCC/003) 2013/1. Estruturas Básicas. Aula Tópico 4

Algoritmos e Estruturas de Dados I (DCC/003) 2013/1. Estruturas Básicas. Aula Tópico 4 Algoritmos e Estruturas de Dados I (DCC/003) 2013/1 Estruturas Básicas Aula Tópico 4 1 Problema 3 Exibir o maior número inteiro que pode ser representado no computador. 2 Qual o maior número inteiro? Para

Leia mais

Bacharelado em Ciência e Tecnologia Processamento da Informação. Equivalência Portugol Java. Linguagem Java

Bacharelado em Ciência e Tecnologia Processamento da Informação. Equivalência Portugol Java. Linguagem Java Linguagem Java Objetivos Compreender como desenvolver algoritmos básicos em JAVA Aprender como escrever programas na Linguagem JAVA baseando-se na Linguagem Portugol aprender as sintaxes equivalentes entre

Leia mais

Linguagem Java - Introdução

Linguagem Java - Introdução Linguagem Java - Introdução Identificadores válidos resultado teste01 _numeroclientes $fortuna Identificadores Identificadores inválidos 101dalmatas 34 #x Palavras reservadas abstract assert*** boolean

Leia mais

Funções getchar() e putchar()

Funções getchar() e putchar() Sumário Tipos elementares Inteiro, Carácter, Real, Booleano, Void Variáveis e os operadores & e * Constantes Funções printf() e scanf() Opções de formatação Funções getchar() e putchar() Programação 2007/2008

Leia mais

Métodos Computacionais. Funções, Escopo de Variáveis e Ponteiros

Métodos Computacionais. Funções, Escopo de Variáveis e Ponteiros Métodos Computacionais Funções, Escopo de Variáveis e Ponteiros Tópicos da Aula Hoje vamos detalhar funções em C Escrevendo funções Comando return Passagem de argumentos por valor Execução de uma função

Leia mais

Introdução à Programação

Introdução à Programação Introdução à Programação 1.Ano LCC-MIERSI DCC - FCUP Nelma Moreira Aula 3 Tipos, Expressões,Operadores Tipos de dados Variáveis Constantes Constantes Simbólicas Expressões Operadores aritméticos, relacionais

Leia mais

Bacharelado em Ciência e Tecnologia Processamento da Informação. Equivalência Portugol Java. Linguagem Java

Bacharelado em Ciência e Tecnologia Processamento da Informação. Equivalência Portugol Java. Linguagem Java Linguagem Java Objetivos????? ADAPTAR O TEXTO ABAIXO????? Aprender a sintaxe da Estrutura de Repetição ENQUANTO-FAÇA na linguagem PORTUGOL Aprender a resolver problemas que requeiram o uso de ESTRUTURAS

Leia mais

Programação Estruturada

Programação Estruturada Programação Estruturada Introdução à linguagem C Professores Emílio Francesquini e Carla Negri Lintzmayer 2018.Q3 Centro de Matemática, Computação e Cognição Universidade Federal do ABC Programação estruturada

Leia mais

PORTUGUÊS ESTRUTURADO: INTRODUÇÃO INTRODUÇÃO À PROGRAMAÇÃO PROF. ALEXANDRO DOS SANTOS SILVA

PORTUGUÊS ESTRUTURADO: INTRODUÇÃO INTRODUÇÃO À PROGRAMAÇÃO PROF. ALEXANDRO DOS SANTOS SILVA PORTUGUÊS ESTRUTURADO: INTRODUÇÃO INTRODUÇÃO À PROGRAMAÇÃO PROF. ALEXANDRO DOS SANTOS SILVA SUMÁRIO Introdução Conceitos básicos Formato básico Tipos primitivos Variáveis Constantes Operadores Operações

Leia mais

Conceitos básicos de programação

Conceitos básicos de programação Constantes class Exemplo { static void Main() { float fahr, celsius; int lower, upper, step; lower = 0; /* limite inferior da tabela de temperaturas */ upper = 300; /* limite superior */ step = 20; /*

Leia mais

Capítulo 7. Expressões e Sentenças de Atribuição

Capítulo 7. Expressões e Sentenças de Atribuição Capítulo 7 Expressões e Sentenças de Atribuição Introdução Expressões são os meios fundamentais de especificar computações em uma linguagem de programação Para entender a avaliação de expressões, é necessário

Leia mais

EXPRESSÕES BOOLEANAS. Ex: boolean b = false; // declara uma variável do tipo boolean e atribui false

EXPRESSÕES BOOLEANAS. Ex: boolean b = false; // declara uma variável do tipo boolean e atribui false Cursos: Análise, Ciência da Computação e Sistemas de Informação Programação I - Prof. Aníbal Notas de aula 4 EXPRESSÕES BOOLEANAS O tipo primitivo boolean É um tipo de dados primitivo em Java que possui

Leia mais

Linguagem C: Variáveis e Operadores. Prof. Leonardo Barreto Campos 1

Linguagem C: Variáveis e Operadores. Prof. Leonardo Barreto Campos 1 Linguagem C: Variáveis e Operadores Prof. Leonardo Barreto Campos Sumário Variáveis: Tipos de variáveis; Nome da variável; Palavras reservadas; A função printf(); A função scanf(); Variáveis locais; Variáveis

Leia mais

Programação em C. Variáveis e Expressões. Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação

Programação em C. Variáveis e Expressões. Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação Programação em C Variáveis e Expressões DCA0800 Algoritmos e Lógica de Programação Heitor Medeiros Florencio

Leia mais

Puca Huachi Vaz Penna

Puca Huachi Vaz Penna Aula 3 C++: variáveis e expressões aritméticas 2017/1 BCC201 Introdução à Computação Turmas 61, 62, 63, 64, 65 e 66, 32 e 33 Puca Huachi Vaz Penna Departamento de Computação Universidade Federal de Ouro

Leia mais

Aula de hoje. Tipos de Dados e Variáveis. Constantes literais. Dados. Variáveis. Tipagem dinâmica. SCC Introdução à Programação para Engenharias

Aula de hoje. Tipos de Dados e Variáveis. Constantes literais. Dados. Variáveis. Tipagem dinâmica. SCC Introdução à Programação para Engenharias SCC 12 - Introdução à Programação para Engenharias Tipos de Dados e Variáveis Professor: André C. P. L. F. de Carvalho, ICMC-USP Pos-doutorando: Isvani Frias-Blanco Monitor: Henrique Bonini de Britto Menezes

Leia mais

Algoritmos e Estruturas de Dados I (DCC/003) Introdução à Programação de Computadores. Aula - Tópico 1

Algoritmos e Estruturas de Dados I (DCC/003) Introdução à Programação de Computadores. Aula - Tópico 1 Algoritmos e Estruturas de Dados I (DCC/003) Introdução à Programação de Computadores Aula - Tópico 1 1 Problema 1 Considere o seguinte problema: Determinar o valor de y = seno(1,5). 2 Definições Para

Leia mais

Java 2 Standard Edition Tipos, literais, operadores e controle de fluxo

Java 2 Standard Edition Tipos, literais, operadores e controle de fluxo Java 2 Standard Edition Tipos, literais, operadores e controle de fluxo Helder da Rocha www.argonavis.com.br 1 Operadores e controle de fluxo da execução Este módulo explora as estruturas procedurais da

Leia mais

LINGUAGEM DE PROGRAMAÇÃO C AULA 2. Professor: Rodrigo Rocha

LINGUAGEM DE PROGRAMAÇÃO C AULA 2. Professor: Rodrigo Rocha LINGUAGEM DE PROGRAMAÇÃO C AULA 2 Professor: Rodrigo Rocha TIPOS, VARIÁVEIS E CONSTANTES Tipos de Dados Variáveis Constantes Introdução a entrada e saída Printf Scanf Ferramentas: Dev-C++ Code::Blocks

Leia mais

Noçõ linguagem Java. Profs. Marcel Hugo e Jomi Fred Hübner. Departamento de Sistemas e Computação Universidade Regional de Blumenau - FURB

Noçõ linguagem Java. Profs. Marcel Hugo e Jomi Fred Hübner. Departamento de Sistemas e Computação Universidade Regional de Blumenau - FURB Noçõ ções básicas b da linguagem Java Profs. Marcel Hugo e Jomi Fred Hübner Departamento de Sistemas e Computação Universidade Regional de Blumenau - FURB Introduçã ção Origem Funcionamento Vantagens Linguagem

Leia mais

Mestrado em Engenharia Física Tecnológica

Mestrado em Engenharia Física Tecnológica 12 a Aula - Variáveis e Constantes. Programação Mestrado em Engenharia Física Tecnológica Samuel M. Eleutério sme@tecnico.ulisboa.pt Departamento de Física Instituto Superior Técnico Universidade de Lisboa

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

4. Constantes. Constantes pré-definidas

4. Constantes. Constantes pré-definidas 4. Constantes Constantes pré-definidas O PHP possui algumas constantes pré-definidas, indicando a versão do PHP, o Sistema Operacional do servidor, o arquivo em execução, e diversas outras informações.

Leia mais

SEBENTA INTRODUÇÃO Á ALGORITMIA

SEBENTA INTRODUÇÃO Á ALGORITMIA SEBENTA INTRODUÇÃO Á ALGORITMIA O desenvolvimento de programas para computador está sempre baseado na tarefa de programar um computador para seja resolvido um problema ou executada uma função e assim dar

Leia mais

Variáveis primitivas e Controle de fluxo

Variáveis primitivas e Controle de fluxo Variáveis primitivas e Controle de fluxo Material baseado na apostila FJ-11: Java e Orientação a Objetos do curso Caelum, Ensino e Inovação, disponível para download em http://www.caelum.com.br/apostilas/

Leia mais

Paradigmas de Linguagens de Programação. Expressões e Instruções de Atribuição

Paradigmas de Linguagens de Programação. Expressões e Instruções de Atribuição Expressões e Instruções de Atribuição Cristiano Lehrer Introdução Expressões são o meio fundamental de especificar computações em uma linguagem de programação: Familiarização com as ordens de avaliação

Leia mais

Algoritmos. Algoritmos e Linguagem de Programação - Prof Carlos Vetorazzi

Algoritmos. Algoritmos e Linguagem de Programação - Prof Carlos Vetorazzi Algoritmos Algoritmos e Linguagem de Programação - Prof Carlos Vetorazzi Conceitos Linhas de Código de um Algoritmo ou Programa escrita do programa linha a linha, ou seja, a sintaxe do programa, podendo-se

Leia mais

Descrição da Linguagem DECAF

Descrição da Linguagem DECAF Descrição da Linguagem DECAF Eduardo Ferreira dos Santos 8 de junho de 2017 Abstract The project for the course is to write a compiler for a language called Decaf. Decaf is a simple imperative language

Leia mais

Linguagem C. Prof.ª Márcia Jani Cícero

Linguagem C. Prof.ª Márcia Jani Cícero Linguagem C Prof.ª Márcia Jani Cícero A estrutura Básica de um Programa em C Consiste em uma ou várias funções ou programas. main( ) // primeira função a ser executada // inicia a função // termina a função

Leia mais

Aula 03: Introdução a C

Aula 03: Introdução a C Aula 03: Introdução a C Introdução a Programação Túlio Toffolo & Puca Huachi http://www.toffolo.com.br BCC201 2019/1 Departamento de Computação UFOP Aula Anterior O que é um computador Organização de um

Leia mais

C Operadores e Expressões

C Operadores e Expressões C Operadores e Expressões Adriano Cruz adriano@nce.ufrj.br Instituto de Matemática Departamento de Ciência da Computação UFRJ 15 de agosto de 2013 Adriano Cruz adriano@nce.ufrj.br (IM-DCC-UFRJ)C Operadores

Leia mais

11 - Estrutura de um programa em C

11 - Estrutura de um programa em C 11 - Estrutura de um programa em C directivas para o compilador { main ( ) declarações instruções } -É possível utilizar comentários, exemplo: /* Comentário */ que não são traduzidos pelo compilador, pois

Leia mais

Tipos Primitivos, estruturas de iteração e decisão.

Tipos Primitivos, estruturas de iteração e decisão. Tipos Primitivos, estruturas de iteração e decisão. André Luis Meneses Silva andreluis.ms@gmail.com http://br.geocities.com/programacao2ufs/ Agenda Tipos Primitivos de Dados Variáveis e Constantes es Comandos

Leia mais

Manipulação de informação. Algoritmos computacionais

Manipulação de informação. Algoritmos computacionais Manipulação de informação Algoritmos computacionais Sumário Algoritmos não computacionais Algoritmos computacionais Bases de Numeração Números binários Programas em linguagem máquina Linguagem estruturada

Leia mais

Linguagens de Programação PROGRAMAÇÃO DE COMPUTADORES. Linguagem C. Linguagem C Estrutura Básica. Constante (literais) Linguagem C Primeiro Programa

Linguagens de Programação PROGRAMAÇÃO DE COMPUTADORES. Linguagem C. Linguagem C Estrutura Básica. Constante (literais) Linguagem C Primeiro Programa Linguagens de Programação PROGRAMAÇÃO DE COMPUTADORES Linguagem C - Introdução Linguagens de Máquina Representação numérica Difícil utilização e compreensão Específica para cada máquina Linguagens Simbólicas(Assembly)

Leia mais

Expressões lógicas, expressões condicionais, prioridades e operadores, base binária, operadores de bits

Expressões lógicas, expressões condicionais, prioridades e operadores, base binária, operadores de bits Expressões lógicas, expressões condicionais, prioridades e operadores, base binária, operadores de bits Equivalência entre valores lógicos e aritméticos Quando uma expressão lógica é calculada dentro do

Leia mais

Programação de Computadores III

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

Leia mais

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