Os tipos básicos de dados

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

Download "Os tipos básicos de dados"

Transcrição

1 Capítulo 7 Os tipos básicos de dados Neste capítulo vamos discutir os tipos de dados básicos de C. Entre eles existe um de particular importância que deixamos para a última seção, ponteiros, porque ele tem o que ver com todos os demais e também porque ele é de uso intenso nos programas em C. A seção sobre ponteiros foi escrita a parte e imagino que deve ser lida independentemente das demais, inclusive há ponteiros a de outras partes do livro para ela. Um agregado como , para a linguagem C, é semelhante ao agregado hfgfabccb. C manipula tais agregados segundo certas regras incluidas no compilador de uma forma tal que podemos chamar C de linguagem, porque, como as linguagens naturais C obedece a uma sintaxe e tem alguma semântica de muito baixo nível. Na medida em que você declarar corretamente os dados, C irá aplicar a estes dados as regras sintáticas correspondentes e, com igual importância, irá separar espaço de memória do tamanho certo para guardar estes dados. É esta a importância do tipo de dado na declaração de uma variável: determinar o espaço que ela vai ocupar na memória e portanto o segmento de memória que será usado. a Este uso da palavra ponteiro é técnico, mas nada tem a ver com seu significado dentro da linguagem C. Aqui a palavra ponteiro quer dizer link, uma ligação entre duas idéias como num texto em html Os números em C Este livro não pretende discutir questões matemáticas, aqui, os números são tipos de dado de uma determinada linguagem de programação e isto é diferente do conceito de número em Matemática, embora, sob algum aspecto, os inteiros em C tenham aspectos que somente se atinge em cursos mais avançados de Matemática, quando se estuda congruência, em Álgebra. 131

2 132 CAPÍTULO 7. OS TIPOS BÁSICOS DE DADOS Os números inteiros Vamos começar com os números inteiros. A forma de encarar os números, numa linguagem de programação, difere daquela com que um matemático vê este tipo de objeto. Há linguagens de programação em que a visão matemática de número chega a ser aproximada, Python, LISP, calc por exemplo, relativamente a números inteiros. Em Python ou em LISP o limite para se escrever um número inteiro fica por conta da memória da máquina. Em C, os números formam um conjunto finito e usa uma aritmética apropriada para um conjunto finito de números, a da congruência módulo p. Este poderia ser um tópico para um livro inteiro, de modo que vamos ter que cortar os horizontes para escrever dentro do escopo deste livro, mas é preciso que o leitor saiba disto. O local onde você pode se expandir a respeito deste assunto é num livro de Álgebra. Um número inteiro é um objeto que vai ocupar um determinado espaço da memória do computador e ao qual certas regras serão aplicadas. Este é um dos pontos em que a linguagem C difere de máquina para máquina. Em LinuX 1 o maior número inteiro positivo que o gcc reconhece é No BC, se você escrever int na área do editor (dentro de um programa editado), e colocar o cursor sobre esta palavra, apertanto Ctr-l F1 2, você vai receber uma ajuda no contexto, específica, sobre int na qual lhe vai ser dito qual é o maior inteiro que o BC reconhece. Como eu uso somente LinuX, me vejo na impossibilitade de verificar qual é o maior inteiro reconhecido pela linguagem C em outros sistemas. Porém o método indicado acima vai lhe mostrar qual é a capacida numérica do BC e, certamente, o método funciona em outros sistemas. Veja o resultado da operação aritmética para números finitos = Voce pode verificar isto rodando o programa #include <stdio.h> int main() { printf("%d", ); 1 Você pode encontrar esta informação em /usr/lib/gcc-lib/i486- linux/ /include/limits.h 2 se não funcionar, deixe o cursor sobre a palavra e, acionando o help escolha Topic search

3 7.1. OS NÚMEROS EM C 133 } return 0; apesar do aviso que o compilador lhe vai dar de que o programa produz um overflow, (estouro de dados). Você pode ignorar este mensagem, tranquilamente. A mensagem de erro ocorre porque, embora C saiba bastante Álgebra, não se encontra convencido de que Álgebra é verdadeira... a linguagem calcula corretamente o valor mas a operação está ultrapassando o limite de memória reservado para números inteiros, eis a razão do overflow que significa está derramando... Um programa que executa tarefa semelhante é inteiros.c. Leia o programa, rode-o, volte a lê-lo. Por exemplo observe que 2 32 = ; 2 31 = entretanto isto não parece estar ligado ao programa que você acabou de rodar. Vamos pensar de outra forma. Lembrando a Análise combinatória, se você tiver dois caracteres, {0, 1}, para arranjar com repetição em uma matriz com 32 posições, o número de arranjos (com repetição) seria 2 32 = Agora separe um bit para indicar se o número é positivo ou negativo. Falei de bit, entenda que é uma posição na matriz de 32 posições acima. Separar um bit lhe faz perder a possibilidade de usar {0, 1} uma vez, portanto o conjunto dos números inteiros que se podem assim representar é 2 32 /2 = /2 = 2 31 = Ainda tem o zero, e assim a aritmética de inteiros em C vai de , 0, sendo esta a razão do resultado que você obteve com o programa inteiros.c. Quando pedirmos C responderá com e sucessivamente = Como um byte corresponde a oito bits então os inteiros no gcc ocupam 4 bytes de memória:4 x 8 = 32. Uma outra forma de obter a mesma informação junto com outras informações ligadas aos tipos de dados escalares pode ser consultando o manual, ver no índice remissivo Libc. Veja também o último capítulo. Se você quiser saber o espaço ocupado na memória por um inteiro, rode o programa inteiros.c. e para compreender exatamente o que significa o tamanho de um tipo de dado, altere manualmente o número que aparece no programa inteiros.c, por exemplo, retirando alguns algarismos 3, e voltando 3 A versão do programa, no disco, é a mais recente e pode ser diferente da que se encontra no livro.

4 134 CAPÍTULO 7. OS TIPOS BÁSICOS DE DADOS a rodar o programa. Não tire muitos algarismo porque o programa poderá demorar muito rodando...mas, neste caso, tem o Ctrl-C para pará-lo. Exercícios: 33 Experiência com inteiros 1. Faça um programa que adicione dois inteiros fornecidos pelo teclado. Solução: inteiros.c 2. Altere o programa inteiros.c para que um número seja lido pelo teclado e seja testado. Solução: inteiros01.c 3. Se você tiver usado números muito grandes ao rodar inteiros01.c, vai aparecer uma conta meio estranha. Tente encontrar uma explicação. Rode inteiros02.c e não dê muita importância à reclamação do compilador sobre o tamanho das constantes dentro do programa. Neste caso pode ir em frente. 4. Introduza em inteiros.c um teste para verificar se uma soma de dois inteiros positivos ainda é positivo na aritmética finita do gcc. Solução: inteiros03.c 5. Altere o programa inteiros.c para que ele rode a partir de um inteiro grande acrescentando mais uma unidade até chegar ao maior inteiro do seu sistema. Ver sugestões em inteiros01.c 6. Faça um programa que receba dois inteiros e depois lhe pergunte qual a operação aritmética para executar com eles e que ela seja executada. 7. Evolução de um programa (a) Quebre o programa 4 quatro operacoes.c em quatro módulos que devem ser chamados a partir de um menu. (b) Torne o programa quatro operacoes.c numa máquina de calcular permanente na memória. (c) O programa quatro operacoes01.c tem um lay-out de baixa qualidade, reforme-o. (d) O programa quatro operacoes01.c não usa memória para guardar as operações executadas, altere isto. (e) Inclua no programa quatro operacoes02.c uma informação de como parar o programa: Ctrl-c naturalmente...com o cursor na shell em que você tiver rodado o programa. 4 no diretório do DOS, procure qua opr*.c

5 7.1. OS NÚMEROS EM C 135 (f) Ofereça um meio mais evoluido para parar o programa quatro operacoes02.c Solução: quatro operacoes03.c. (g) Infelizmente o usuário pode ser obrigado a digitar números antes que o programe pare... defeito do quatro operacoes03.c. Corrija isto. (h) O programa quatro operacoes04.c tem um péssimo lay-out, corrija isto se ainda não o houver feito. (i) Refaça o programa quatro operacoes04.c usando a função switch(). Solução:quatro operacoes05.c Sugestões: 1. Quando os inteiros crescerem além do limite, tornam-se inteiros negativos, um teste para detectar isto pode ser num < Uma variável do tipo char pode receber os itens de um menu. Verifique que se char é aceito como tido de dados do switch 3. Máquina de calcular: ver o programa quatro operacoes.c. 4. Modularização? analise a suite quatro operacoesxx.c Use grep modulo quatro* para encontrar em que programas aparece a palavra chave modulo (sem acento). 5. Máquina de calcular permanente? Loop infinito... ver quatro operacoes01.c 6. Use grep assunto quatro*.c para encontrar o programa que você deseja, (os nossos programas tem um sistema de palavras-chave para buscas deste tipo): grep assunto *.c more Uma das experiências feitas nos exercícios do bloco anterior foi a do tamanho ocupado por um inteiro. No gcc é 32 bits o espaço necessário. Pode ser até mesmo o inteiro 0, ele ocupa o mesmo espaço do inteiro máximo. Isto significa que gcc planeja 5 um espaço adequado para guardar números inteiros. Se o problema que você for resolver não precisar de números tão grandes, escolha um tipo de dados mais modesto. Caso contrário você vai gastar memória a toa. A biblioteca limits.h, que pode ser encontrada no diretório /usr/lib/gcc-lib/i386-linux/2.9xx/include/ 6, contém as definições dos tamanhos de dados. As letras XX devem ser substituídas para bater com a versão atual do gcc. Você pode obter a versão digitando gcc -v no meu caso o resultado é tarcisio@linux:~/tex/c$ gcc -v Reading specs from /usr/lib/gcc-lib/i386-linux/2.95.2/specs gcc version (Debian GNU/Linux) 5 Na verdade quem planeja é o programador! 6 Este caminho pode variar de máquina para máquina, com algum programa de busca de arquivos, mc, por exemplo, você pode localizar esta biblioteca.

6 136 CAPÍTULO 7. OS TIPOS BÁSICOS DE DADOS XX = 5.2 porque a parte final, , é a data da distribuição. Lá você pode encontrar, por exemplo, no caso do gcc: LONG MIN é o espaço ocupado por um signed long int. é também o menor número inteiro do tipo longo reconhecido pelo gcc. Dito de outra forma, é também o menor número deste tipo que você deve usar para não gastar espaço à toa na memória. Ainda repetindo de outra forma, se você precisar apenas de números menores que 32 bits, então não deve escolher este tipo de dados. é o mesmo tamanho do tipo de dados int. LONG MAX é o valor máximo que pode assumir um inteiro longo. ULONG MAX é o valor máximo que gcc entende para um inteiro sem sinal. Tem a mesma capacidade dos inteiros longos com sinal. LONG LONG MIN é o menor valor que pode ser alcançado por um inteiro longo com sinal. De outra forma, representa o espaço ocupado por este tipo de dados: 64 bits que é menor do que Retomando o que diziamos no início desta seção, os números no computador formam um conjunto finito, como não podia deixar de ser. Em algumas linguagens, LISP, Python, é possível manter esta barreira limitada pela memória do computador e até pensar que não existem barreiras... por um artifício especial que estas linguagens têm para trabalhar com aritmética. Não é o caso do C embora estas linguagens tenham sido construidas em C. É, lembre-se da introdução, há coisas que não podemos fazer com C mas que podemos fazer com linguagens ou pacotes que foram feitos em C... Observação: 27 A conta de dividir A conta de dividir em quatro operacoesxx.c não está errada, apenas não é a divisão habitual. Quando você escrever em C, a/b, estará calculando apenas o quociente da divisão entre os dois inteiros. Assim 3/4 0 porque o quociente na divisão de 3 por 4 é o inteiro 0. Nesta divisão o resto é ignorado. No gcc há funções para recuperar o resto na divisão inteira de modo que se possa escrever os dados do algoritmo da divisão euclidiana d ividendo = d ivisor q uociente + r esto O programa numeros02.c 7 escreve os dados deste algoritmo. Há outras funções que executam tarefas semelhantes, mas com números reais. Leia mais a este respeito na próxima subseção sob o título, funções que analisam números reais. 7 no diretorio do DOS, procurar numer*.c

7 7.1. OS NÚMEROS EM C Os números reais Esta seção se dedica aos números não inteiros. Vou estar me referindo, nesta seção, aos números reais e estarei assim super-adjetivando os números de que tratarei aqui, que nada mais são do que números racionais. Em inglês se usa a expressão float para se referir ao que chamaremos de reais. Em Português existe a expressão número com ponto flutuante que corresponde ao float americano. Vou adotar real por ser mais curto, mas quero dizer mesmo número com ponto flutuante. Como eu já disse antes, em C, os números formam um conjunto finito, e êste é também o caso dos números reais. Existe uma aritmética apropriada para estes números contida num padrão elaborado e divulgado pela IEEE. É bom lembrar que poderiamos escrever 100 páginas sobre este assunto...você tem aqui um resumo. Há muitos anos atrás havia nas tabernas e sobretudo nas lojas de material de construção, umas máquinas mecânicas próprias para o cálculo com números reais 8. As tais máquinas tinham duas teclas com setas para esquerda ou para direita, ao lado do teclado, que permitiam deslizar a escala para direita ou para a esquerda, era o ponto flutuando, e correspondia a multiplicar por 10 ou dividir por 10. Veja na figura as teclas vermelha, à esquerda, com as setas. Apertando as chaves laterais com o polegar e o apontador se limpava a memória... e rodando a manivela, à direita, se fazia a multiplicação (soma repetida) ou divisão (subtração repetida) conforme o sentido da rotação. Uma máquina mecânica de multiplicar. (fig. 7.1). Figura 7.1: Máquina do balcão do comércio, coleção do autor. Quando você escrever ponto flutuante...

8 138 CAPÍTULO 7. OS TIPOS BÁSICOS DE DADOS observe que o ponto não foi um engano, gcc irá entender que não se trata de um inteiro e fará diferença entre entretanto , , , = = Observe que o ponto flutuou, era o que a máquina mecânica, de que falamos acima, fazia. O gcc usa os seguintes valores para definir a fronteira do conjunto finito de números reais: 1. reais com precisão simples (a) FLT MIN E-38F (b) FLT MAX E+38F (c) FLT EPSILON E-07F quer dizer com 9 algarismos significativos. 2. reais com precisão dupla (a) DBL MAX E+308 (b) DBL MIN E-308 (c) DBL EPSILON E-016 portanto com 16 algarismos significativos. para que você possa ter uma idéia do que esta precisão pode significar, analise o seguinte exemplo, sem levá-lo muito a sério... Exemplo: 10 Erro no acesso à estação espacial Por favor, não leve a sério este exemplo. Dê-lhe a importância indicada pelo tamanho da letra. Um problema deste tipo se resolve com instrumentos bem mais avançados. Comentários ao final. Suponha que um programa monitorando o envio de uma nave espacial calcule o ponto de encontro da mesma com à estação espacial internacional que se encontra em órbita terreste num raio de 326 Km (ou m) 9 a partir do centro da Terra. Simplificando o processo de condução da nave, como se nada mais houvesse entre seu lançamento e sua chegada à estação espacial internacional, e seu o ponto de encontro estivesse no centro da estação que deverá medir cerca de 120 metros quando estiver toda montada no ano , vamos calcular o erro relativamente ao ponto de encontro com a precisão que temos no gcc. Nossa simplificação vai ao ponto de supor que tudo se encontra estático e portanto que a nave parte em linha reta de encontro à estação se dirigindo ao ponto central. Quer dizer que estamos calculando a base de um triângulo isósceles cuja altura seria 326Km. A base deste triângulo é região de erro, a nave deveria chegar ao ponto central onde se encontraria o acesso. Com erro de F LT EP SILON = E 07 teriamos erro = FLT E PSILON = m isto é, 3cm de erro. Obviamente nada neste exemplo é real, a não ser aproximadamente as dimensões, 9 os valores não são precisos, o raio terrestre não é examente 6 km, por exemplo 10 grato ao Prof. Emerson do Dep. de Física da UeVA por estas informações, ver

9 7.1. OS NÚMEROS EM C 139 Não se enviam espaçonaves numa rota perpendicular à superficie da terra, apenas o lançamento é feito numa perpendicular para diminuir o gasto de energia com a saída da gravidade; As naves seguem rotas em forma de espiral para permitir a entrada em orbita perto do ponto de interesse e para melhor aproveitar a rotação da terra e a força de gravidade dos planetas, da lua ou do sol, por exemplo; A rota em espiral permite uma aproximação tangencial da órbita da estação espacial; As naves possuem um controle feito por computador que corrige a rota a cada ciclo do computador, quer dizer a cada milhonésimo de segundo; O instrumento matemático usado neste tipo de problemas são as equações diferenciais ordinárias vetoriais e não semelhança de triângulos... O exemplo serve apenas para mostrar que o erro F LT EP SILON = E 07 entre dois números reais consecutivos é suficientemente pequeno para resolver um problema da magnitude deste, envio de uma espaçonave para se acoplar com outra, com uma aproximação aceitável. Muito mais exatos ficam os resultados com a precisão dupla. Entretanto, para salvar o exemplo, as aproximações feitas a cada milhonésimo de segundo, podem usar semelhança de trinângulos e neste caso as alturas dos triângulos serão tão pequenas que a precisão final será de milhonésimos de centímetro (e não os 3cm calculados acima). Finalmente, para resolver problemas críticos, computadores são especialmente planejados com quantidade grande de memória e neste momento, sim, a precisão da linguagem C pode ser alterada, se for necessário. Mas, muito mais provável é que se construa uma linguagem apropriada para o problema, veja o que já dissemos na introdução. Leia também a observação em real01.c. Os programas realxx.c são um complemento do presente texto. Eles vão ser objeto dos exercícios seguintes. Exercícios: 34 Experiências com os reais 1. Leia e rode real.c. Veja os comentários do compilador e procure entender quais são os erros encontrados. Há comentários sobre os erros no programa corrigido real01.c. 2. Altere o programa real01.c para com ele fazer cálculo de áreas de triângulos e quadrados. Corrija os erros em real01.c, leia os comentários do compilador. Solução: real04.c 3. O programa real04.c tem diversos defeitos na saída de dados, rode-o, observe os defeitos e corrija o programa. Solução: real05.c 4. Modularize real04.c de modo que o usuário possa calcular áreas de triângulos, retângulos ou círculos separadamente. Faça observação sobre a área de quadrados semelhante a que se faz sobre círculos. Sugestão: reutilize o programa menu.c. Veja também o programa vazio.c. Solução: real06.c 5. Corrija os diversos defeitos de lay-out das saídas de dados do programa real06.c.

10 140 CAPÍTULO 7. OS TIPOS BÁSICOS DE DADOS 6. Crie uma biblioteca, aritmetica.h, nela coloque as funções de real06.c. Solução: real07.c, aritmetica.h 7. Deixe o programa real07 no tamanho da tela. Solução: real08.c, aritmetica.h 8. O programa real08.c tem ainda alguns defeitos de apresentação, corrijaos e expanda o programa para que ele execute mais operações. Tente manter a função principal toda visível na tela. Saída, crie uma função executa() na biblioteca aritmetica.h chmada de real09.c... e elimine o switch de real08.c, claro, esconda, se você quiser pensar assim, o switch em aritmetica.h 9. Faça um programa, chamado Matematica que execute algumas operações geométricas e aritméticas. Depois, distribua seu programa na rede, ele pode ser um tutorial. Não se pode dizer que fizemos muita matemática nos programas acima, de fato não. Entretanto você pode ver como se podem construir programas mais complicados a partir de programas mais simples. A suite de programas realxx.c foi construida na sequência definida pelos exercícios do bloco anterior. Se você analisar com atenção irá encontrar aqui uma resposta para aquela pergunta que ficou no ar desde o início: Observação: 28 Existe alguma técnica para programar bem? Uma resposta simples para esta pergunta não existe. Conseguir responder a esta pergunta equivaleria a criar uma receita simples para resolver qualquer problema... obviamente isto é um absurdo. Entretanto nós lhe mostramos aqui um método que ajuda a começar: 1. Quebre o problema em pedacinhos e resolva cada um destes pedacinhos; 2. Não aceite que um programa fique maior do que a tela do computador... Um programa que ficar todo na tela é fácil de ser analisado. Os insetos se escondem facilmente em programas que ocupam várias telas ou milhões de linhas. 3. Se você estiver precisando de técnicas para detetização (debug), certamente seus programas são muito grandes. Quebre-os. Refaça tudo a partir do começo. 4. Aprenda a programar de forma simples e refaça os seus programas. Adianta pouco corrigir programas quilométricos Crie funções pequenas que resolvam tarefas interessantes e pequenas. Veja menu.c, vazio.c, aritmetica.h e ambiente.h.

11 7.1. OS NÚMEROS EM C 141 Funções de variável real Vamos terminar esta seção analisando algumas funções da biblioteca 11 glib.você vai encontrar mais informações consultando info do LinuX. Use os comandos Numa área de trabalho, digite info Dentro do info digite m e responda glib ou libc. Vamos nos fixar nas funções que usaremos mais a frente e para isto colocaremos aqui indexação para facilitar sua busca de informações imediata. Mas aprenda a consultar info, vale a pena. As funções que escolhemos para descrever aqui, executam tarefas pouco usuais mas de grande importância na solução de diversos problemas. Elas fazem o truncamento de números ou situam um determinado número entre dois inteiros. Fazem também a conversão de real em inteiro. Elas estão definidas na biblioteca math.h. Apresentamos as funções com sua sintaxe explicitada, por exemplo, a primeira é double ceil(double X) apresentada no formato como apareceria se estivessemos declarando esta função dentro de um programa. É assim que você irá encontrar a informação em libc. A função: double ceil (double X) calcula o inteiro mais próximo que seja maior do que X. Assim ceil(x) será um número do tipo real, mas inteiro, e maior ou igual que X. Quer dizer que ceil(x) X; ceil(x) é um número inteiro do tipo real. Por exemplo ceil(1.5) = 2.0 A palavra ceil vem de ceiling, (teto). Quer dizer que estamos calculando o teto inteiro de 1.5. A função: double floor (double X) calcula o inteiro mais próximo, e abaixo de X: floor(1.5) = 1.0 floor(x) x; floor(x) é um inteiro, do tipo real. 11 Mais abaixo vamos lhe mostrar como você pode pesquisar as bibliotecas disponibilizadas pelo BC.

12 142 CAPÍTULO 7. OS TIPOS BÁSICOS DE DADOS A palavra floor é a palavra inglesa para (piso). 1.0 é o número inteiro (real) que está logo abaixo de 1.5. Escrevemos: número inteiro (real) porque o resultado de floor() é um número real. Isto é importante, ao calcular como o resultado é um real: floor(3.5)/ (7.1) se o resultado fosse inteiro: floor(3.5)/4 0 (7.2) São detalhes que esquecemos quando temos que fazer contas...e que se perdem em programas com centenas de linhas. A função: double rint (double X) arredonda X para um inteiro guardando o tipo double, de acordo com o método de arredondamento definido para C. Veja em glib com info. Floating Point Parameters os vários tipos de arredondamento existentes. O método default 12, entretanto, é para o mais próximo inteiro. Assim, se no C que você estiver usando, estiver preservada a especificação de fábrica, rint(x) será o inteiro mais próximo de X. Será a alternativa otimizada de escolha entre ceil(x), floor(x). A função: double modf (double VALOR, double *PARTE-INTEIRA) Esta função quebra o argumento VALOR em duas partes, A, B tal que: A [ 1, 1]; B é inteiro mais próximo de zero; A, B tem o mesmo sinal de VALOR. Guarda o inteiro B em *PARTE-INTEIRA. Devolve A na linha de comando 13. Por exemplo, modf (-2.8, &parte inteira) devolve -0.8 e guarda -2.0 em parte inteira, dois números negativos porque V ALOR = 2.8 < 0. É preciso terminar dizendo, estamos longe de ter esgotado as funções definidas em math.c. Consulte libc com auxílio de info para se dar contas disto. Dentro de info use o comando m e digite glib ou libc Bibliotecas do BC É através do help que você vai descobrir e analisar as biliotecas disponíveis com o BC. Abra um programa qualquer e coloque o cursor sobre floor e clique no botão help. Ao cair o menu, escolha Topic search e você vai cair num help sobre a função floor(). 12 a palavra default significa padrão 13 Como C não é uma linguagem interpretada, não tem sentido falar em valores na linha de comando... e sim, simplesmente, devolve A.

13 7.1. OS NÚMEROS EM C 143 Observe no canto direito superior MATH.H, possivelmente em amarelo. É um indicativo de que esta função está na biblioteca math.h. Se você clicar em MATH.H o help vai levá-lo para ver as funções desta biblioteca. Tudo que dissemos acima sobre glib vale aqui para help do BC Siga tela abaixo e você vai encontrar um programa-exemplo ilustrando como funciona esta função. Em math.h você vai encontrar as outras funções cuja referência fizemos acima. Aproveite para passar os olhos sobre os nomes das funções e você vai encontrar ceil() entre muitas outras. Desça até o final da página e você irá encontrar List of all header files. Header file é o que chamo biblioteca. O texto está enfatizado, coloque o cursor sobre ele e dê enter. Você vai encontrar a mesma listagem que existe sob Linux. Escolha alguma dessas bibliotecas para fazer uma analise rápida, e pronto, você já sabe onde pode encontrar as informações. Saia e volte quando precisar. Cast - transformando tipos de dados Há uma operação em C chamada cast que serve para transformação entre dois tipos de dados (de um maior para um menor ). Por exemplo, você pode transformar um número do tipo real em outro do tipo inteiro jogando o real dentro do inteiro e naturalmente perdendo alguma informação: a parte fracionária. Mas também você pode jogar inteiros nos reais, com rint(), ver cast.c). Exercícios: 35 float, ceil(), floor() 1. Rode e leia o programa floor.c. 2. Altere floor.c para calcular rint(). Veja o seguinte exemplo que é bem comum. Exemplo: 11 Transformando dados Considere um programa que calcule percentuais de dados inteiros, é o caso de uma pesquisa de opnião. Os dados que vão ser usados são Total de pessoal entrevistadas, um inteiro; número de pessoas que adota uma certa opinião, outro inteiro entretanto vamos querer calcular opinião total e a conta vai ficar errada, porque, você já viu, no início deste capítulo, que 3/4 = 0

14 144 CAPÍTULO 7. OS TIPOS BÁSICOS DE DADOS em C. A saída é escrever ((float)3)/4 = 0.75 A expressão, ((tipo) var) se chama em, C, cast, em português, transformaç~ao do tipo de dados. Observe que basta fazer ((float)3) porque se um dos fatores for tipo float o resultado será deste tipo. Utilidade desta operação? Inteiros ocupam menos espaço de memória que os reais! Como o programa vai receber dados inteiros, é melhor definir as variáveis que vão receber estes dados como inteiras ganhando espaço na memória e tempo de processamento! No cálculo final se faz a transformaç~ao do tipo de dados, para conseguir o resultado corrreto. Observe que se var for do tipo float então ((int)var) f loor(var) Rode o programa cast.c para ver as limitações da transformação de dados e a perda de informações que ela pode acarretar. O seu uso fica restrito a número pequenos. O programa cast.c vai lhe mostrar que a equivalência acima se torna discutível quando os números forem grandes. 7.2 Caracteres e vetores de caracteres. Os caracteres A palavra chave da linguagem C, para caracteres é char. Veja o programa 14 quatro operacoes02.c onde a variável operador está definida como char operador; e deve receber um dos seguintes valores +,, /, Veja que o método, internamente (dentro do programa), consiste em escrever e não como escrevemos acima, nem 14 no diretório do DOS, procure qua opr*.c +,, /, +,, /,.

15 7.2. CARACTERES E VETORES DE CARACTERES. 145 Há uma diferença substâncial entre +, +, + a é um símbolo que pode (ou não) ter um valor associado. Então + é um símbolo associado ao qual se encontra o algoritmo da adição; a é um caractere, é um dos 256 caracteres reconhecidos no teclado. a é um vetor de caracteres, neste caso um vetor de tamanho 1. Exercícios: 36 Diferença - caracteres-strings 1. Altere o programa quatro operacoes02.c usando x em vez de x em cada ocorrência dos elementos de e analise o resultado. { +,, /, } 2. Altere o programa 15 quatro operacoes02.c usando x em vez de x em cada ocorrência dos elementos de e analise o resultado. { +,, /, } O resultado da experiência no primeiro exercício foi a seguinte: warning: comparison between pointer and integer e a justificativa é: x é um vetor (ponteiro...), é a diferença anunciada acima: x é um vetor de caracteres x é um caractere e os vetores são naturalmente ponteiros em C. A variável operador foi definida para receber um caractere; Caracteres, junto com os números são os dados básicos, (leia: os valores básicos) da linguagem C Vetor é uma variável indexada e isto se faz com (ponteiro) em C. Vamos aprofundar mais esta questão na seção sobre ponteiro, que é a próxima, e você, sem nenhum preconceito, pode lê-la agora e depois retornar a esta. Mas faça uma leitura rápida porque a presente discussão é fundamental. 15 no diretório do DOS, procure qua opr*.c

16 146 CAPÍTULO 7. OS TIPOS BÁSICOS DE DADOS Observação: 29 Valores básicos Vamos rapidamente insistir na expressão valores básicos da linguagem. Digamos que C foi projetada para lidar com números e caracteres. Seria pouco dizer isto, ela foi projetada para trabalhar com os símbolos que você pode encontrar no teclado de sua máquina, como por exemplo *, 2,ˆ. Seu objetivo seria criar outras linguagens, (originalmente um sistema operacional) que soubesse lidar com estes objetos, os caracteres, de modo a criar expressões que tivessem signficado tanto para a máquina como para o ser humano que a fosse manipular. Uma linguagem de baixo nível, se dizia, (tem gente que ainda diz...) Hoje a linguagem C se projetou além deste objetivo estrito e podemos com ela fazer outros tipos de trabalho, (de alto nível...). A solução mais prática, para manter a linguagem com sua especificação inicial foi a de criar os vetores para entender aglomerados de caracteres como este: A = aglomerados de caracteres. então A é um vetor, quer dizer uma variável formada de uma sucessão de caracteres, numerados sequencialmente. Voltaremos logo abaixo a esta questão. O segundo exercício no bloco acima produziu outra reclamação por parte do gcc. Agora o compilador se perdeu totalmente... a lista de reclamações passou de uma página porque o erro (operador == ) confundiu o resto da análise. agora é o nome de uma função que tem uma sintaxe particular: a b, deve estar entre dois caracteres que gcc possa identificar como números. A sintaxe é algo extremamente importante para as linguagens de programação. A precisão tem que ser total. Cada símbolo tem que estar colocado exatamente nas condições especificadas. * é diferente de, também 1 1 ; 2 2. Temos assim dois grandes tipos de dados em C com os quais podemos construir todos os outros: caracteres: 1, 2,..., a, b,...; números que são formados a partir dos caracteres especiais 1,2,..,9,0 Vamos passar a discutir logo os vetores de caracteres e ao final faremos comparações e exercícios que terminarão por completar as ideias. Caracteres especiais Há vários caracteres especiais, a lista de exercícios seguinte é um tutorial sobre caracteres. Exercícios: Leia, rode e leia o programa ascii.c e, claro, você nada viu. Leia os comentários no programa. 2. Leia, rode e leia agora o programa ascii 1.c. Este programa imprime um trecho da tabela ASCII, a partir de um ponto inicial que lhe vai ser solicitado. 3. Em ascii 1.c responda inicialmente com o número 1 quando isto lhe for pedido, e veja que nada será impresso. Veja a partir de quando alguma coisa útil é impressa respondendo ao programa outros pontos iniciais.

17 7.2. CARACTERES E VETORES DE CARACTERES O programa ascii 2.c é uma pequena variante de ascii 1.c. Veja qual a diferença. 5. Leia, rode e leia ascii 3.c. Este programa usa uma variável, pausa para dar saltos de páginas formadas de 60 elementos da tabela ASCII. Mas verifique que a impressão fica mal feita em alguns casos, descubra por que. 6. Altere ascii 3.c para que cada página contenha 80 elementos da tabela. Solução: ascii 4.c 7. Veja em qualquer dos programas asciix.c como imprimir caracteres, usando o formatador %c Faça um programa para imprimir printf( %c,7); o ascii 7 que aciona a campinha. Solução: apeteco2() em ambiente.h ASCII é uma sigla que significa American Standard for Communication and Information Interchange e foi criado, como o nome o indica, para criar um padrão para comunicações, possivelmente caminhando para se tornar obsoleto, ou de uso restrito ao núcleo interno do processamento de dados (como a definição dos códigos de teclados). Os primeiros códigos ASCII são especiais servem para passar página, linhas, controlam a campainha do sistema, etc... não sendo porisso visíveis (possíveis de serem impressos). Vetores de caracteres A palavra string significa um objeto do tipo asdfafeqerr rere qerqe weqrqrerer um conjunto de caracteres, o que pode incluir espaço em branco, enfeixados por aspas duplas. Em C este objeto é um vetor de caracteres, quer dizer, uma matriz com uma linha e várias colunas. O primeiro elemento da matriz, a é indexado por zero e assim sucessivamente os demais, por 1,2,etc... Se dermos um nome ao vetor frase = asdfafeqerr rere qerqe weqrqrerer (e observe que a sintaxe acima não será aceita por C a não ser na inicialização e definição da variável) então frase[0] = a, frase[1] = s,... A forma de fazer atribuição a um vetor de caracteres, fora da área de inicialização, é usando a função strcpy(). A igualdade acima seria: strcpy(frase, asdfafeqerr rere qerqe weqrqrerer ) depois do que, em algum ponto do ponto posterior do programa, frase[2] faz referência ao caracter d.

18 148 CAPÍTULO 7. OS TIPOS BÁSICOS DE DADOS Um caracter especial, o nulo, (NULL), \0, fecha um vetor de caracteres. Assim, no exemplo acima, temos: frase[31]= e, frase[32]= r, frase[33]= \0 entretanto, na declaração de variáveis se pode ter: char frase[80] gerando as seguintes respostas: sizeof(frase) -> 80; strlen(frase) -> 32 Veja mais a respeito de vetores de caracteres e as funções que os manipulam em info, use o comando m dando-lhe como resposta libc. Você vai encontrar, no índice Character Handling, a lista das funções para manipular strings. Exercícios: 38 Caracteres e vetores de caracteres 1. Rode (não leia...) o programa carac01.c. Ele explica caract1.c. Acompanhe com caract1.c aberto em uma janela. 2. Leia e rode o programa caract1.c. Altere caract1.c para fazer uma busca de um caractere qualquer fornecido pelo teclado. 3. Rode o programa caract7.c para ver o tamanho do espaço ocupado, na memória, por um caractere. Leia o programa também. 4. Leia e rode o programa caract11.c, verifique que o programa não se explica. Mofique-o para que o programa diga ao usuário o que vai ser feito. 5. Leia e rode o programa caract12.c, novamente este programa é executado sem grandes explicações. Inclua as mensagens necessárias. 6. Em caract12.c Troque o valor de busca para verificar segunda possibilidade do programa. 7. O programa caract13.c tem um erro, mesmo assim merece ser estudado. Leia o programa e descubra o erro. Solução caract14.c 7.3 Ponteiros. Ponteiro é um super tipo de variável em C no sentido de que é um tipo de variável de qualquer outro tipo... tem ponteiro do tipo inteiro, tem ponteiro do tipo real (float) etc... Mas claro, esta não é a melhor forma de iniciar a discutir este assunto. As variáveis do tipo ponteiro guardam endereços na memória que serão associados às outra variáveis. Os exemplos a seguir vão deixar bem claro o que é isto. O importante nesta introdução, é desmistificar (e ao mesmo tempo mostrar a importância), deste tipo de dados. É dizer que ponteiro aponta para um endereço inicial de memória para guardar um tipo de dado: inteiro, float, etc...

19 7.3. PONTEIROS. 149 Você pode criar uma variável to tipo ponteiro com a seguinte declaração: tipo outro\_nome {\tt nome} *{\tt nome}ptr; // uma variavel do tipo ponteiro. Com esta declaração, você nomeprt Criou uma variável do tipo ponteiro para guardar o endereço de um determinado tipo de variável, por exemplo int. O nome da variável é arbitrário, os programadores tem o hábito de acrecentar ptr ao final do nome para facilitar a identificação, no programa, das variáveis do tipo ponteiro. criou uma variável outro nome do mesmo tipo que a variável do tipo ponteiro. Não é necessário fazer isto, mas com frequência é conveniente, inclusve assim (insistindo): tipo outro nome, nomeptr; separou na memória espaço suficiente e necessário para associar com a variável nome. Por exemplo, se nome for do tipo int haverá 4 bytes separados a partir de um ponto inicial de memória; em algum momento, no código do programa, você deverá incluir o seguinte comando: nomeptr = &nome; que fará a associação entre nome e os endereços reservados por nomeptr. Exemplo: 12 Um tutorial sobre ponteiros Os programas pont.c, pont1.c,...pont16.c representam alguns tutoriais sobre ponteiros. Vamos apresentar alguns deles agora. 1. Primeira etapa. Leia e rode os programas pont.c, pont1.c, pont2.c nesta ordem. Se possível abra duas áreas de trabalho (shells). Numa rode o programa pontxx.c e na outra edite o programa para que você possa acompanhar o que ele está fazendo. 2. Segunda etapa. Vamos comentar o que você viu. Se alguma coisa do presente comentário lhe parecer confuso, repita a primeira etapa e retorne ao ponto em que a explicação lhe pareceu obscura. A discussão está baseada em cada um dos programas.

20 150 CAPÍTULO 7. OS TIPOS BÁSICOS DE DADOS pont.c Criamos duas variáveis de tipoint. Uma delas é um ponteiro para um inteiro, numptr. Veja a forma como se declaram ponteiros: int *numptr; Inicialmente a variável num nada tinha o que ver com numptr. Ao executar num = *numptr foi estabelecida uma ligação. Experimente alterar a ordem dos dois comandos: num=*numptr; num=6; e você vai ver que o resultado é o mesmo. Mas o comando num=*numptr; é o que estabelece a ligação entre as duas variáveis. A partir de sua execução, alterações na variável num serão registrada por *numptr. A variável numptr guarda um endereço de memória que pode ser associado a um inteiro, isto quer dizer, ela guarda o primeiro endereço de um segmento de memória que pode guardar uma variável do tipo inteiro: 4 bytes de memória. pont1.c O programa começa lhe pedindo um valor, mas não se deixe envolver... Observe que o programa cometeu um erro: não indicou que tipo de dado espera, deveria ter dito: me forneça um valor inteiro para a variável. Veja outra forma de associar variável e variável do tipo ponteiro (ou variável com endereço). O efeito é o mesmo que o obtido com a método de pont.c, é apenas outro método. Neste ponto você pode ver o uso dos operadores *, & para acessar * valor associado ao ponteiro; & endereço do ponteiro. pont2.c Como toda outra variável, podemos declarar um ponteiro inicializado. Isto foi feito neste programa. Você pode ver a sequência de números indicando o índice de cada um dos valores, caracteres, dentro do vetor de caracteres apontado pelo ponteiro. Novamente vemos aqui o uso dos operadores *, & para acessar valor ou endereço. O programa lhe mostra o tamanho do vetor, e você pode ver uma caracteristica da linguagem C que toma como índice inicial o 0.

21 7.3. PONTEIROS. 151 Depois o programa percorre um laço usando os índices do vetor de caracteres e imprimindo o valor de cada novo endereço e mostrando o endereço invariável, sempre mostrado, o endereço inicial do segmento de memória em que se encontra guardada o valor isto é um teste. O último valor de vetor é o NUL. Exercícios: 39 Laboratório com ponteiros Vamos trabalhar com os programas pontxx.c 1. Experimente imprimir com printf(), o nome de alguma função e analise o resultado. Por exemplo, altere a função main(), dentro do programa menu.c para que ela contenha apenas o comando: printf(executa); Se der erro complete os parâmetros de printf() com a formatação adequada! 2. Altere o programa pont1.c incluindo novas variáveis (com os respectivos ponteiros) para que você entenda como está utilizando ponteiros. 3. Melhore pont1.c incluindo mensagem indicativa de que tipo de dado o programa espera. Não se esqueça de alterar o nome do programa, os programas errados têm uma função específica de laboratório e não devem ser alterados. 4. Altere pont1.c solicitando outros tipos de dados, como caracteres, número real, etc... Não se esqueça de alterar o nome do programa. 5. Leia, rode e leia o programa pont2.c. Acrescente novas variáveis, rode novamente o programa até que fique claro o uso dos operadores &, *. Observação: 30 Identificadores de funções Os identificadores das funções são variáveis do tipo ponteiro. Observação: 31 Virtude e castigo. Se pode dizer que o uso de ponteiros é tanto uma das dificuldades básicas da linguagem C, por um lado, e por outro lado, a sua principal virtude. Com a capacidade de acessar e manipular os dados diretamente na memória, a linguagem ganha uma rapidez típica da linguagem assembler que faz exclusivamente isto. Linguagens mais evoluidas dentro da escala da abstração não permitem que o programador acesse diretamente a memória, elas fazem isto por eles. Com isto se ganha em segurança que falta ao C, (a segurança nos programas em C tem que ser conquistada centímetro a centímetro...). Melhor seria dizer, em vez de segurança, abstração, porque é possível programar em C com grande segurança deixando de usar ponteiros e perdendo assim uma das características da linguagem; aprendendo a dominar os ponteiros e fazendo registro (comentários) do seu uso quando eles se tornarem decisivos. 16 compre outro livro...

22 152 CAPÍTULO 7. OS TIPOS BÁSICOS DE DADOS Como já dissemos anteriormente, se você declarar uma variável como inteiro, e nela guardar um número em formato de ponto flutuante, o risco mais elementar que o seu programa pode correr é que o espaço de nomes reservado ao C pelo sistema operacional fique inútil por superposição de dados, e consequentemente o seu programa deixe de rodar. Um risco maior é que o setor de memória reservado ao C seja estourado e outros programas do sistema venham a ser corrompidos e consequentemente o computador fique pendurado. Portanto, todo cuidado é pouco no uso de ponteiros, e por outro lado, se perde uma grande possibilidade da linguagem se eliminarmos o uso dos ponteiros, ao programar em C. Mas você pode, literalmente, programar em C sem usar ponteiros. Tem autores que sugerem fortemente esta atitude. Eu evito o uso de ponteiros, mas em geral não preciso deles para o meu trabalho. Observe que numa mesma declaração é possível, com o uso da vírgula, declarar variáveis do tipo ponteiro e do tipo comum: int *n,m ; n é do tipo ponteiro apontando para um número inteiro, e m é do tipo inteiro, guardando o valor de um número inteiro. Mas se trata de um mau hábito, porque as duas declarações, a que está acima, e a que vem logo abaixo int *nptr; int m; ocupam o mesmo espaço quando o programa for compilado e diferem de uma pequena quantidade bytes 17 quando guardadas em disco, entretanto a segunda é mais legível que a primeira e deve ser esta a forma de escrever-se um programa, da forma mais legível, para que os humanos consigam lê-los com mais facilidade, uma vez que, para as máquinas, as duas formas são idênticas. Nós escrevemos programas para que outras pessoas, que trabalham conosco, na mesma equipe, possam ler com mais facilida e assim o trabalho em equipe possa fluir. As seguintes declarações podem ser encontradas nos programas: /* duas variaveis do tipo ponteiro para guardar enderecos de memoria onde esta\~ao guardados numeros inteiros. */ int *n,*m; /* variaveis de tipo inteiro. */ int l,p; char palavra; /* variavel de tipo ponteiro apontando para local de memoria onde se encontra guardada uma variavel de tipo char */ char *frase; /* variavel de tipo ponteiro apontando para local de memoria onde se encontra guardada uma variavel de tipo ponto flutuante. */ float *vetor; significando respectivamente que se criaram variáveis de tipos diversos algumas do tipo ponteiro, como está indicado nas observações. 17 um byte é formado de 8 bits, e um bit é um zero ou um 1

23 7.3. PONTEIROS Operações com ponteiros. Crucial é o processo operatório com ponteiros. Vamos discutir isto em dois momentos: acesso às variáveis do tipo ponteiro operações aritméticas com ponteiros Acesso aos ponteiros. As operações de acesso aos ponteiros são: atribuir um valor ao endereço apontado. Isto pode ser feito de duas formas: 1. Veja pont1.c numptr = &num; se houver algum valor atribuido a num, o que sempre há, então fica indiretamente atribuido um valor ao endereço &numptr 2. Veja pont.c num = *numptr Em ambos os caso, mais do que atribuir um valor a um endereço o que está sendo feito é associar um endereço a uma variável. De agora em diante mudanças de valores em num são automaticamente associadas com o endereço &numptr. explicitar o endereço. É feito com o operador &. ir buscar um valor associado ao endereço apontado. É feito com o operador * Operações aritméticas com ponteiros. Por razões obvias, só há duas operações que se podem fazer com ponteiros: somar ou subtrair um número inteiro. Ponteiro é endereço, e da mesma forma como não teria sentido somar endereços de casas, não tem sentido somar ponteiros, mas tem sentido somar um número inteiro 18 a um ponteiro, ou subtrair. Como um endereço é um número inteiro, C permite somar dois ponteiros. Quando isto é feito, na verdade está sendo somado o espaço ocupado por uma variável a um deteminado endereço. Também a única operação lógica natural com ponteiros é a comparação para determinar a igualdade ou uma desigualdade entre os valores para os quais eles apontam. 18 como teria sentido somar ao endereço de uma casa 10 ou 20 metros para indicar onde começa a próxima casa, o mesmo se passa com os ponteiros e o tamanho do tipo de dado...

24 154 CAPÍTULO 7. OS TIPOS BÁSICOS DE DADOS Exercícios: 40 Ponteiros 1. Rode e leia pont3.c, e faça o que o programa pede, e volte a rodar o programa. 2. O programa pont4.c não pode ser compilado. Veja qual o erro e o corrija. Depois de corrigido, rode o programa. Não altere o programa, mude-lhe o nome. 3. Altere o valor da variável em pont4.c e volte a rodar o programa. Altere o valor da variável colocando nela uma frase que tenha sentido, volte a rodar o programa. 4. Acrescente a mudança de linha no comando de impressão de pont4.c, dentro do loop, e volte a rodar o programa. 5. Verifique porque pont5.c não roda, corrija-o e depois rode o programa. A solução se encontra no comentario do programa. 6. Traduza para o inglês todos os programas da suite pontxx.c. 7.4 Manipulando arquivos em disco Arquivos são um objeto ao qual estão associados cinco métodos mais importantes: fopen() abrir fclose() fechar fclose( arquivo, r ) abrir para ler (read r ) fclose( arquivo, w ) abrir para escrever (write w ) fclose( arquivo, a ) abrir para acréscimos (append a ) fprintf() é a irmão de printf() para enviar dados para arquivo em disco. fgets() faz leitura vinda de um arquivo. Observe a mudança na sintaxe. A função fopen() tem um papel especial aqui, veja os detalhes técnicos nos programas leitura com fgets() prog20 X.c escrita com fprintf() em agend4.c Há duas formas de usar fopen(). Uma simples: fopen(nome do arquivo, w r a ) você deve escolher um dos métodos w,r,a e uma outra forma mais algébrica em que nome do arquivo é uma variável e contém o nome do arquivo. Se habitue de escrever sempre a companheira de de fopen(), a função fclose(nome do arquivo) na linha de baixo, assim que usar fopen(), para evitar de esquecer.

25 7.5. MATRIZ, (ARRAY) 155 Não fechar um arquivo pode deixá-lo corrompido. A sequência de programas prog20 X.c mostra a evolução de tentativas para ler dados gravados num arquivo em disco, você deve rodá-los e ler os comentários que explicam porque os programas falharam. Sempre, o programa de maior índice é o programa mais correto da suite considerada. Exercícios: 41 Uso de arquivos em disco 1. O programa prog20.c está errado, ignore isto inicialmente. Leia, rode e leia o programa para entender como ele funciona. Leia os comentários e se precisar, faça pequenas modificações com o objetivo de entender o programa e fazê-lo funcionar (não se esqueça de trocar-lhe o nome). 2. prog20.c não diz quantas ocorrências foram encontradas da palavra escolhida. Altere isto para ficar sabendo quantas vezes aparece a palavra escolhida, é apenas um erro de portugues...e claro, o resultado errado está também neste ponto! Solução prog20 7.c 3. O programa prog20.c está fazendo uma estatística errada. Tente descobrir o erro. 7.5 Matriz, (array) Tabela de dados. Há dois tipos de dados em C para tabular dados: 1. As matrizes, (arrays); 2. As estruturas (structs). Neste parágrafo vamos estudar as matrizes, e no seguinte as estruturas. As matrizes são uma das invenções mais antigas da matemática moderna 19. Veja um exemplo: A = (7.3) A matriz A tem 12 elementos distribuidos em tres linhas e quatro colunas. Cada linha tem quatro colunas, ou vice-versa cada coluna tem tres linhas. Esta indecisão sob a forma de ver a distribuição dos elementos de A forçou uma convenção chamada lico (linha-coluna). Por esta convenção vamos ver uma matriz como formada por linhas e as linhas formadas por colunas. Desta forma o endereçamento dos elementos na matriz fica definido: 19 Se você de fato exigir uma definição de matemática moderna, que tal dizer que é aquela que estamos usando e construindo hoje...

Conceitos básicos da linguagem C

Conceitos básicos da linguagem C Conceitos básicos da linguagem C 2 Em 1969 Ken Thompson cria o Unix. O C nasceu logo depois, na década de 70. Dennis Ritchie, implementou-o pela primeira vez usando o sistema operacional UNIX criado por

Leia mais

Algoritmos e Estruturas de Dados I 01/2013. Estruturas Condicionais e de Repetição (parte 2) Pedro O.S. Vaz de Melo

Algoritmos e Estruturas de Dados I 01/2013. Estruturas Condicionais e de Repetição (parte 2) Pedro O.S. Vaz de Melo Algoritmos e Estruturas de Dados I 01/2013 Estruturas Condicionais e de Repetição (parte 2) Pedro O.S. Vaz de Melo Problema 1 Suponha que soma (+) e subtração (-) são as únicas operações disponíveis em

Leia mais

Exercícios Teóricos Resolvidos

Exercícios Teóricos Resolvidos Universidade Federal de Minas Gerais Instituto de Ciências Exatas Departamento de Matemática Exercícios Teóricos Resolvidos O propósito deste texto é tentar mostrar aos alunos várias maneiras de raciocinar

Leia mais

Capítulo 2. VARIÁVEIS DO TIPO INTEIRO

Capítulo 2. VARIÁVEIS DO TIPO INTEIRO Capítulo 2. VARIÁVEIS DO TIPO INTEIRO OBJETIVOS DO CAPÍTULO Conceitos de: variáveis do tipo inteiro, atribuição, avisos e erros de compilação, erros de execução, comentários dentro do programa-fonte Operadores

Leia mais

1) Ao ser executado o código abaixo, em PHP, qual será o resultado impresso em tela?

1) Ao ser executado o código abaixo, em PHP, qual será o resultado impresso em tela? Exercícios sobre Linguagem PHP: 1) Ao ser executado o código abaixo, em PHP, qual será o resultado impresso em tela? 2) Considere a linguagem de programação PHP e seus operadores. A execução da sentença:

Leia mais

Algoritmos e Programação Estruturada

Algoritmos e Programação Estruturada Algoritmos e Programação Estruturada Virgínia M. Cardoso Linguagem C Criada por Dennis M. Ritchie e Ken Thompson no Laboratório Bell em 1972. A Linguagem C foi baseada na Linguagem B criada por Thompson.

Leia mais

Capítulo SETE Números em Ponto Fixo e Ponto Flutuante

Capítulo SETE Números em Ponto Fixo e Ponto Flutuante Capítulo SETE Números em Ponto Fixo e Ponto Flutuante 7.1 Números em ponto fixo Observação inicial: os termos ponto fixo e ponto flutuante são traduções diretas dos termos ingleses fixed point e floating

Leia mais

TÉCNICAS DE PROGRAMAÇÃO

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

Leia mais

Usando o do-file editor Automatizando o Stata

Usando o do-file editor Automatizando o Stata Usando o do-file editor Automatizando o Stata 1 O QUE É O EDITOR DE DO-FILE O Stata vem com um editor de texto integrado, o do-file editor (editor de do-files, em português), que pode ser usado para executar

Leia mais

1 Funções básicas de implementação de arquivos

1 Funções básicas de implementação de arquivos 1 Funções básicas de implementação de arquivos 1.1 Definindo registros Depois de um objeto do mundo real ter sido modelado, ou seja, após seus atributos importantes (e relevantes) terem sido identificados,

Leia mais

5 - Vetores e Matrizes Linguagem C CAPÍTULO 5 VETORES E MATRIZES

5 - Vetores e Matrizes Linguagem C CAPÍTULO 5 VETORES E MATRIZES CAPÍTULO 5 5 VETORES E MATRIZES 5.1 Vetores Um vetor armazena uma determinada quantidade de dados de mesmo tipo. Vamos supor o problema de encontrar a média de idade de 4 pessoas. O programa poderia ser:

Leia mais

5 Apresentando a linguagem C

5 Apresentando a linguagem C 5 Apresentando a linguagem C O criador da linguagem de programação C foi Dennis Ritchie que, na década de 70, programou-a por meio de um computador DEC PDP-11 rodando sistema operacional Unix. Entretanto,

Leia mais

Notas de Cálculo Numérico

Notas de Cálculo Numérico Notas de Cálculo Numérico Túlio Carvalho 6 de novembro de 2002 2 Cálculo Numérico Capítulo 1 Elementos sobre erros numéricos Neste primeiro capítulo, vamos falar de uma limitação importante do cálculo

Leia mais

VIII. VARIÁVEIS. Tabela I ARQUITETURA DA MEMÓRIA. 0x0000 0x34 0x0001 0xB0 0x0002 0x23. 0xFFFF 0x00

VIII. VARIÁVEIS. Tabela I ARQUITETURA DA MEMÓRIA. 0x0000 0x34 0x0001 0xB0 0x0002 0x23. 0xFFFF 0x00 Fundamentos da Programação 32 A. Conceito Variáveis contém dados: VIII. VARIÁVEIS de entrada que o computador precisa manipular; de saída que o computador precisa imprimir; e temporários, utilizados de

Leia mais

3. INTRODUÇÃO À LINGUAGEM C 3.1. CONCEITOS BÁSICOS. Lógica de Programação

3. INTRODUÇÃO À LINGUAGEM C 3.1. CONCEITOS BÁSICOS. Lógica de Programação Lógica de Programação 3. INTRODUÇÃO À LINGUAGEM C Caro Aluno Vamos iniciar o terceiro capítulo da nossa disciplina. Agora vamos começar a aplicar os conceitos vistos nos capítulos anteriores em uma linguagem

Leia mais

PROGRAMAÇÃO ESTRUTURADA. CC 2º Período

PROGRAMAÇÃO ESTRUTURADA. CC 2º Período PROGRAMAÇÃO ESTRUTURADA CC 2º Período PROGRAMAÇÃO ESTRUTURADA Aula 06: Ponteiros Declarando e utilizando ponteiros Ponteiros e vetores Inicializando ponteiros Ponteiros para Ponteiros Cuidados a serem

Leia mais

IMPRESSÃO DE DADOS VARIÁVEIS usando Adobe InDesign e OpenOffice.org

IMPRESSÃO DE DADOS VARIÁVEIS usando Adobe InDesign e OpenOffice.org IMPRESSÃO DE DADOS VARIÁVEIS usando Adobe InDesign e OpenOffice.org Neste documento, será mostrado como usar o Adobe InDesign para imprimir dados variáveis gerados/modificados numa planilha da suíte de

Leia mais

Unidade 5: Sistemas de Representação

Unidade 5: Sistemas de Representação Arquitetura e Organização de Computadores Atualização: 9/8/ Unidade 5: Sistemas de Representação Números de Ponto Flutuante IEEE 754/8 e Caracteres ASCII Prof. Daniel Caetano Objetivo: Compreender a representação

Leia mais

Como enviar e receber correio eletrónico utilizando o Gmail

Como enviar e receber correio eletrónico utilizando o Gmail Como enviar e receber correio eletrónico utilizando o Gmail Este módulo pressupõe que que já tenha criado uma conta de correio eletrónico no Gmail (caso já não se recorde como deve fazer, consulte o nosso

Leia mais

SISTEMA MEDLINK E-TISS PASSO-A-PASSO (USE JUNTO COM A VÍDEO AULA)

SISTEMA MEDLINK E-TISS PASSO-A-PASSO (USE JUNTO COM A VÍDEO AULA) 1 / 16 SISTEMA MEDLINK E-TISS PASSO-A-PASSO (USE JUNTO COM A VÍDEO AULA) Este guia passo-a-passo tem o objetivo de facilitar o entendimento: - da ordem de execução dos processos. - dos conceitos do sistema.

Leia mais

Desmistificando o Programa de Computador

Desmistificando o Programa de Computador Desmistificando o Programa de Computador Hoje vou explicar, da maneira mais simples possível, como funciona um programa de computador. Na sua essência um programa de computador nada mais é que uma coletânea

Leia mais

O Windows também é um programa de computador, mas ele faz parte de um grupo de programas especiais: os Sistemas Operacionais.

O Windows também é um programa de computador, mas ele faz parte de um grupo de programas especiais: os Sistemas Operacionais. MICROSOFT WINDOWS O Windows também é um programa de computador, mas ele faz parte de um grupo de programas especiais: os Sistemas Operacionais. Apresentaremos a seguir o Windows 7 (uma das versões do Windows)

Leia mais

Aula 4 Estatística Conceitos básicos

Aula 4 Estatística Conceitos básicos Aula 4 Estatística Conceitos básicos Plano de Aula Amostra e universo Média Variância / desvio-padrão / erro-padrão Intervalo de confiança Teste de hipótese Amostra e Universo A estatística nos ajuda a

Leia mais

REPRESENTAÇÃO DE DADOS EM SISTEMAS DE COMPUTAÇÃO AULA 03 Arquitetura de Computadores Gil Eduardo de Andrade

REPRESENTAÇÃO DE DADOS EM SISTEMAS DE COMPUTAÇÃO AULA 03 Arquitetura de Computadores Gil Eduardo de Andrade REPRESENTAÇÃO DE DADOS EM SISTEMAS DE COMPUTAÇÃO AULA 03 Arquitetura de Computadores Gil Eduardo de Andrade O conteúdo deste documento é baseado no livro Princípios Básicos de Arquitetura e Organização

Leia mais

UNIVERSIDADE FEDERAL DO AMAPÁ PRÓ REITORIA DE ADMINISTRAÇÃO E PLANEJAMENTO DEPARTAMENTO DE INFORMÁTICA. Manual do Moodle- Sala virtual

UNIVERSIDADE FEDERAL DO AMAPÁ PRÓ REITORIA DE ADMINISTRAÇÃO E PLANEJAMENTO DEPARTAMENTO DE INFORMÁTICA. Manual do Moodle- Sala virtual UNIVERSIDADE FEDERAL DO AMAPÁ PRÓ REITORIA DE ADMINISTRAÇÃO E PLANEJAMENTO DEPARTAMENTO DE INFORMÁTICA Manual do Moodle- Sala virtual UNIFAP MACAPÁ-AP 2012 S U M Á R I O 1 Tela de Login...3 2 Tela Meus

Leia mais

Portal do Projeto Tempo de Ser

Portal do Projeto Tempo de Ser Sumário Portal do Projeto Tempo de Ser O que é um Wiki?...2 Documentos...2 Localizando documentos...3 Links...3 Criando um Documento...4 Criando um link...4 Editando um Documento...5 Sintaxe Básica...5

Leia mais

CONCEITOS BÁSICOS PARA A CONSTRUÇÃO DE ALGORITMOS PARA COMPUTADORES. Isac Aguiar isacaguiar.com.br isacaguiar@gmail.com

CONCEITOS BÁSICOS PARA A CONSTRUÇÃO DE ALGORITMOS PARA COMPUTADORES. Isac Aguiar isacaguiar.com.br isacaguiar@gmail.com CONCEITOS BÁSICOS PARA A CONSTRUÇÃO DE ALGORITMOS PARA COMPUTADORES Isac Aguiar isacaguiar.com.br isacaguiar@gmail.com Objetivos Compreender os conceitos de lógica de programação e de algoritmos. Conhecer

Leia mais

Linguagem e Técnicas de Programação I Tipos de dados, variáveis e constantes. Prof. MSc. Hugo Souza Material desenvolvido por: Profa.

Linguagem e Técnicas de Programação I Tipos de dados, variáveis e constantes. Prof. MSc. Hugo Souza Material desenvolvido por: Profa. Linguagem e Técnicas de Programação I Tipos de dados, variáveis e constantes Prof. MSc. Hugo Souza Material desenvolvido por: Profa. Ameliara Freire Tipos de dados Os programas manipulam dados, armazenando-os

Leia mais

CADERNOS DE INFORMÁTICA Nº 1. Fundamentos de Informática I - Word 2010. Sumário

CADERNOS DE INFORMÁTICA Nº 1. Fundamentos de Informática I - Word 2010. Sumário CADERNO DE INFORMÁTICA FACITA Faculdade de Itápolis Aplicativos Editores de Texto WORD 2007/2010 Sumário Editor de texto... 3 Iniciando Microsoft Word... 4 Fichários:... 4 Atalhos... 5 Área de Trabalho:

Leia mais

TUTORIAL PARA UTILIZAÇÃO DA PLATAFORMA LMS

TUTORIAL PARA UTILIZAÇÃO DA PLATAFORMA LMS TUTORIAL PARA UTILIZAÇÃO DA PLATAFORMA LMS Neste documento você encontrará um conjunto de orientações de como navegar na plataforma do MBA Gestão Empreendedora. Siga as instruções com atenção e salve este

Leia mais

Estrutura de Dados Básica

Estrutura de Dados Básica Estrutura de Dados Básica Professor: Osvaldo Kotaro Takai. Aula 4: Tipos de Dados O objetivo desta aula é apresentar os tipos de dados manipulados pela linguagem C, tais como vetores e matrizes, bem como

Leia mais

Vejamos um exemplo. Vamos supor que queiramos montar uma tabela 3X2, ou seja de 3 colunas por 2 linhas, o código HTML para isso é :

Vejamos um exemplo. Vamos supor que queiramos montar uma tabela 3X2, ou seja de 3 colunas por 2 linhas, o código HTML para isso é : TABELAS As tabelas são muito importantes para o designer de uma home-page. Com elas podese fazer alinhamentos que dificilmente seriam possíveis com simples comandos. A funcionalidade de uma tabela faz

Leia mais

20 Caracteres - Tipo char

20 Caracteres - Tipo char 0 Caracteres - Tipo char Ronaldo F. Hashimoto e Carlos H. Morimoto Até agora vimos como o computador pode ser utilizado para processar informação que pode ser quantificada de forma numérica. No entanto,

Leia mais

P r o g r a m a ç ã o d e C o m p u t a d o r e s 1 o S e m - 2 0 1 3 P r o f. A n d r é A m a r a n t e L u i z L A B 5 tag %2d while printf PE1:

P r o g r a m a ç ã o d e C o m p u t a d o r e s 1 o S e m - 2 0 1 3 P r o f. A n d r é A m a r a n t e L u i z L A B 5 tag %2d while printf PE1: Inteligência É a faculdade de criar objetos artificiais, especialmente ferramentas para fazer ferramentas. Henri Bergson. WHILE Além dos comandos if-else e switch, o controle de fluxo de um programa pode

Leia mais

Introdução à Programação

Introdução à Programação Introdução à Programação Introdução a Linguagem C Construções Básicas Programa em C #include int main ( ) { Palavras Reservadas } float celsius ; float farenheit ; celsius = 30; farenheit = 9.0/5

Leia mais

Linguagem de Programação I

Linguagem de Programação I Linguagem de Programação I Curso de Sistemas de Informação Karla Donato Fook karladf@ifma.edu.br DESU / DAI 2016 Linguagem de Programação C 2 1 Linguagem de Programação C Os programas em C consistem em

Leia mais

Acessando o SVN. Soluções em Vendas Ninfa 2

Acessando o SVN. Soluções em Vendas Ninfa 2 Acessando o SVN Para acessar o SVN é necessário um código de usuário e senha, o código de usuário do SVN é o código de cadastro da sua representação na Ninfa, a senha no primeiro acesso é o mesmo código,

Leia mais

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES SISTEMAS DE NUMERAÇÃO: REPRESENTAÇÃO EM PONTO FLUTUANTE. Prof. Dr. Daniel Caetano 2012-1

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES SISTEMAS DE NUMERAÇÃO: REPRESENTAÇÃO EM PONTO FLUTUANTE. Prof. Dr. Daniel Caetano 2012-1 ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES SISTEMAS DE NUMERAÇÃO: REPRESENTAÇÃO EM PONTO FLUTUANTE Prof. Dr. Daniel Caetano 2012-1 Objetivos Compreender o que é notação em ponto flutuante Compreender a

Leia mais

Manual de Utilização do PDV Klavix

Manual de Utilização do PDV Klavix Manual de Utilização do PDV Klavix Página 1/20 Instalando a partir do CD Se você recebeu um CD de instalação, rode o programa Instalador que se encontra no raiz do seu CD. Ele vai criar a pasta c:\loureiro

Leia mais

Resolução de sistemas lineares

Resolução de sistemas lineares Resolução de sistemas lineares J M Martínez A Friedlander 1 Alguns exemplos Comecemos mostrando alguns exemplos de sistemas lineares: 3x + 2y = 5 x 2y = 1 (1) 045x 1 2x 2 + 6x 3 x 4 = 10 x 2 x 5 = 0 (2)

Leia mais

O Princípio da Complementaridade e o papel do observador na Mecânica Quântica

O Princípio da Complementaridade e o papel do observador na Mecânica Quântica O Princípio da Complementaridade e o papel do observador na Mecânica Quântica A U L A 3 Metas da aula Descrever a experiência de interferência por uma fenda dupla com elétrons, na qual a trajetória destes

Leia mais

Desenvolvido por: Rafael Botelho botelhotech@gmail.com http://rafaelbotelho.com

Desenvolvido por: Rafael Botelho botelhotech@gmail.com http://rafaelbotelho.com Desenvolvido por: Rafael Botelho botelhotech@gmail.com http://rafaelbotelho.com Guia de Instalação do BRlix Como tenho visto no fórum do BRlix que muitas pessoas estão encontrando dificuldades na instalação

Leia mais

Esse produto é um produto composto e tem subprodutos

Esse produto é um produto composto e tem subprodutos Indústria - Cadastro de produtos O módulo indústria permite controlar a produção dos produtos fabricados pela empresa. É possível criar um produto final e definir as matérias-primas que fazem parte de

Leia mais

MANUAL DA SECRETARIA

MANUAL DA SECRETARIA MANUAL DA SECRETARIA Conteúdo Tela de acesso... 2 Liberação de acesso ao sistema... 3 Funcionários... 3 Secretaria... 5 Tutores... 7 Autores... 8 Configuração dos cursos da Instituição de Ensino... 9 Novo

Leia mais

Um jogo de preencher casas

Um jogo de preencher casas Um jogo de preencher casas 12 de Janeiro de 2015 Resumo Objetivos principais da aula de hoje: resolver um jogo com a ajuda de problemas de divisibilidade. Descrevemos nestas notas um jogo que estudamos

Leia mais

Simulado Informática Concurso Correios - IDEAL INFO

Simulado Informática Concurso Correios - IDEAL INFO Simulado Informática Concurso Correios - IDEAL INFO Esta prova de informática é composta por 20 (vinte) questões de múltipla escolha seguindo o molde adotado pela UnB/CESPE. O tempo para a realização deste

Leia mais

Linguagem C: variáveis, operadores, entrada/saída. Prof. Críston Algoritmos e Programação

Linguagem C: variáveis, operadores, entrada/saída. Prof. Críston Algoritmos e Programação Linguagem C: variáveis, operadores, entrada/saída Prof. Críston Algoritmos e Programação Linguagem C Linguagem de uso geral (qualquer tipo de aplicação) Uma das linguagens mais utilizadas Foi utilizada

Leia mais

Fale.com. Manual do Usuário

Fale.com. Manual do Usuário Fale.com Manual do Usuário Serviço Fale.com Índice 1. Introdução 3 2. Instalando o Fale.com 3 a. Configurando o áudio para atendimento pela Internet 9 3. Configurando o Fale.com 14 4. Utilizando o Fale.com

Leia mais

Gravando Dados e Cópias de CD s com o Nero 6.0 Disciplina Operação de Sistemas Aplicativos I

Gravando Dados e Cópias de CD s com o Nero 6.0 Disciplina Operação de Sistemas Aplicativos I CENTRO ESTADUAL DE EDUCAÇÃO TECNOLÓGICA PAULA SOUZA Escola Técnica Estadual de Avaré ETE-AVARÉ CURSO DE TÉCNICO EM INFORMÁTICA NÚCLEO DE APOIO Gravando Dados e Cópias de CD s com o Nero 6.0 Disciplina

Leia mais

Manual do Usuário - ProJuris Web - Biblioteca Jurídica Página 1 de 20

Manual do Usuário - ProJuris Web - Biblioteca Jurídica Página 1 de 20 As informações contidas neste documento estão sujeitas a alterações sem o prévio aviso, o que não representa um compromisso da Virtuem Informática. As pessoas, organizações ou empresas e eventos de exemplos

Leia mais

Mas, como utilizar essa ferramenta tão útil e que está à sua disposição?

Mas, como utilizar essa ferramenta tão útil e que está à sua disposição? Caríssimo aluno da Rede CEJA, Seja muito bem vindo à sua escola! Estamos muito felizes que você tenha optado por dar continuidade aos seus estudos conosco, confiando e acreditando em tudo o que poderemos

Leia mais

Conectar diferentes pesquisas na internet por um menu

Conectar diferentes pesquisas na internet por um menu Conectar diferentes pesquisas na internet por um menu Pré requisitos: Elaboração de questionário Formulário multimídia Publicação na internet Uso de senhas na Web Visualização condicionada ao perfil A

Leia mais

Cotagem de dimensões básicas

Cotagem de dimensões básicas Cotagem de dimensões básicas Introdução Observe as vistas ortográficas a seguir. Com toda certeza, você já sabe interpretar as formas da peça representada neste desenho. E, você já deve ser capaz de imaginar

Leia mais

Configurando a emissão de boletos no sistema

Configurando a emissão de boletos no sistema Configurando a emissão de boletos no sistema Entre nossos sistemas, o GIM, o GECOB, o GEM, o TRA-FRETAMENTO e os 15 sistemas da linha 4U (GE-COMERCIO 4U, GEPAD 4U, GE-INFO 4U, etc ) possuem funções para

Leia mais

ROBERTO OLIVEIRA CUNHA

ROBERTO OLIVEIRA CUNHA LEIAME APRESENTAÇÃO Nenhuma informação do TUTORIAL DO MICRO- SOFT OFFICE WORD 2003 poderá ser copiada, movida ou modificada sem autorização prévia e escrita do Programador Roberto Oliveira Cunha. Programador:

Leia mais

BACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia

BACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia O Sistema Operacional que você usa é multitasking? Por multitasking, entende-se a capacidade do SO de ter mais de um processos em execução ao mesmo tempo. É claro que, num dado instante, o número de processos

Leia mais

Projeto da Disciplina Parte1: Estudo de Viabilidade. Um Estudo de Viabilidade

Projeto da Disciplina Parte1: Estudo de Viabilidade. Um Estudo de Viabilidade Projeto da Disciplina Parte1: Estudo de Viabilidade ENTREGA: 09/04/09 Professor: Carlos José Maria Olguin Um Estudo de Viabilidade Você deve fazer um estudo de viabilidade para um projeto de sistema de

Leia mais

Variáveis e Comandos de Atribuição

Variáveis e Comandos de Atribuição BCC 201 - Introdução à Programação Variáveis e Comandos de Atribuição Guillermo Cámara-Chávez UFOP 1/47 Estrutura Básica de um programa C I < d i r e t i v a s do pré p r o c e s s a d o r > < d e c l

Leia mais

Alguns truques do Excel. 1- Títulos com inclinação. 2- Preencha automaticamente células em branco

Alguns truques do Excel. 1- Títulos com inclinação. 2- Preencha automaticamente células em branco Alguns truques do Excel 1- Títulos com inclinação No Excel é possível colocar o conteúdo das células na vertical. Para além disto, pode-se escolher o grau de inclinação. Para isto, seleccione as células

Leia mais

Linguagem C. Programação Estruturada. Fundamentos da Linguagem. Prof. Luis Nícolas de Amorim Trigo nicolas.trigo@ifsertao-pe.edu.

Linguagem C. Programação Estruturada. Fundamentos da Linguagem. Prof. Luis Nícolas de Amorim Trigo nicolas.trigo@ifsertao-pe.edu. Programação Estruturada Linguagem C Fundamentos da Linguagem Prof. Luis Nícolas de Amorim Trigo nicolas.trigo@ifsertao-pe.edu.br Sumário Estrutura Básica Bibliotecas Básicas Tipos de Dados Básicos Variáveis/Declaração

Leia mais

Trabalho Prático 1 Tipos Abstratos de Dados

Trabalho Prático 1 Tipos Abstratos de Dados Universidade Federal de Minas Gerais Departamento de Ciência da Computação/ICEx Algoritmos e Estruturas de Dados II Prof. Jussara M. Almeida Trabalho Prático 1 Tipos Abstratos de Dados Data de entrega:

Leia mais

SUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2

SUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2 SUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2 1.1 Introdução... 2 1.2 Estrutura do IP... 3 1.3 Tipos de IP... 3 1.4 Classes de IP... 4 1.5 Máscara de Sub-Rede... 6 1.6 Atribuindo um IP ao computador... 7 2

Leia mais

LINGUAGEM C UMA INTRODUÇÃO

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

Leia mais

Sistemas Operacionais. Curso Técnico Integrado Profa: Michelle Nery

Sistemas Operacionais. Curso Técnico Integrado Profa: Michelle Nery Sistemas Operacionais Curso Técnico Integrado Profa: Michelle Nery Conteúdo Programático CONTAS DE E GRUPOS DE O Microsoft Management Console - MMC Permissões de Segurança de um Console Contas de Usuários

Leia mais

Exemplo: Na figura 1, abaixo, temos: Clique aqui para continuar, que é a primeira atividade que você precisa realizar para iniciar seus estudos.

Exemplo: Na figura 1, abaixo, temos: Clique aqui para continuar, que é a primeira atividade que você precisa realizar para iniciar seus estudos. Visão Geral VISÃO GERAL Esse material abordará o acesso ao AVA (Ambiente Virtual de Aprendizagem) da Proativa do Pará, com intenção de ilustrar os aspectos na visão do Aprendiz. Essa abordagem dedica-se

Leia mais

5 Dicas Testadas para Você Produzir Mais na Era da Internet

5 Dicas Testadas para Você Produzir Mais na Era da Internet 5 Dicas Testadas para Você Produzir Mais na Era da Internet Uma das verdades absolutas sobre Produtividade que você precisa saber antes de seguir é entender que se ocupar não é produzir. Não sei se é o

Leia mais

COMO IMUNIZAR SEU PENDRIVE CONTRA VÍRUS. Introdução

COMO IMUNIZAR SEU PENDRIVE CONTRA VÍRUS. Introdução COMO IMUNIZAR SEU PENDRIVE CONTRA VÍRUS Introdução Os vírus de computador que infectam os pendrives sempre se infiltram pela raiz do mesmo, que é a primeira área onde o pendrive começa a ser utilizado,

Leia mais

Na disciplina de Cálculo Numérico, vamos trabalhar com a linguagem C++ e o compilador que vamos usar é o Dev C++.

Na disciplina de Cálculo Numérico, vamos trabalhar com a linguagem C++ e o compilador que vamos usar é o Dev C++. Data: 14/8 Página 1 de 9 Primeiros passos Introdução Na disciplina de Cálculo Numérico, vamos trabalhar com a linguagem C++ e o compilador que vamos usar é o Dev C++. No tutorial anterior, mostramos como

Leia mais

AMBIENTE DE PROGRAMAÇÃO PYTHON

AMBIENTE DE PROGRAMAÇÃO PYTHON Computadores e Programação Engª Biomédica Departamento de Física Faculdade de Ciências e Tecnologia da Universidade de Coimbra Ano Lectivo 2003/2004 FICHA 1 AMBIENTE DE PROGRAMAÇÃO PYTHON 1.1. Objectivos

Leia mais

1 ACESSO PARA SECRETÁRIA... 4 2 - CONFIGURAR HORÁRIOS DE ATENDIMENTO... 4 2.1 BLOQUEANDO E HABILITANDO HORÁRIOS... 5 3 PRÉ-DEFININDO PARÂMETROS DE

1 ACESSO PARA SECRETÁRIA... 4 2 - CONFIGURAR HORÁRIOS DE ATENDIMENTO... 4 2.1 BLOQUEANDO E HABILITANDO HORÁRIOS... 5 3 PRÉ-DEFININDO PARÂMETROS DE 2 1 ACESSO PARA SECRETÁRIA... 4 2 - CONFIGURAR HORÁRIOS DE ATENDIMENTO... 4 2.1 BLOQUEANDO E HABILITANDO HORÁRIOS... 5 3 PRÉ-DEFININDO PARÂMETROS DE ATENDIMENTO... 6 4 - A TELA AGENDA... 7 4.1 - TIPOS

Leia mais

Parte II. Aprofundando os conhecimentos

Parte II. Aprofundando os conhecimentos Parte II Aprofundando os conhecimentos 111 113 Você deve ter visitado a maioria dos capítulos desta segunda parte por sugestão feitas no texto anterior. Todos os capítulos desta segunda parte foram escritos

Leia mais

CONCEITOS BÁSICOS DE UM SISTEMA OPERATIVO

CONCEITOS BÁSICOS DE UM SISTEMA OPERATIVO 4 CONCEITOS BÁSICOS DE UM SISTEMA OPERATIVO CONCEITOS BÁSICOS MS-DOS MICROSOFT DISK OPERATION SYSTEM INSTALAÇÃO E CONFIGURAÇÃO DE UM SISTEMA OPERATIVO LIGAÇÕES À INTERNET O que é um sistema operativo?

Leia mais

Aula 4 Conceitos Básicos de Estatística. Aula 4 Conceitos básicos de estatística

Aula 4 Conceitos Básicos de Estatística. Aula 4 Conceitos básicos de estatística Aula 4 Conceitos Básicos de Estatística Aula 4 Conceitos básicos de estatística A Estatística é a ciência de aprendizagem a partir de dados. Trata-se de uma disciplina estratégica, que coleta, analisa

Leia mais

1. A corrida de vetores numa folha de papel.

1. A corrida de vetores numa folha de papel. 1. A corrida de vetores numa folha de papel. desenhando a pista. o movimento dos carros. o início da corrida. as regras do jogo. 2. A corrida no computador. o número de jogadores. o teclado numérico. escolhendo

Leia mais

Tabelas vista de estrutura

Tabelas vista de estrutura Tabelas vista de estrutura A vista de estrutura permite definir a configuração dos dados Vamos adicionar os restantes campos à tabela carros, de acordo com o modelo de dados feito no papel 47 Tabelas vista

Leia mais

Manual de Utilizador. Caderno. Recursos da Unidade Curricular. Gabinete de Ensino à Distância do IPP. http://eweb.ipportalegre.pt. ged@ipportalegre.

Manual de Utilizador. Caderno. Recursos da Unidade Curricular. Gabinete de Ensino à Distância do IPP. http://eweb.ipportalegre.pt. ged@ipportalegre. Manual de Utilizador Caderno Recursos da Unidade Curricular Gabinete de Ensino à Distância do IPP http://eweb.ipportalegre.pt ged@ipportalegre.pt Índice RECURSOS... 1 ADICIONAR E CONFIGURAR RECURSOS...

Leia mais

Introdução. A Informação e sua Representação (Parte II) Universidade Federal de Campina Grande. Unidade Acadêmica de Sistemas e Computação

Introdução. A Informação e sua Representação (Parte II) Universidade Federal de Campina Grande. Unidade Acadêmica de Sistemas e Computação Universidade Federal de Campina Grande Unidade Acadêmica de Sistemas e Computação Introdução à Computação A Informação e sua Representação (Parte II) Prof. a Joseana Macêdo Fechine Régis de Araújo joseana@computacao.ufcg.edu.br

Leia mais

Curso Online A Escola no Combate ao Trabalho Infantil Plataforma de Educação à Distância

Curso Online A Escola no Combate ao Trabalho Infantil Plataforma de Educação à Distância Página1 Apresentação Curso Online A Escola no Combate ao Trabalho Infantil Plataforma de Educação à Distância Olá Participante do Curso A Escola no Combate ao Trabalho Infantil (ECTI), Este tutorial pretende

Leia mais

COMO PROGRAMAR SEU TIME

COMO PROGRAMAR SEU TIME COMO PROGRAMAR SEU TIME 1) INSTALAÇÃO: Instale o simulador da categoria SIMUROSOT da FIRA. O simulador é gratuito e está disponível para download no site da FIRA (www.fira.net) ou no site da competiçã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 Algoritmos e Programação Parte 05 Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br www.univasf.edu.br/~jorge.cavalcanti

Leia mais

Q-Acadêmico. Módulo CIEE - Estágio. Revisão 01

Q-Acadêmico. Módulo CIEE - Estágio. Revisão 01 Q-Acadêmico Módulo CIEE - Estágio Revisão 01 SUMÁRIO 1. VISÃO GERAL DO MÓDULO... 2 1.1 PRÉ-REQUISITOS... 2 2. ORDEM DE CADASTROS PARA UTILIZAÇÃO DO MÓDULO CIEE... 3 2.1 CADASTRANDO EMPRESAS... 3 2.1.1

Leia mais

INTRODUÇÃO À LINGUAGEM C++

INTRODUÇÃO À LINGUAGEM C++ INTRODUÇÃO À LINGUAGEM C++ 1 - VARIÁVEIS Variáveis espaço de memória reservado para armazenar tipos de dados, com um nome para referenciar seu conteúdo. Observações importantes Todas as variáveis devem

Leia mais

Resumo da Matéria de Linguagem de Programação. Linguagem C

Resumo da Matéria de Linguagem de Programação. Linguagem C Resumo da Matéria de Linguagem de Programação Linguagem C Vitor H. Migoto de Gouvêa 2011 Sumário Como instalar um programa para executar o C...3 Sintaxe inicial da Linguagem de Programação C...4 Variáveis

Leia mais

TUTORIAL PARA PREPARAÇÃO E IMPORTAÇÃO DE DADOS PARA. Os dados de suas coletas devem ser organizados em uma planilha eletrônica, de modo

TUTORIAL PARA PREPARAÇÃO E IMPORTAÇÃO DE DADOS PARA. Os dados de suas coletas devem ser organizados em uma planilha eletrônica, de modo TUTORIAL PARA PREPARAÇÃO E IMPORTAÇÃO DE DADOS PARA ESTIMATIVAS DE RIQUEZA DE ESPÉCIES Softwares utilizados: Excel, EstimateS e Statistica. Preparação dos dados Os dados de suas coletas devem ser organizados

Leia mais

INFORMÁTICA BÁSICA. Word. Professor: Enir da Silva Fonseca

INFORMÁTICA BÁSICA. Word. Professor: Enir da Silva Fonseca INFORMÁTICA BÁSICA Word Professor: Enir da Silva Fonseca Índice Word... 03 Documento... 03 Iniciando o Word... 03 Teclas especiais... 04 Corrigindo Erros... 04 Localizando e Substituindo o Texto... 07

Leia mais

LASERTECK SOFTECK FC MANUAL DO USUÁRIO

LASERTECK SOFTECK FC MANUAL DO USUÁRIO LASERTECK SOFTECK FC MANUAL DO USUÁRIO 2015 SUMÁRIO 1 INTRODUÇÃO... 3 2 REQUISITOS DO SISTEMA... 3 3 INSTALAÇÃO... 3 4 O QUE MUDOU... 3 5 COMO COMEÇAR... 4 6 FORMULÁRIOS DE CADASTRO... 5 7 CADASTRO DE

Leia mais

Inventario de produtos

Inventario de produtos Inventario de produtos Parar o TAC. Gerar o inventario. Informações de erros na importação de produtos. Produtos sem código tributário associado. A posse de produtos no Thotau. Como corrigir as posses

Leia mais

Componentes da linguagem C++

Componentes da linguagem C++ Componentes da linguagem C++ C++ é uma linguagem de programação orientada a objetos (OO) que oferece suporte às características OO, além de permitir você realizar outras tarefas, similarmente a outras

Leia mais

Tutorial 7 Fóruns no Moodle

Tutorial 7 Fóruns no Moodle Tutorial 7 Fóruns no Moodle O Fórum é uma atividade do Moodle que permite uma comunicação assíncrona entre os participantes de uma comunidade virtual. A comunicação assíncrona estabelecida em fóruns acontece

Leia mais

Problemas básicos nos. Serviços Gladius MP

Problemas básicos nos. Serviços Gladius MP Problemas básicos nos Serviços Gladius MP I. Quando um funcionário não consegue marcar ponto a) Problemas de Nível Operacional b) Um ponto de ajuda c) Identificando em que fase o problema está d) Problemas

Leia mais

2. Representação Numérica

2. Representação Numérica 2. Representação Numérica 2.1 Introdução A fim se realizarmos de maneira prática qualquer operação com números, nós precisamos representa-los em uma determinada base numérica. O que isso significa? Vamos

Leia mais

Superintendência Regional de Ensino de Ubá - MG Núcleo de Tecnologia Educacional NTE/Ubá. LibreOffice Impress Editor de Apresentação

Superintendência Regional de Ensino de Ubá - MG Núcleo de Tecnologia Educacional NTE/Ubá. LibreOffice Impress Editor de Apresentação Superintendência Regional de Ensino de Ubá - MG Núcleo de Tecnologia Educacional NTE/Ubá LibreOffice Impress Editor de Apresentação Iniciando o Impress no Linux Educacional 4 1. Clique no botão 'LE' no

Leia mais

MANUAL WEBDRIVE. webdrive.whirlpool.com.br

MANUAL WEBDRIVE. webdrive.whirlpool.com.br MANUAL WEBDRIVE webdrive.whirlpool.com.br 1 Sumário 1. O Webdrive p. 04 2. Acessando o sistema p. 04 2.1 Esqueci minha senha 2.2 Página principal 2.3 Efetuar logoff 2.4 Criar e alterar Usuários 2.5 Criar

Leia mais

BR DOT COM SISPON: MANUAL DO USUÁRIO

BR DOT COM SISPON: MANUAL DO USUÁRIO BR DOT COM SISPON: MANUAL DO USUÁRIO BAURU 2015 2 BR DOT COM SISPON: MANUAL DO USUÁRIO Manual do usuário apresentado para auxiliar no uso do sistema SisPon. BAURU 2015 3 SUMÁRIO 1 Instalação... 5 1.1 Sispon...

Leia mais

1. Introdução. Avaliação de Usabilidade Página 1

1. Introdução. Avaliação de Usabilidade Página 1 1. Introdução Avaliação de Usabilidade Página 1 Os procedimentos da Avaliação Heurística correspondem às quatro fases abaixo e no final é apresentado como resultado, uma lista de problemas de usabilidade,

Leia mais

Manual do Teclado de Satisfação Online WebOpinião

Manual do Teclado de Satisfação Online WebOpinião Manual do Teclado de Satisfação Online WebOpinião Versão 1.2.3 27 de novembro de 2015 Departamento de Engenharia de Produto (DENP) SEAT Sistemas Eletrônicos de Atendimento 1. Introdução O Teclado de Satisfação

Leia mais

BCC402 Algoritmos e Programação Avançada Prof. Marco Antonio M. Carvalho Prof. Túlio Ângelo M. Tóffolo 2011/1

BCC402 Algoritmos e Programação Avançada Prof. Marco Antonio M. Carvalho Prof. Túlio Ângelo M. Tóffolo 2011/1 BCC402 Algoritmos e Programação Avançada Prof. Marco Antonio M. Carvalho Prof. Túlio Ângelo M. Tóffolo 2011/1 Na aula de hoje UVa; Tipos de Erros; Representação de tipos; Formas Padrão de Entrada e Saída

Leia mais

22/05/2006. Discurso do Presidente da República

22/05/2006. Discurso do Presidente da República , Luiz Inácio Lula da Silva, na cerimônia de assinatura de protocolos de intenções no âmbito do Programa Saneamento para Todos Palácio do Planalto, 22 de maio de 2006 Primeiro, os números que estão no

Leia mais