Experimentos com a memória cache do CPU

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

Download "Experimentos com a memória cache do CPU"

Transcrição

1 Experimentos com a memória cache do CPU Alberto Bueno Júnior & Andre Henrique Serafim Casimiro Setembro de

2 Contents 1 Introdução 3 2 Desvendando o cache Para que serve o cache? Funcionamento básico Cache misses Causando falhas de cache Teste 1: Percorrendo matrizes O código O programa Testes Conclusões Teste 2: Somando vetores O código O programa Testes Conclusões Teste 3: Memória compartilhada entre cores O código O programa Testes Conclusões Conclusões gerais 23 5 Bibliografia 24 2

3 1 Introdução Este é um trabalho feito para a disciplina MAC Organização de Computadores, ministrada, em 2010, pelo professor Alfredo Goldman ( Esta disciplina é oferecida aos alunos de graduação em Ciência da Computação do Instituto de Matemática e Estatística (IME - da Universidade de São Paulo (USP - O objetivo é mostrar algumas experiências que podem ser feitas com a memória cache do CPU. 2 Desvendando o cache 2.1 Para que serve o cache? A memória cache é uma forma utilizada pelo CPU para diminuir o tempo de acesso à memória. O cache é muito menor do que a memória principal, tanto em bytes quanto espaço físico, muitas vezes cabendo no próprio chip do processador. Além disso, o tempo de acesso ao cache é muito menor. 2.2 Funcionamento básico O cache é dividido nas chamadas linhas de cache, onde cada uma delas contém 3 campos: data: dados index: um índice que indica a posição daquela linha no cache tag: um índice que indica qual é a posição da memória principal que contém a outra cópia do dado Dessa forma, quando o processador recebe uma instrução que precisa fazer uma leitura ou escrita na posição de memória x, ele verifica se existe alguma linha de cache cujo campo tag contém o valor x. Se ele encontrar, dizemos que ocorreu um cache hit. Caso contrário, ocorreu um cache miss. Quando ocorre um cache miss, uma nova linha é criada no cache, colocando o valor x no campo tag. Depois disso o processador tem que copiar os dados da memória principal para essa nova linha (no caso em que a instrução foi de leitura) ou copiar para a memória (caso de escrita). Um detalhe importante 3

4 é que para criar uma nova linha no cache, o mesmo precisa abrir mão de outra linha. A heurística utilizada pelo processador para escolher tal linha é chamada de Política de substituição. 2.3 Cache misses Existem três tipos de cache miss: Leitura de instrução: É quando o processador não encontra um instrução no cache e então tem que buscá-la na memória principal, fazendo com que o processo tenha que esperar até que a instrução seja obtida. É o que causa mais delay. Leitura de dados: É quando o processador não encontra um determinado dado no cache. Enquanto o dado não é retornado da memória principal, as instruções que não dependem daquela leitura podem ser executadas. Assim que o dado vier da memória, as instruções dependendes daquela leitura podem voltar à execução. É o que causa delay mediano. Escrita de dados: Semelhante ao item acima, com a diferença de que a escrita na memória principal pode ser enfileirada (para ser escrita, de fato, mais tarde). Assim, o processador só escreve os dados na memória principal quando esta fila está cheia. É o que causa menos delay. 3 Causando falhas de cache Nesta seção estão alguns exemplos de como se pode causar falhas de cache. Algumas considerações preliminares acerca dos testes: Computador: A máquina utilizada tem o processador Intel Core 2 Duo 2.26 GHz com 3 MB de cache L2. Sistema operacional: Ubuntu Linux Linguagem de programação: A linguagem utilizada foi C. Compilação de código: O compilador utilizado foi o gcc, com as opções -O1, -O2, -O3, -O4, dependendo do teste. 4

5 Medida de consumo de tempo: A ferramenta utilizada para medir o tempo de execução dos programas foi /usr/bin/time, do Linux, com a opção %U, que mede a quantidade de tempo que o processador gastou processando as instruções do programa (não conta o tempo de criação do processo no sistema operacional nem o tempo em que o processo está esperando na fila do S.O., por exemplo). Medida do número de cache misses: Foi utilizada a ferramenta valgrind para medir o número de falhas de cache, com a opção tool=cachegrind. 5

6 3.1 Teste 1: Percorrendo matrizes O código teste1.c: 1 #include <s t d i o. h> 2 #include <s t d l i b. h> int main ( int argc, char argv [ ] ) { 6 int i, j, s i z e ; 7 int p ; 8 9 s i z e = a t o i ( argv [ 1 ] ) ; / matriz de s i z e l i n h a e s i z e colunas / p = ( int ) malloc ( s i z e sizeof ( int ) ) ; 12 for ( i = 0 ; i < s i z e ; i ++) 13 p [ i ] = ( int ) malloc ( s i z e sizeof ( int ) ) ; i f ( argc == 2) { / Se f o i passado apenas um argumento, p e r c o r r e por l i n h a s / 16 for ( i = 0 ; i < s i z e ; i++) { 17 for ( j = 0 ; j < s i z e ; j++) { 18 p [ i ] [ j ] = 0 ; 19 } 20 } 21 } else {/ Senao, p e r c o r r e por colunas / 24 for ( i = 0 ; i < s i z e ; i++) { 25 for ( j = 0 ; j < s i z e ; j++) { 26 p [ j ] [ i ] = 0 ; 27 } 28 } 29 } for ( i = 0 ; i < s i z e ; i ++) 32 f r e e ( p [ i ] ) ; 33 f r e e ( p ) ; 34 return 0 ; 35 } 6

7 3.1.2 O programa O programa teste1.c aloca na memória uma matriz de inteiros com size linhas e size colunas, onde size é um argumento passado para o programa pela linha de comando. Em seguida, a matriz é preenchida com zeros. A principal questão do problema é o modo como a matriz é percorrida. Se nenhum argumento, além de size, for passado, a matriz será percorrida por linhas (isto é, serão zerados os elementos p[0][0], p[0][1],...,p[0][size - 1], p[1][0],..., p[size - 1][size - 1], nesta ordem). Caso contrário, ela será percorrida por colunas (p[0][0], p[1][0],..., p[size - 1][0], p[0][1],..., p[size - 1][size - 1]). 7

8 3.1.3 Testes Consumo de tempo No gráfico acima, as linhas tracejadas representam os testes por linha, enquanto as linhas continuas representam os testes por coluna. As cores representam o nível de otimização usado pelo compilador gcc. O tamanho da matriz (a variável size) foi variado de 0 até 15000, de 1000 em

9 Falhas de cache O esquema de cores e linhas do gráfico acima é o mesmo do gráfico por tempo. A diferença agora é que o eixo vertical representa a porcentagem de misses do L2 que ocorreram durante a execução do programa (n o de misses por n o de acessos ao cache). 9

10 3.1.4 Conclusões Nesse teste estamos atacando uma característica da linguagem de programação C, que é a de armazenar as matrizes na memória alocadas em blocos de linhas. Assim, posições adjacentes em uma mesma linha estão também fisicamente adjacentes na memória. Independentemente da política de substituição dos dados do cache, a escrita que é feita no cache é feita por blocos de memória. Assim, ao acessarmos as posições de memória da matriz, percorrendo-a tanto por linha quanto por coluna, sempre teremos trechos inteiros das linhas da matriz copiadas da memória principal no cache. Isso explica o comportamento das curvas referentes a percorrer a matriz por linha nos gráficos. Vale notar, entretanto, alguns detalhes sobre as curvas referentes a percorrê-la por coluna. No 1 o gráfico, o formato exponencial da curva de gasto de tempo é decorrente do fato que o número de operações cresce conforme o tamanho da matriz, e este cresce exponencialmente conforme size varia linearmente. No 2 o gráfico, o salto que a curva dá ao variar size de 2000 para 3000 é devido o fato de que com size = 2000 a matriz cabe inteira no cache L2, e apartir de size = 3000 já não cabe mais. É isso que faz com que tantos cache misses aconteçam. 10

11 3.2 Teste 2: Somando vetores O código teste2.c: 1 #include <s t d i o. h> 2 #include <s t d l i b. h> 3 4 #define SIZE int main ( int argc, char argv [ ] ) { 7 int o f f s e t, array1, array2, ans, i, j ; 8 9 / Se nenhum argumento f o r passado, roda com o f f s e t 1 / 10 i f ( argc > 1) 11 o f f s e t = a t o i ( argv [ 1 ] ) ; 12 else 13 o f f s e t = 1 ; array1 = ( int ) malloc ( SIZE sizeof ( int ) ) ; 16 array2 = ( int ) malloc ( SIZE sizeof ( int ) ) ; 17 ans = ( int ) malloc ( SIZE sizeof ( int ) ) ; for ( i = 0 ; i < SIZE ; i ++) { 20 array1 [ i ] = rand ( ) %1000; 21 array2 [ i ] = rand ( ) %1000; 22 } for ( i = 1 ; i <= o f f s e t ; i++) { 25 for ( j = i 1; j < SIZE ; j += o f f s e t ) 26 ans [ j ] = array1 [ j ] + array2 [ j ] ; 27 } f r e e ( array1 ) ; 30 f r e e ( array2 ) ; 31 f r e e ( ans ) ; 32 return 0 ; 33 } 11

12 3.2.2 O programa O programa teste2.c aloca três vetores de 10 milhões de posições na memória, inicializa os dois primeiros e depois soma, de posição em posição, os dois e guarda no terceiro. Se um número offset for passado como argumento, o programa soma de offset em offset (isto é, soma a posição 0, depois a posição offset, depois a posição 2 * offset, até y = k * offset tal que y 10 milhões, depois soma 1, 1 + offset, etc). 12

13 3.2.3 Testes Consumo de tempo v1 Para melhorar a legibilidade do gráfico acima, omitimos as linhas referentes às otimizações -O2, -O3, -O4, pois elas apresentaram o mesmo comportamento que a otimizaçao -O1. O gráfico foi feito com o offset variando de 1 até 3001, de 10 em

14 Consumo de tempo v2 O gráfico acima é basicamente a mesma coisa do anterior, mas estendendo a variação até

15 Falhas de cache O gráfico acima mostra, no eixo vertical, a porcentagem de cache misses que ocorreram no cache L2 e, no eixo horizontal, o offset variando de 1 até 4501, de 10 em

16 3.2.4 Conclusões Este teste ilustra dois fatores muito importantes nas políticas de substituição de dados na memória cache: o tamanho dos blocos a serem copiados para a memória de cache e o tempo de permanência dos mesmos lá até que sejam substituídos. Como essas políticas não são muito fáceis de se definir para cada processador, nossa conclusão aqui não é totalmente certa. O 1 o (consumo de tempo) e o 3 o gráfico (cache miss) revelam um comportamento bastante semelhante entre consumo de tempo e cache misses. Dessa forma, vamos nos concentrar em analisar trechos importantes do 2 o gráfico (consumo de tempo - extendido): offset <1000 Aqui encontramos o pico do consumo de tempo. Os valores de offset aqui são bastante pequenos em relação ao tamanho do vetor, o que significa que são necessárias muitas iterações de tamanho offset para percorrê-lo completamente. Conforme o vetor é percorrido de offset em offset posições, blocos do vetor são copiados para o cache. O aumento da taxa de cache misses se deve ao fato de que, na próxima varredura do vetor, os blocos que haviam sido copiados já foram sobreescritos por outros dados. Assim, o mesmo bloco precisa ser recopiado para o cache <offset <3000 Conforme offset vai aumentando, as varreduras do vetor inteiro demoram menos e então blocos de memória passam a utilizados em mais de uma varredura. O fato de essa região também apresentar o vale de consumo de tempo (e o mesmo estar logo após o pico) tem a ver com o equilíbrio entre tempo de retorno ao mesmo bloco de dados e a quantidade de blocos distintos do vetor que estão distribuídos no cache (que neste ponto ainda são muitos, pois offset ainda não cresceu muito) <offset <15000 Conforme offset vai aumentando, o número de blocos distintos do vetor que estão distribuídos no cache também vai diminuindo. E isso faz com que aumente um pouco o número de cache misses. Este crescimento é linear pois a proporção do blocos é diminui lineramente com o crescimento linear de offset. 16

17 offset >15000 O processo tende a ficar constante. Provavelmente aqui já não há mais influências diretas das falhas de cache. Este tempo deve ser somente o tempo de processamento para um número mais ou menos fixo delas. 17

18 3.3 Teste 3: Memória compartilhada entre cores O código teste3.c: 1 #include <s t d l i b. h> 2 #include <sched. h> 3 #include <s t d i o. h> 4 #define SIZE struct s h a r e d d a t a s t r u c t { 7 unsigned int data1 ; 8 unsigned int data2 ; 9 } ; struct s h a r e d d a t a s t r u c t shared data ; static int i n c s e c o n d ( struct s h a r e d d a t a s t r u c t ) ; int main ( int argc, char argv [ ] ) { int i, j, pid, f l a g = 0 ; 18 void c h i l d s t a c k ; i f ( argc > 1) f l a g = 1 ; / Aloca a memoria da p i l h a do segundo processo / 23 i f ( ( c h i l d s t a c k = ( void ) malloc (4096) ) == NULL) { 24 p e r r o r ( Cannot a l l o c a t e stack f o r c h i l d ) ; 25 e x i t ( 1 ) ; 26 } / Cria um c l o n e que roda no mesmo espaco de memoria / 29 / Se por acaso e s t e programa der f a l h a de segmentacao ao rodar, t e n t e t i r a r o da chamada da funcao / 31 i f ( f l a g == 1) { 32 i f ( ( pid = c l o n e ( ( void )&inc second, c h i l d s t a c k +4096, 33 CLONE VM, &shared data ) ) < 0) { 34 p e r r o r ( c l o n e c a l l e d f a i l e d. ) ; 35 e x i t ( 1 ) ; 36 } 37 } / Modifica a primeira v a r i a v e l da s t r u c t compartilhada / 40 for ( j = 0 ; j < SIZE ; j++) { 41 for ( i = 0 ; i < ; i++) { 18

19 42 shared data. data1++; 43 } 44 } return 0 ; } / Funcao que r e p r e s e n t a a execucao do processo f i l h o / 51 int i n c s e c o n d ( struct s h a r e d d a t a s t r u c t sd ) 52 { 53 int i, j ; 54 / Modifica a segunda v a r i a v e l da s t r u c t compartilhada / 55 for ( j = 1 ; j < SIZE ; j++) { 56 for ( i = 1 ; i < ; i++) { 57 sd >data2++; 58 } 59 } 60 } O programa O programa teste3.c possui a estrutura shared data struct, que possui duas variáveis. Se nenhum argumento for passado, o programa teste3.c realiza SIZE 100, 000 incrementos na primeira variável. Caso contrário, ele cria um processo filho, que compartilha a estrutura shared data struct e realiza o mesmo número de incrementos na segunda variável, e depois realiza os incrementos na primeira variável. 19

20 3.3.3 Testes Consumo de tempo No gráfico acima, o tempo consumido pelo programa compilado com as otimazações -O1, -O2, -O3, -O4 é praticamente zero e por isso as barras não aparecem no gráfico. 20

21 3.3.4 Conclusões O Teste 3 mostra que compartilhar memória cache entre processos (ou entre cores, se o processador for multicore) pode causar falhas de cache. A estrutura criada no programa tem dois inteiros (4 bytes cada um), totalizando 8 bytes. Essa quantidade é pequena se comparada ao tamanho do cache line do cache L2, que é de 64 bytes. Isso quer dizer que toda a estrutura cabe em apenas uma cache line. Assim, quando o primeiro processo (processo pai) altera a primeira variável da estrutura, o cache marca aquela linha como suja. Assim, quando o segundo processo (processo filho) tenta alterar a segunda variável da estrutura (que está na mesma cache line) ele percebe que aquela linha está marcada como suja e daí é necessário fazer dois acessos à memória: um para escrever a linha suja na memória principal e outra para copiar para o cache a nova informação da memória principal. Por esse motivo, o caso em que o processo filho é criado (quando passamos um argumento para o programa) leva mais que o dobro do tempo do caso em que ele não é criado. Uma possível solução para esse problema é fazer com que as duas variáveis da estrutura estejam em cache lines diferentes. Um jeito de fazer isso é substituindo as linhas 1 struct s h a r e d d a t a s t r u c t { 2 unsigned int data1 ; 3 unsigned int data2 ; 4 } ; por 1 struct s h a r e d d a t a s t r u c t { 2 unsigned int data1 ; 3 int aux [ 2 0 ] ; 4 unsigned int data2 ; 5 } ; Dessa forma, o vetor aux ocupará 20 4 = 80 bytes na memória, fazendo com que as variáveis data1 e data2 estejam em cache lines diferentes. 21

22 O gráfico abaixo mostra o que acontece com o consumo de tempo fazendo essa modificação. Como a máquina utilizada no teste possui dois cores, os processos rodam em paralelo, consumindo praticamente o mesmo tempo que apenas um processo. 22

23 4 Conclusões gerais A melhor conclusão que pode ser feita a partir dos resultados apresentados é que o programador deve conhecer as formas como o cache é utilizado e, dependendo da aplicação, conhecer a máquina onde tal aplicação irá rodar. Ter esse conhecimento ajuda a diminuir os cache misses e, consequentemente, aumentar o desempenho (em relação ao tempo consumido) da aplicação. Essa não é uma tarefa fácil, pois o simples fato de percorrer uma matriz por colunas na linguagem C pode aumentar em muito o tempo de execução, como foi mostrado aqui. Contudo, qualquer conhecimento pode vir a ser útil. 23

24 5 Bibliografia

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA INFORMÁTICA APLICADA

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA INFORMÁTICA APLICADA Responda 1) Quem desenvolveu a linguagem C? Quando? 2) Existe alguma norma sobre a sintaxe da linguagem C? 3) Quais são os tipos básicos de dados disponíveis na linguagem C? 4) Quais são as principais

Leia mais

Orientação a Objetos

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

Leia mais

ARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo.

ARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo. Cursos: Análise, Ciência da Computação e Sistemas de Informação Programação I - Prof. Aníbal Notas de aula 8 ARRAYS Introdução Até agora, utilizamos variáveis individuais. Significa que uma variável objeto

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

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

Diminui o gargalo existente entre processador e memória principal; 5 a 10 vezes mais rápidas que a memória principal; Ligada diretamente à MP;

Diminui o gargalo existente entre processador e memória principal; 5 a 10 vezes mais rápidas que a memória principal; Ligada diretamente à MP; Diminui o gargalo existente entre processador e memória principal; Diferença de velocidade 5 a 10 vezes mais rápidas que a memória principal; Ligada diretamente à MP; Tecnologia semelhante à da CPU e,

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

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

Prof. Yandre Maldonado - 1 PONTEIROS. Prof. Yandre Maldonado e Gomes da Costa

Prof. Yandre Maldonado - 1 PONTEIROS. Prof. Yandre Maldonado e Gomes da Costa Prof. Yandre Maldonado - 1 PONTEIROS Prof. Yandre Maldonado e Gomes da Costa PONTEIROS Prof. Yandre Maldonado - 2 Ponteiro é uma variável que possui o endereço de outra variável; É um poderoso recurso

Leia mais

Computadores XXI: Busca e execução Final

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

Leia mais

Programação de Computadores I. Linguagem C Vetores

Programação de Computadores I. Linguagem C Vetores Linguagem C Vetores Prof. Edwar Saliba Júnior Fevereiro de 2011 Unidade 08 Vetores 1 Vetores Sintaxe: tipo_variável nome_vetor[tamanho]; Um vetor é uma variável que possui várias ocorrências de um mesmo

Leia mais

Algoritmos de Busca em Tabelas

Algoritmos de Busca em Tabelas Dentre os vários algoritmos fundamentais, os algoritmos de busca em tabelas estão entre os mais usados. Considere por exemplo um sistema de banco de dados. As operações de busca e recuperação dos dados

Leia mais

Vetores. Vetores. Figura 1 Exemplo de vetor com 10 elementos

Vetores. Vetores. Figura 1 Exemplo de vetor com 10 elementos Vetores Nos capítulos anteriores estudamos as opções disponíveis na linguagem C para representar: Números inteiros em diversos intervalos. Números fracionários com várias alternativas de precisão e magnitude.

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 07: Funções O comando return Protótipo de funções O tipo void Arquivos-cabeçalho Escopo de variáveis Passagem de parâmetros por valor

Leia mais

Memória Flash. PdP. Autor: Tiago Lone Nível: Básico Criação: 11/12/2005 Última versão: 18/12/2006. Pesquisa e Desenvolvimento de Produtos

Memória Flash. PdP. Autor: Tiago Lone Nível: Básico Criação: 11/12/2005 Última versão: 18/12/2006. Pesquisa e Desenvolvimento de Produtos TUTORIAL Memória Flash Autor: Tiago Lone Nível: Básico Criação: 11/12/2005 Última versão: 18/12/2006 PdP Pesquisa e Desenvolvimento de Produtos http://www.maxwellbohr.com.br contato@maxwellbohr.com.br

Leia mais

Busca. Pesquisa sequencial

Busca. Pesquisa sequencial Busca Banco de dados existem para que, de tempos em tempos, um usuário possa localizar o dado de um registro, simplesmente digitando sua chave. Uma tabela ou um arquivo é um grupo de elementos, cada um

Leia mais

Implementando uma Classe e Criando Objetos a partir dela

Implementando uma Classe e Criando Objetos a partir dela Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 04 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO) Parte: 2 Prof. Cristóvão Cunha Implementando uma Classe

Leia mais

Estrutura da linguagem de programação C Prof. Tiago Eugenio de Melo tiago@comunidadesol.org

Estrutura da linguagem de programação C Prof. Tiago Eugenio de Melo tiago@comunidadesol.org Estrutura da linguagem de programação C Prof. Tiago Eugenio de Melo tiago@comunidadesol.org Breve Histórico A linguagem de programação C foi criada na década de 70, por Dennis Ritchie, que a implementou,

Leia mais

MC102 Algoritmos e programação de computadores Aula 3: Variáveis

MC102 Algoritmos e programação de computadores Aula 3: Variáveis MC102 Algoritmos e programação de computadores Aula 3: Variáveis Variáveis Variáveis são locais onde armazenamos valores na memória. Toda variável é caracterizada por um nome, que a identifica em um programa,

Leia mais

JSP - ORIENTADO A OBJETOS

JSP - ORIENTADO A OBJETOS JSP Orientação a Objetos... 2 CLASSE:... 2 MÉTODOS:... 2 Método de Retorno... 2 Método de Execução... 2 Tipos de Dados... 3 Boolean... 3 Float... 3 Integer... 4 String... 4 Array... 4 Primeira:... 4 Segunda:...

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Aula 13 Gerência de Memória Prof.: Edilberto M. Silva http://www.edilms.eti.br Baseado no material disponibilizado por: SO - Prof. Edilberto Silva Prof. José Juan Espantoso Sumário

Leia mais

Linguagem C Tipos de Dados. void; escalares; sizeof Vectores; strings em C Estruturas Introdução ao pré-processador

Linguagem C Tipos de Dados. void; escalares; sizeof Vectores; strings em C Estruturas Introdução ao pré-processador Linguagem C Tipos de Dados void; escalares; sizeof Vectores; strings em C Estruturas Introdução ao pré-processador Funções void void pode ser usado em lugar de um tipo, para indicar a ausência de valor

Leia mais

9 Comandos condicionais

9 Comandos condicionais 9 Comandos condicionais Um comando condicional é uma instrução empregada quando se deseja criar um desvio, isto é, a opção de executar-se ou não um determinado trecho de código, segundo uma condição. Em

Leia mais

O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware

O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware 1 2 Revisão de Hardware 2.1 Hardware O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware 2.1.1 Processador O Processador

Leia mais

Introdução às Linguagens de Programação

Introdução às Linguagens de Programação Introdução às Linguagens de Programação Histórico de Linguagens de Programação O computador não faz nada sozinho Precisamos informar, de forma clara, como ele deve executar as tarefas Ou seja, o computador

Leia mais

PARA A CONSTRUÇÃO DOS GRÁFICOS

PARA A CONSTRUÇÃO DOS GRÁFICOS 1 PARA A CONSTRUÇÃO DOS GRÁFICOS Apresentamos dois materiais feitos por estudantes do Curso de Psicologia da Faculdade de Ciências Humanas e da Saúde para construção de gráficos. As instruções das páginas

Leia mais

5. EXPERIÊNCIAS E ANÁLISE DOS RESULTADOS. 5.1 - Os Programas de Avaliação

5. EXPERIÊNCIAS E ANÁLISE DOS RESULTADOS. 5.1 - Os Programas de Avaliação 36 5. EXPERIÊNCIAS E ANÁLISE DOS RESULTADOS 5.1 - Os Programas de Avaliação Programas de avaliação convencionais foram utilizados para análise de diversas configurações da arquitetura. Estes programas

Leia mais

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br LP II Estrutura de Dados Introdução e Linguagem C Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br Resumo da aula Considerações Gerais Introdução a Linguagem C Variáveis e C Tipos de

Leia mais

Persistência de Dados

Persistência de Dados Persistência de s Universidade do Estado de Santa Catarina - Udesc Centro de Ciências Tecnológicas - CCT Departamento de Ciência da Computação Tecnologia de Sistemas de Informação Estrutura de s II - DAD

Leia mais

Dadas a base e a altura de um triangulo, determinar sua área.

Dadas a base e a altura de um triangulo, determinar sua área. Disciplina Lógica de Programação Visual Ana Rita Dutra dos Santos Especialista em Novas Tecnologias aplicadas a Educação Mestranda em Informática aplicada a Educação ana.santos@qi.edu.br Conceitos Preliminares

Leia mais

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

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

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

Leia mais

Sistemas Operacionais e Introdução à Programação. Vetores e matrizes

Sistemas Operacionais e Introdução à Programação. Vetores e matrizes Sistemas Operacionais e Introdução à Programação Vetores e matrizes 1 Matrizes Cada elemento de uma matriz é referenciado indicando-se sua posição dentro da matriz. Na Matemática, matrizes são arranjos

Leia mais

DAS5102 Fundamentos da Estrutura da Informação

DAS5102 Fundamentos da Estrutura da Informação Pilhas A estrutura de dados Pilha emula a forma de organização de objetos intuitiva que é utilizada diariamente nos mais diversos contextos da vida humana. Containeres são empilhados e desempilhados diariamente

Leia mais

Organização e Arquitetura de Computadores I

Organização e Arquitetura de Computadores I Organização e Arquitetura de Computadores I Caminho de Dados Slide 1 Sumário Introdução Convenções Lógicas de Projeto Construindo um Caminho de Dados O Controle da ULA Projeto da Unidade de Controle Principal

Leia mais

Estruturas de Dados. Prof. Gustavo Willam Pereira Créditos: Profa. Juliana Pinheiro Campos

Estruturas de Dados. Prof. Gustavo Willam Pereira Créditos: Profa. Juliana Pinheiro Campos Estruturas de Dados Prof. Gustavo Willam Pereira Créditos: Profa. Juliana Pinheiro Campos Árvores Conceitos Árvores binárias Árvores binárias de pesquisa Árvores binárias balanceadas Árvores ESTRUTURAS

Leia mais

Análises Geração RI (representação intermediária) Código Intermediário

Análises Geração RI (representação intermediária) Código Intermediário Front-end Análises Geração RI (representação intermediária) Código Intermediário Back-End Geração de código de máquina Sistema Operacional? Conjunto de Instruções do processador? Ambiente de Execução O

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

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008 Tabela de Símbolos Análise Semântica A Tabela de Símbolos Fabiano Baldo Após a árvore de derivação, a tabela de símbolos é o principal atributo herdado em um compilador. É possível, mas não necessário,

Leia mais

Um processo sob UNIX ocupa uma área de memória formada basicamente por 3 partes:

Um processo sob UNIX ocupa uma área de memória formada basicamente por 3 partes: Processos O UNIX é um sistema operacional multitarefa (suporta multiprogramação). Isso significa que ele é capaz de gerenciar a execução simultânea de vários programas. O termo processo é usado para caracterizar

Leia mais

3 Classificação. 3.1. Resumo do algoritmo proposto

3 Classificação. 3.1. Resumo do algoritmo proposto 3 Classificação Este capítulo apresenta primeiramente o algoritmo proposto para a classificação de áudio codificado em MPEG-1 Layer 2 em detalhes. Em seguida, são analisadas as inovações apresentadas.

Leia mais

Comandos Sequenciais if else, e Switch

Comandos Sequenciais if else, e Switch Introdução à Programação Comandos Sequenciais if else, e Switch 1º ano - ESI e IGE (2011/2012) Engenheiro Anilton Silva Fernandes (afernandes@unipiaget.cv) O computador pensa? Muitas vezes utiliza-se a

Leia mais

Orientação a Objetos

Orientação a Objetos Orientação a Objetos 1. Sobrecarga (Overloading) Os clientes dos bancos costumam consultar periodicamente informações relativas às suas contas. Geralmente, essas informações são obtidas através de extratos.

Leia mais

Comparativo de desempenho do Pervasive PSQL v11

Comparativo de desempenho do Pervasive PSQL v11 Comparativo de desempenho do Pervasive PSQL v11 Um artigo Pervasive PSQL Setembro de 2010 Conteúdo Resumo executivo... 3 O impacto das novas arquiteturas de hardware nos aplicativos... 3 O projeto do Pervasive

Leia mais

IBM1018 Física Básica II FFCLRP USP Prof. Antônio Roque Aula 6. O trabalho feito pela força para deslocar o corpo de a para b é dado por: = =

IBM1018 Física Básica II FFCLRP USP Prof. Antônio Roque Aula 6. O trabalho feito pela força para deslocar o corpo de a para b é dado por: = = Energia Potencial Elétrica Física I revisitada 1 Seja um corpo de massa m que se move em linha reta sob ação de uma força F que atua ao longo da linha. O trabalho feito pela força para deslocar o corpo

Leia mais

Introdução a Java. Hélder Nunes

Introdução a Java. Hélder Nunes Introdução a Java Hélder Nunes 2 Exercício de Fixação Os 4 elementos básicos da OO são os objetos, as classes, os atributos e os métodos. A orientação a objetos consiste em considerar os sistemas computacionais

Leia mais

GUIA DE FUNCIONAMENTO DA UNIDADE CURRICULAR

GUIA DE FUNCIONAMENTO DA UNIDADE CURRICULAR Curso Engenharia Informática Ano letivo 2012-2013 Unidade Curricular Arquitectura de Computadores ECTS 6 Regime Obrigatório Ano 2º Semestre 2ºsem Horas de trabalho globais Docente (s) Luis Figueiredo Total

Leia mais

Tutorial: Programando no Linux

Tutorial: Programando no Linux UECE Universidade Estadual do Ceará CCT Centro de Ciências e Tecnologia Curso de Ciência da Computação Tutorial: Programando no Linux Alunos: Henrique Neto e João Gonçalves Professora: Ana Luiza E-mails:

Leia mais

Árvores Binárias de Busca

Árvores Binárias de Busca Árvores Binárias de Busca Uma Árvore Binária de Busca T (ABB) ou Árvore Binária de Pesquisa é tal que ou T = 0 e a árvore é dita vazia ou seu nó contém uma chave e: 1. Todas as chaves da sub-árvore esquerda

Leia mais

MÓDULO 6 INTRODUÇÃO À PROBABILIDADE

MÓDULO 6 INTRODUÇÃO À PROBABILIDADE MÓDULO 6 INTRODUÇÃO À PROBBILIDDE Quando estudamos algum fenômeno através do método estatístico, na maior parte das vezes é preciso estabelecer uma distinção entre o modelo matemático que construímos para

Leia mais

Ministério da Educação Secretaria de Educação Profissional e Tecnológica Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Sul

Ministério da Educação Secretaria de Educação Profissional e Tecnológica Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Sul QUESTÃO: 29 Além da alternativa a estar correta a alternativa e também pode ser compreendida como correta. Segundo a definição de diversos autores, a gerência de falhas, detecta, isola, notifica e corrige

Leia mais

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br Introdução O computador como ferramenta indispensável: Faz parte das nossas vidas; Por si só não faz nada de útil; Grande capacidade de resolução

Leia mais

INF 1620 P1-10/04/02 Questão 1 Nome:

INF 1620 P1-10/04/02 Questão 1 Nome: INF 1620 P1-10/04/02 Questão 1 Considere uma disciplina que adota o seguinte critério de aprovação: os alunos fazem duas provas (P1 e P2) iniciais; se a média nessas duas provas for maior ou igual a 5.0,

Leia mais

Alocação dinâmica de memória

Alocação dinâmica de memória Alocação dinâmica de memória Jander Moreira 1 Primeiras palavras Na solução de problemas por meio algoritmos ou programas, é comum surgir a necessidade de manter todo o conjunto de dados a ser processado

Leia mais

Projeção ortográfica de modelos com elementos paralelos e oblíquos

Projeção ortográfica de modelos com elementos paralelos e oblíquos A U L A Projeção ortográfica de modelos com elementos paralelos e oblíquos Introdução Você já sabe que peças da área da Mecânica têm formas e elementos variados. Algumas apresentam rebaixos, outras rasgos,

Leia mais

RESOLUÇÃO DAS QUESTÕES DE RACIOCÍNIO LÓGICO-MATEMÁTICO

RESOLUÇÃO DAS QUESTÕES DE RACIOCÍNIO LÓGICO-MATEMÁTICO RESOLUÇÃO DAS QUESTÕES DE RACIOCÍNIO LÓGICO-MATEMÁTICO Caro aluno, Disponibilizo abaixo a resolução das questões de Raciocínio Lógico- Matemático das provas para os cargos de Analista do TRT/4ª Região

Leia mais

Estrutura de Dados Básica

Estrutura de Dados Básica Estrutura de Dados Básica Professor: Osvaldo Kotaro Takai. Aula 7: Recursividade O objetivo desta aula é apresentar o conceito de recursão para solução de problemas. A recursão é uma técnica de programação

Leia mais

EXEMPLO DE COMO FAZER UMA MALA DIRETA

EXEMPLO DE COMO FAZER UMA MALA DIRETA EXEMPLO DE COMO FAZER UMA MALA DIRETA OBS: Para esta nota de aula foi utilizada como referência: Apostila Mala Direta Santos, Jorge Rodrigues dos. Foram adaptados os comando para utilizar mala direta no

Leia mais

481040 - Programador/a de Informática

481040 - Programador/a de Informática 481040 - Programador/a de Informática UFCD - 0770 Dispositivos e periféricos Sessão 4 SUMÁRIO Disco Rígido; Sistema de ficheiros Uma unidade de disco rígido é composta por um conjunto de discos sobrepostos,

Leia mais

ARQUITETURA DE COMPUTADORES - 1866

ARQUITETURA DE COMPUTADORES - 1866 6.7 Operações com as Memórias: Já sabemos, conforme anteriormente citado, que é possível realizar duas operações em uma memória: Escrita (write) armazenar informações na memória; Leitura (read) recuperar

Leia mais

PROPRIEDADES DOS DETERMINANTES E O CÁLCULO DA ÁREA DE TRIÂN- GULOS: EXEMPLOS SIGNIFICATIVOS

PROPRIEDADES DOS DETERMINANTES E O CÁLCULO DA ÁREA DE TRIÂN- GULOS: EXEMPLOS SIGNIFICATIVOS A RTIGO PROPRIEDADES DOS DETERMINANTES E O CÁLCULO DA ÁREA DE TRIÂN- GULOS: EXEMPLOS SIGNIFICATIVOS Fábio Marson Ferreira e Walter Spinelli Professores do Colégio Móbile, São Paulo Recentemente nos desafiamos

Leia mais

OPERADORES E ESTRUTURAS DE CONTROLE

OPERADORES E ESTRUTURAS DE CONTROLE OPERADORES E ESTRUTURAS DE CONTROLE 3.1 Operadores Os operadores indicam o tipo de operação matemática que será executada gerando novos valores a partir de um ou mais operadores. São muito utilizados em

Leia mais

BARRAMENTO DO SISTEMA

BARRAMENTO DO SISTEMA BARRAMENTO DO SISTEMA Memória Principal Processador Barramento local Memória cachê/ ponte Barramento de sistema SCSI FireWire Dispositivo gráfico Controlador de vídeo Rede Local Barramento de alta velocidade

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

Introdução a Programação. Ponteiros e Strings, Alocação Dinâmica

Introdução a Programação. Ponteiros e Strings, Alocação Dinâmica Introdução a Programação Ponteiros e Strings, Alocação Dinâmica Tópicos da Aula Hoje aprenderemos a relação entre ponteiros e strings Ponteiros para strings X Vetores de Caracteres Vetores de ponteiros

Leia mais

Programação de Computadores I. Ponteiros

Programação de Computadores I. Ponteiros Ponteiros Prof. Edwar Saliba Júnior Outubro de 2012 Unidade 13 Ponteiros 1 Identificadores e Endereços Na linguagem C, uma declaração de variável faz associação entre um identificador e endereços de memória;

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

Organização e Arquitetura de Computadores I

Organização e Arquitetura de Computadores I Organização e Arquitetura de Computadores I Caminho de Dados Slide 1 Sumário Introdução Convenções Lógicas de Projeto Construindo um Caminho de Dados O Controle da ULA Projeto da Unidade de Controle Principal

Leia mais

Leandro Ramos RAID. www.professorramos.com

Leandro Ramos RAID. www.professorramos.com Leandro Ramos RAID www.professorramos.com RAID RAID significa Redundant Array of Independent Disks. Em bom português, significa Matriz Redundante de Discos Independentes. Apesar do nome ser complicado,

Leia mais

Computadores de Programação (MAB353)

Computadores de Programação (MAB353) Computadores de Programação (MAB353) Aula 19: Visão geral sobre otimização de programas 06 de julho de 2010 1 2 3 Características esperadas dos programas O primeiro objetivo ao escrever programas de computador

Leia mais

Microsoft Project 2003

Microsoft Project 2003 Microsoft Project 2003 1 [Módulo 4] Microsoft Project 2003 2 Definindo durações Inter-relacionamentorelacionamento Caminho crítico Microsoft Project 2003 3 1 Duração das Atividades Microsoft Project 2003

Leia mais

Processamento de Dados

Processamento de Dados Processamento de Dados Execução de Programas Os computadores não entendem nada além de comandos, dados e endereços escritos em linguagem binária, também chamada de linguagem de baixo nível. Ela utiliza

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

Escalonamento no Linux e no Windows NT/2000/XP

Escalonamento no Linux e no Windows NT/2000/XP Escalonamento no Linux e no Windows NT/2000/XP 1 Escalonamento no Linux Os requisitos do escalonador do Linux eram: Apresentar boa performance em programas interativos, mesmo com carga elevada; Distribuir

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

10 DICAS DE TECNOLOGIA PARA AUMENTAR SUA PRODUTIVIDADE NO TRABALHO

10 DICAS DE TECNOLOGIA PARA AUMENTAR SUA PRODUTIVIDADE NO TRABALHO 10 DICAS DE TECNOLOGIA PARA AUMENTAR SUA PRODUTIVIDADE NO TRABALHO UMA DAS GRANDES FUNÇÕES DA TECNOLOGIA É A DE FACILITAR A VIDA DO HOMEM, SEJA NA VIDA PESSOAL OU CORPORATIVA. ATRAVÉS DELA, ELE CONSEGUE

Leia mais

Arquitetura de Rede de Computadores

Arquitetura de Rede de Computadores TCP/IP Roteamento Arquitetura de Rede de Prof. Pedro Neto Aracaju Sergipe - 2011 Ementa da Disciplina 4. Roteamento i. Máscara de Rede ii. Sub-Redes iii. Números Binários e Máscara de Sub-Rede iv. O Roteador

Leia mais

BUSCA EM LISTAS LISTAS SEQÜENCIAIS, LISTAS SIMPLESMENTE E DUPLAMENTE ENCADEADAS E LISTAS CIRCULARES

BUSCA EM LISTAS LISTAS SEQÜENCIAIS, LISTAS SIMPLESMENTE E DUPLAMENTE ENCADEADAS E LISTAS CIRCULARES BUSCA EM LISTAS LISTAS SEQÜENCIAIS, LISTAS SIMPLESMENTE E DUPLAMENTE ENCADEADAS E LISTAS CIRCULARES ALGORITMOS DE BUSCA EM LISTAS COM ALOCAÇÃO SEQÜENCIAL Busca em Listas Lineares A operação de busca é

Leia mais

Geração e Otimização de Código

Geração e Otimização de Código Geração e Otimização de Código Representação de código intermediária Código de três endereços, P-código Técnicas para geração de código Otimização de código Prof. Thiago A. S. Pardo 1 Estrutura geral de

Leia mais

Organização e Arquitetura de Computadores

Organização e Arquitetura de Computadores Organização e Arquitetura de Computadores MemóriaVirtual Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno Gerência de memória convencional Divide um programa em unidades menores Partes

Leia mais

Cálculo utilizando variáveis do tipo DATA

Cálculo utilizando variáveis do tipo DATA Cálculo utilizando variáveis do tipo DATA Pré requisitos: Elaboração de questionário Análise de resultados Visões: relatórios multimídia Publicação de questionário na internet O uso de variáveis do tipo

Leia mais

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 10

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 10 ORGANIZAÇÃO DE COMPUTADORES MÓDULO 10 Índice 1. A Organização do Computador - Continuação...3 1.1. Memória Primária - II... 3 1.1.1. Memória cache... 3 1.2. Memória Secundária... 3 1.2.1. Hierarquias de

Leia mais

Prof. Rafael Gross. rafael.gross@fatec.sp.gov.br

Prof. Rafael Gross. rafael.gross@fatec.sp.gov.br Prof. Rafael Gross rafael.gross@fatec.sp.gov.br Todo protocolo define um tipo de endereçamento para identificar o computador e a rede. O IP tem um endereço de 32 bits, este endereço traz o ID (identificador)

Leia mais

Tutorial de Matlab Francesco Franco

Tutorial de Matlab Francesco Franco Tutorial de Matlab Francesco Franco Matlab é um pacote de software que facilita a inserção de matrizes e vetores, além de facilitar a manipulação deles. A interface segue uma linguagem que é projetada

Leia mais

Operador de Computador. Informática Básica

Operador de Computador. Informática Básica Operador de Computador Informática Básica Instalação de Software e Periféricos Podemos ter diversos tipos de software que nos auxiliam no desenvolvimento das nossas tarefas diárias, seja ela em casa, no

Leia mais

Backup. Permitir a recuperação de sistemas de arquivo inteiros de uma só vez. Backup é somente uma cópia idêntica de todos os dados do computador?

Backup. Permitir a recuperação de sistemas de arquivo inteiros de uma só vez. Backup é somente uma cópia idêntica de todos os dados do computador? Backup O backup tem dois objetivos principais: Permitir a recuperação de arquivos individuais é a base do típico pedido de recuperação de arquivo: Um usuário apaga acidentalmente um arquivo e pede que

Leia mais

A4 Projeto Integrador e Lista de Jogos

A4 Projeto Integrador e Lista de Jogos A4 Projeto Integrador e Lista de Jogos 1ª ETAPA PROJETO INTEGRADOR (2 pontos na A4) Como discutido em sala de aula, a disciplina de algoritmos I também fará parte do projeto integrador, para cada grupo

Leia mais

Computação II Orientação a Objetos

Computação II Orientação a Objetos Computação II Orientação a Objetos Fabio Mascarenhas - 2014.1 http://www.dcc.ufrj.br/~fabiom/java Introdução Esse não é um curso de Java! O objetivo é aprender os conceitos da programação orientada a objetos,

Leia mais

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

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

Leia mais

Desenvolvendo Websites com PHP

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

Leia mais

Soluções Nível 1 5 a e 6 a séries (6º e 7º anos) do Ensino Fundamental

Soluções Nível 1 5 a e 6 a séries (6º e 7º anos) do Ensino Fundamental a e 6 a séries (6º e 7º anos) do Ensino Fundamental 1. (alternativa C) Os números 0,01 e 0,119 são menores que 0,12. Por outro lado, 0,1 e 0,7 são maiores que 0,. Finalmente, 0,29 é maior que 0,12 e menor

Leia mais

Excel Planilhas Eletrônicas

Excel Planilhas Eletrônicas Excel Planilhas Eletrônicas Capitulo 1 O Excel é um programa de cálculos muito utilizado em empresas para controle administrativo, será utilizado também por pessoas que gostam de organizar suas contas

Leia mais

Introdução a Informática. Prof.: Roberto Franciscatto

Introdução a Informática. Prof.: Roberto Franciscatto Introdução a Informática Prof.: Roberto Franciscatto 2.1 CONCEITO DE BIT O computador só pode identificar a informação através de sua elementar e restrita capacidade de distinguir entre dois estados: 0

Leia mais

Conceitos Importantes:

Conceitos Importantes: Conceitos Importantes: Variáveis: Por Flávia Pereira de Carvalho, 2007 i O bom entendimento do conceito de variável é fundamental para elaboração de algoritmos, consequentemente de programas. Uma variável

Leia mais

17 - Funções e Procedimentos em C Programação Modular

17 - Funções e Procedimentos em C Programação Modular 17 - Funções e Procedimentos em C Programação Modular Unesp Campus de Guaratinguetá Curso de Programação Computadores Prof. Aníbal Tavares Profa. Cassilda Ribeiro Ministrado por: Prof. André Amarante 17

Leia mais

Java. Marcio de Carvalho Victorino www.dominandoti.eng.br

Java. Marcio de Carvalho Victorino www.dominandoti.eng.br Java Marcio de Carvalho Victorino www.dominandoti.eng.br 3. Considere as instruções Java abaixo: int cont1 = 3; int cont2 = 2; int cont3 = 1; cont1 += cont3++; cont1 -= --cont2; cont3 = cont2++; Após a

Leia mais