Este pdf contém o código, em linguagem C, de 6 ficheiros.

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

Download "Este pdf contém o código, em linguagem C, de 6 ficheiros."

Transcrição

1 Este pdf contém o código, em linguagem C, de 6 ficheiros. Os 3 primeiros ficheiros correspondem à solução do exercício 3 do capítulo 4 (solução para o problema do buffer limitado utilizando apenas 2 semáforos). O 1º ficheiro cria e liberta os recursos (semáforos e memória partilhada). O 2º ficheiro armazena informação no buffer limitado O 3º ficheiro retira informação do buffer. Os 3 últimos ficheiros são também uma solução para o problema do buffer limitado mas utilizando 3 semáforos. O 1º ficheiro cria e liberta os recursos (semáforos e memória partilhada). O 2º ficheiro armazena informação no buffer limitado O 3º ficheiro retira informação do buffer.

2 #include <stdio.h> #include <sys/ipc.h> #include <sys/shm.h> #include <sys/sem.h> #define SHM_KEY1 0x #define SHM_KEY2 0x #define SHM_KEY3 0x #define SHM_KEY4 0x #define SHM_KEY5 0x #define SEM_KEY 0x main(){ int semid, shmid_buffer, shmid_flag,shmid_turn,shmid_in,shmid_out, *shmaddr_buffer, *shmaddr_flag,*shmaddr_turn,*shmaddr_in,*shmaddr_out, i; union semun {int val; arg; char resp[10]; //criar uma zona de memória partilhada, para servir de buffer de //10 inteiros if((shmid_buffer=shmget(shm_key1,10*sizeof(int),0677 IPC_CREAT IPC_EXC L))==-1){ if((shmaddr_buffer = (int*)shmat(shmid_buffer, NULL,0))==(int*)-1){ //variáveis partilhadas usadas para controlar o acesso à secção //crítica //criar uma zona de memória partilhada, para armazenar o valor de //2 flags ==-1){ -1){ if((shmid_flag=shmget(shm_key2,2*sizeof(int),0677 IPC_CREAT IPC_EXCL)) if((shmaddr_flag = (int*)shmat(shmid_flag, NULL,0))==(int*)-1){ //inicialização das flags a falso for(i=0;i<=1;i++) *(shmaddr_flag+i)=0; //criar uma zona de memória partilhada, para armazenar o valor de //turn if((shmid_turn=shmget(shm_key3,sizeof(int),0677 IPC_CREAT IPC_EXCL))== if((shmaddr_turn = (int*)shmat(shmid_turn, NULL,0))==(int*)-1){

3 shmctl(shmid_turn, IPC_RMID, NULL); *shmaddr_turn=0; ){ 1){ //criar uma zona de memória partilhada, para armazenar o valor de //in (posição onde será colocado o novo item produzido) if((shmid_in=shmget(shm_key4,sizeof(int),0677 IPC_CREAT IPC_EXCL))==-1 shmctl(shmid_turn, IPC_RMID, NULL); if((shmaddr_in = (int*)shmat(shmid_in, NULL,0))==(int*)-1){ shmctl(shmid_turn, IPC_RMID, NULL); shmctl(shmid_in, IPC_RMID, NULL); *shmaddr_in=0; //criar uma zona de memória partilhada, para armazenar o valor de //out (posição de onde será retirado o próximo item a ser //consumido) if((shmid_out=shmget(shm_key5,sizeof(int),0677 IPC_CREAT IPC_EXCL))==- shmctl(shmid_turn, IPC_RMID, NULL); shmctl(shmid_in, IPC_RMID, NULL); if((shmaddr_out = (int*)shmat(shmid_out, NULL,0))==(int*)-1){ shmctl(shmid_turn, IPC_RMID, NULL); shmctl(shmid_in, IPC_RMID, NULL); shmctl(shmid_out, IPC_RMID, NULL); *shmaddr_out=0; if((semid=semget(sem_key, 2, 0700 IPC_CREAT IPC_EXCL))==-1){ perror("semget"); shmctl(shmid_turn, IPC_RMID, NULL); shmctl(shmid_in, IPC_RMID, NULL); shmctl(shmid_out, IPC_RMID, NULL); arg.val =0; if(semctl(semid,0,setval,arg)==-1){ perror("semctl");

4 shmctl(shmid_turn, IPC_RMID, NULL); shmctl(shmid_in, IPC_RMID, NULL); shmctl(shmid_out, IPC_RMID, NULL); semctl(semid, 0, IPC_RMID, NULL); arg.val =10; if(semctl(semid,1,setval,arg)==-1){ perror("semctl"); shmctl(shmid_turn, IPC_RMID, NULL); shmctl(shmid_in, IPC_RMID, NULL); shmctl(shmid_out, IPC_RMID, NULL); semctl(semid, 0, IPC_RMID, NULL); do{ printf("quer libertar os recursos? (S/N)\n"); scanf("%s",resp); while((resp[0]!='s')&&(resp[0]!='s')); shmctl(shmid_turn, IPC_RMID, NULL); shmctl(shmid_in, IPC_RMID, NULL); shmctl(shmid_out, IPC_RMID, NULL); semctl(semid, 0, IPC_RMID, NULL);

5 #include <stdio.h> #include <sys/ipc.h> #include <sys/shm.h> #include <sys/sem.h> #define SHM_KEY1 0x #define SHM_KEY2 0x #define SHM_KEY3 0x #define SHM_KEY4 0x #define SHM_KEY5 0x #define SEM_KEY 0x main(){ int semid, shmid_buffer,shmid_flag,shmid_turn,shmid_in, *shmaddr_buffer, *shmaddr_flag, *shmaddr_turn, *shmaddr_in, i; struct sembuf sop; if ((shmid_buffer=shmget (SHM_KEY1, 10*sizeof(int), 0))==-1){ if((shmaddr_buffer = (int*)shmat(shmid_buffer, NULL,0))==(int*)-1){ if ((shmid_flag=shmget (SHM_KEY2, 2*sizeof(int), 0))==-1){ if((shmaddr_flag = (int*)shmat(shmid_flag, NULL,0))==(int*)-1){ if ((shmid_turn=shmget (SHM_KEY3, sizeof(int), 0))==-1){ if((shmaddr_turn = (int*)shmat(shmid_turn, NULL,0))==(int*)-1){ if ((shmid_in=shmget (SHM_KEY4, sizeof(int), 0))==-1){ if((shmaddr_in = (int*)shmat(shmid_in, NULL,0))==(int*)-1){ if((semid=semget(sem_key, 1, 0))==-1){ perror("semget"); sop.sem_num=1; sop.sem_op=-1;

6 semop(semid, &sop, 1); shmaddr_flag[0]=1; *shmaddr_turn=1; while((shmaddr_flag[1]) && (*shmaddr_turn==1)); printf("introduza o valor que quer armazenar no buffer\n"); scanf("%d",&shmaddr_buffer[*shmaddr_in]); *shmaddr_in=(*shmaddr_in+1)%10; shmaddr_flag[0]=0; sop.sem_num=0; sop.sem_op=1; semop(semid, &sop, 1);

7 #include <stdio.h> #include <sys/ipc.h> #include <sys/shm.h> #include <sys/sem.h> #define SHM_KEY1 0x #define SHM_KEY2 0x #define SHM_KEY3 0x #define SHM_KEY4 0x #define SHM_KEY5 0x #define SEM_KEY 0x main(){ int semid, shmid_buffer,shmid_flag,shmid_turn,shmid_out, *shmaddr_buffer, *shmaddr_flag, *shmaddr_turn,*shmaddr_out, i; struct sembuf sop; if ((shmid_buffer=shmget (SHM_KEY1, 10*sizeof(int), 0))==-1){ if((shmaddr_buffer = (int*)shmat(shmid_buffer, NULL,0))==(int*)-1){ if ((shmid_flag=shmget (SHM_KEY2, 2*sizeof(int), 0))==-1){ if((shmaddr_flag = (int*)shmat(shmid_flag, NULL,0))==(int*)-1){ if ((shmid_turn=shmget (SHM_KEY3, sizeof(int), 0))==-1){ if((shmaddr_turn = (int*)shmat(shmid_turn, NULL,0))==(int*)-1){ if ((shmid_out=shmget (SHM_KEY5, sizeof(int), 0))==-1){ if((shmaddr_out = (int*)shmat(shmid_out, NULL,0))==(int*)-1){ if((semid=semget(sem_key, 1, 0))==-1){ perror("semget");

8 sop.sem_num=0; sop.sem_op=-1; semop(semid, &sop, 1); shmaddr_flag[1]=1; *shmaddr_turn=0; while((shmaddr_flag[0]) && (*shmaddr_turn==0)); printf("o elemento retirado do buffer tem o valor %d\n",shmaddr_buffer [*shmaddr_out]); *shmaddr_out=(*shmaddr_out+1)%10; shmaddr_flag[1]=0; sop.sem_num=1; sop.sem_op=1; semop(semid, &sop, 1);

9 #include<stdio.h> #include<sys/ipc.h> #include<sys/shm.h> #include<sys/sem.h> #define FULL 0 #define EMPTY 1 #define MUTEX 2 #define SHM_KEY1 0x #define SHM_KEY2 0x #define SHM_KEY3 0x #define SEM_KEY 0x main(){ int shmid_buffer,shmid_in,shmid_out,semid,*shmaddr_buffer,*shmaddr_in, *shmaddr_out; union semun {int val; arg; char resp[10]; if((shmid_buffer=shmget(shm_key1,10*sizeof(int),0600 IPC_CREAT IPC_EXC L))==-1){ if((shmaddr_buffer=(int*)shmat(shmid_buffer,null,0))==(int*)-1){ exit(2); ){ if((shmid_in=shmget(shm_key2,sizeof(int),0600 IPC_CREAT IPC_EXCL))==-1 exit(3); if((shmaddr_in=(int*)shmat(shmid_in,null,0))==(int*)-1){ exit(4); 1){ if((shmid_out=shmget(shm_key3,sizeof(int),0600 IPC_CREAT IPC_EXCL))==- exit(5); if((shmaddr_out=(int*)shmat(shmid_out,null,0))==(int*)-1){ shmctl(shmid_out,ipc_rmid,null); exit(6);

10 *shmaddr_in=0; *shmaddr_out=0; if ((semid=semget(sem_key,3,0700 IPC_CREAT IPC_EXCL))==-1) { perror("semget"); shmctl(shmid_out,ipc_rmid,null); exit(7); arg.val=0; if ((semctl(semid,full,setval,arg))==-1){ perror("semctl"); shmctl(shmid_out,ipc_rmid,null); semctl(semid,0,ipc_rmid,null); exit(8); arg.val=10; if ((semctl(semid,empty,setval,arg))==-1){ perror("semctl"); shmctl(shmid_out,ipc_rmid,null); semctl(semid,0,ipc_rmid,null); exit(9); arg.val=1; if ((semctl(semid,mutex,setval,arg))==-1){ perror("semctl"); shmctl(shmid_out,ipc_rmid,null); semctl(semid,0,ipc_rmid,null); exit(10); do{ printf("quer libertar os recursos? (S/N)\n"); scanf("%s",resp); while((resp[0]!='s')&&(resp[0]!='s')); shmctl(shmid_out,ipc_rmid,null); semctl(semid,0,ipc_rmid,null);

11 #include<stdio.h> #include<sys/ipc.h> #include<sys/shm.h> #include<sys/sem.h> #define FULL 0 #define EMPTY 1 #define MUTEX 2 #define SHM_KEY1 0x #define SHM_KEY3 0x #define SEM_KEY 0x main(){ int shmid_buffer,shmid_in,semid,i,*shmaddr_buffer,*shmaddr_in=0, val; struct sembuf sop; if((shmid_buffer=shmget(shm_key1,10*sizeof(int),0))==-1){ if((shmaddr_buffer=(int*)shmat(shmid_buffer,null,0))==(int*)-1){ exit(2); if((shmid_in=shmget(shm_key3,sizeof(int),0))==-1){ exit(3); if((shmaddr_in=(int*)shmat(shmid_in,null,0))==(int*)-1){ exit(4); if ((semid=semget(sem_key,3,0))==-1) { perror("semget"); exit(5); sop.sem_num=empty; sop.sem_op=-1; printf("introduza o valor a armazenar: \n"); scanf("%d",&val); sop.sem_num=mutex; sop.sem_op=-1; shmaddr_buffer[*shmaddr_in]= val; *shmaddr_in=(*shmaddr_in+1)%10; sop.sem_num=mutex;

12 sop.sem_op=1; sop.sem_num=full; sop.sem_op=1;

13 #include<stdio.h> #include<sys/ipc.h> #include<sys/shm.h> #include<sys/sem.h> #define FULL 0 #define EMPTY 1 #define MUTEX 2 #define SHM_KEY1 0x #define SHM_KEY2 0x #define SEM_KEY 0x main(){ int shmid_buffer,shmid_out,semid,*shmaddr_buffer,*shmaddr_out=0; struct sembuf sop; if((shmid_buffer=shmget(shm_key1,10*sizeof(int),0))==-1){ if((shmaddr_buffer=(int*)shmat(shmid_buffer,null,0))==(int*)-1){ exit(2); if((shmid_out=shmget(shm_key2,sizeof(int),0))==-1){ exit(3); if((shmaddr_out=(int*)shmat(shmid_out,null,0))==(int*)-1){ exit(4); if ((semid=semget(sem_key,3,0))==-1) { perror("semget"); exit(5); sop.sem_num=full; sop.sem_op=-1; sop.sem_num=mutex; sop.sem_op=-1; ]); printf("elemento retirado do buffer: %d\n",shmaddr_buffer[*shmaddr_out *shmaddr_out=(*shmaddr_out+1)%10; sop.sem_num=mutex; sop.sem_op=1;

14 sop.sem_num=empty; sop.sem_op=1;

Sincronização e memória compartilhada no Linux

Sincronização e memória compartilhada no Linux Sincronização e memória compartilhada no Linux Memória compartilhada Modelo de memória UNIX Processo aloca (allocate) um segmento no qual deseja compartilhar Processos que desejam acessar o segmento alocado,

Leia mais

Sistemas de Computação Semáforos

Sistemas de Computação Semáforos Sistemas de Computação Semáforos 4/26/18 1 Semáforos Um semáforo simples é uma variável que pode assumir os valores 0 e 1 (semáforo binário). Esta é a forma mais comum Semáforos que podem assumir diversos

Leia mais

- pid do último processo a manipular o semáforo (através de semop/semctl); - o número de processos que estão à espera que o valor do semáforo seja 0.

- pid do último processo a manipular o semáforo (através de semop/semctl); - o número de processos que estão à espera que o valor do semáforo seja 0. Página 1 de 8 Semáforos São variáveis que permitem sincronização entre processos, de modo a evitar race conditions (quando dois ou mais processos necessitam de escrever/ler dados partilhados simultaneamente),cujas

Leia mais

MAC422/5753 Sistemas Operacionais

MAC422/5753 Sistemas Operacionais MAC422/5753 Sistemas Operacionais Prof. Marcel P. Jackowski Aula #8 Sincronização: Semáforos, Barreiras e Monitores Jantar dos Filósofos Cinco filósofos que somente comem e pensam Cada um deles precisa

Leia mais

Pthreads API. Criação de Threads: usando Pthreads

Pthreads API. Criação de Threads: usando Pthreads Pthreads API The POSIX 1003.1-2001 standard defines an application programming interface (API) for writing multithreaded applications. This interface is known more commonly as pthreads. 6.1 Criação de

Leia mais

Semáforos em Unix. Criar um conjunto (vetor) de semáforos: semid = semget ( chave, nsems, flag); onde:

Semáforos em Unix. Criar um conjunto (vetor) de semáforos: semid = semget ( chave, nsems, flag); onde: Semáforos em Unix Criar um conjunto (vetor) de semáforos: onde: semid = semget ( chave, nsems, flag); semid identificador de acesso ao vetor de semáforos. chave identificador global que identifica este

Leia mais

Comunicação entre processos 2ª parte (IPC InterProcess Communication)

Comunicação entre processos 2ª parte (IPC InterProcess Communication) SISTEMAS OERATIVOS 12 Comunicação entre processos 2ª parte (IC Interrocess Communication) Notas: 1. Deve ser criada a biblioteca libnet.a (referente ao código do livro [2] da bibliografia) antes de testar

Leia mais

7. Memória partilhada e sincronização em UNIX

7. Memória partilhada e sincronização em UNIX 7. Memória partilhada e sincronização em UNIX 7.1. Memória partilhada Os sistemas Unix derivados do Unix System V, e outros compatíveis (quase todos), definem serviços que permitem partilhar entre vários

Leia mais

Memória partilhada em Unix SysV

Memória partilhada em Unix SysV Memória partilhada em Unix SysV A forma mais geral de comunicação entre processos é através de memória partilhada. segmento de memoria partilhada Processo A Processo B p q Criação de um segmento de memória

Leia mais

time_t shm_ctime; /* hora da última alteração de atributod da MP através de shmctl + IPC_SET */

time_t shm_ctime; /* hora da última alteração de atributod da MP através de shmctl + IPC_SET */ Página 1 de 6 Memória Partilhada Pedaço de memória virtual que dois ou mais processos podem incluir no seu espaço de endereçamento, permitindo a comunicação entre eles. È o mecanismo mais rápido de comunicação

Leia mais

Inter-process Communication (IPC)

Inter-process Communication (IPC) Inter-process Communication (IPC) Comunicação entre processos (3) Memória Compartilhada (Shared Memory) Memória Compartilhada (Shared Memory) (1) Mecanismo de IPC que cria uma região de memória que pode

Leia mais

Memória Compartilhada (Shared Memory) (1) Memória Compartilhada (2) Memória Compartilhada (3)

Memória Compartilhada (Shared Memory) (1) Memória Compartilhada (2) Memória Compartilhada (3) Memória Compartilhada (Shared Memory) (1) Inter-process Communication (IPC) Comunicação entre processos (2) Memória Compartilhada (Shared Memory) Mecanismo de IPC que cria uma região de memória que pode

Leia mais

Semáforos. Walter Fetter Lages.

Semáforos. Walter Fetter Lages. Semáforos Walter Fetter Lages w.fetter@ieee.org Universidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Engenharia Elétrica ENG04008 Sistemas de Tempo Real Copyright (c) Walter Fetter

Leia mais

Comunicação entre Processos Memória Compartilhada

Comunicação entre Processos Memória Compartilhada Comunicação entre Processos Memória Compartilhada 3/23/17 1 Métodos de comunicação entre processos Memória compartilhada Sinais Pipes Troca de mensagens Memória Compartilhada Memória compartilhada Permite

Leia mais

Comunicação entre Processos Memória Compartilhada

Comunicação entre Processos Memória Compartilhada Comunicação entre Processos Memória Compartilhada 8/30/18 1 Métodos de comunicação entre processos Memória compartilhada Sinais Pipes Troca de mensagens Memória Compartilhada Memória compartilhada Permite

Leia mais

Programação. Cap. 12 Gestão de Memória Dinâmica

Programação. Cap. 12 Gestão de Memória Dinâmica Programação Engenharia Informática (11543) 1º ano, 1º semestre Tecnologias e Sistemas de Informação (6619) 1º ano, 1º semestre Cap. 12 Gestão de Memória Dinâmica Sumário : Utilização de memória Alocação

Leia mais

A regra de acesso aos dados de uma fila é a seguinte: O primeiro elemento que entra (na fila) é o primeiro que sai (FIFO first in, first out).

A regra de acesso aos dados de uma fila é a seguinte: O primeiro elemento que entra (na fila) é o primeiro que sai (FIFO first in, first out). Fila Algumas aplicações impõem regras de acesso às informações armazenados em estruturas de dados, restringindo como os dados são inseridos e removidos da estrutura. A fila, também conhecida como QUEUE,

Leia mais

Programação Mestrado Integrado em Engenharia Aeronáutica 1º ano, 1º semestre. T. 11 Gestão de Memória Dinâmica

Programação Mestrado Integrado em Engenharia Aeronáutica 1º ano, 1º semestre. T. 11 Gestão de Memória Dinâmica Programação Mestrado Integrado em Engenharia Aeronáutica 1º ano, 1º semestre T. 11 Gestão de Memória Dinâmica 1 Sumário : Utilização de memória Alocação Estática de Memória Alocação Dinâmica de Memória

Leia mais

Exercícios Avaliativos Memória Compartilhada

Exercícios Avaliativos Memória Compartilhada 1ª Avaliação Faculdades Integradas de Caratinga Sistemas Distribuídos Jacson RC Silva Exercícios Avaliativos Memória Compartilhada Uma posição de memória compartilhada é identificada por uma chave. Essa

Leia mais

Ponteiros. Baseado nos slides do Prof. Mauro.

Ponteiros. Baseado nos slides do Prof. Mauro. Baseado nos slides do Prof. Mauro. A memória do computador é uma sequência de bytes, na qual endereçamos cada um sequencialmente. Como vimos, uma variável é uma região da memória que reservamos para armazenar

Leia mais

Produtor / Consumidor

Produtor / Consumidor Problemas sobre Programação Concorrente Produtor / Consumidor /*+---------------------------------------------------------------------+ Programa 1 : Produtor / Consumidor Descricao : Algoritmo Produtor

Leia mais

1ª versão. #include <stdio.h> #include <string.h> #include <stdlib.h> #define maxdiscos 1000

1ª versão. #include <stdio.h> #include <string.h> #include <stdlib.h> #define maxdiscos 1000 #include #include #include #define maxdiscos 1000 typedef struct { char nomeautor[80]; char nomedisco[100]; int numdiscosvendidos; DISCO; 1ª versão int main() { DISCO listadiscos[maxdiscos];

Leia mais

SISTEMAS OPERATIVOS I

SISTEMAS OPERATIVOS I Instituto Superior de Engenharia do Porto Departamento de Engenharia Informática SISTEMAS OPERATIVOS I Programação Concorrente em Linux: Memória Partilhada e Semáforos Versão 1.03 Maio de 2006 Luís Lino

Leia mais

Universidade de Coimbra Faculdade de Ciências e Tecnologias Departamento de Engenharia Informática. Projecto. Sistemas Operativos 99/00

Universidade de Coimbra Faculdade de Ciências e Tecnologias Departamento de Engenharia Informática. Projecto. Sistemas Operativos 99/00 Universidade de Coimbra Faculdade de Ciências e Tecnologias Departamento de Engenharia Informática Projecto Sistemas Operativos 99/00 Paulo José dos Santos Guilhoto guilhoto@student.dei.uc.pt - Nº 985011444

Leia mais

UNIVERSIDADE DA BEIRA INTERIOR

UNIVERSIDADE DA BEIRA INTERIOR UNIVERSIDADE DA BEIRA INTERIOR Programação e Algoritmos / Programação II 2º Semestre Exame - 1ª chamada Resolução 20/06/2013 1. [2.0 val] Apontadores (Responder esta questão nesta folha e entregar com

Leia mais

Programação 5374 : Engenharia Informática 6638 : Tecnologias e Sistemas de Informação. Cap. 7 Arrays. Arrays

Programação 5374 : Engenharia Informática 6638 : Tecnologias e Sistemas de Informação. Cap. 7 Arrays. Arrays 5374 : Engenharia Informática 6638 : Tecnologias e Sistemas de Informação Cap. 7 Sumário: Classificação de tipos de dados Características gerais de tipos de dados compostos Definição de array (ou tabela)

Leia mais

Programação de Sistemas Carris

Programação de Sistemas Carris Programação de Sistemas Carris Programação de Sistemas Carris : 1/18 Problema (1) A fim de incentivar os alfacinhas a deslocar na cidade de Volvo, a Carris-Companhia de Carris de Ferro de Lisboa decidiu

Leia mais

Métodos Computacionais. Tipos Estruturados

Métodos Computacionais. Tipos Estruturados Métodos Computacionais Tipos Estruturados Tipos Estruturados C oferece tipos primitivos que servem para representar valores simples Reais (float, double), inteiros (int), caracter (char) C oferece também

Leia mais

O comando for permite que um certo trecho de programa seja executado um determinado número de vezes. A forma do comando for é a seguinte:

O comando for permite que um certo trecho de programa seja executado um determinado número de vezes. A forma do comando for é a seguinte: Laço de repetição for e while 12-03-15 Comando for O comando for permite que um certo trecho de programa seja executado um determinado número de vezes. A forma do comando for é a seguinte: for (comandos

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 INSTRUÇÕES DA LINGUAGEM C

PROGRAMAÇÃO INSTRUÇÕES DA LINGUAGEM C PROGRAMAÇÃO INSTRUÇÕES DA LINGUAGEM C 1 2 Repetição 1 Enquanto 'C' é verdadeira Fazer? 3 Repetição 1 Enquanto 'C' é verdadeira Fazer? while (C)?; 4 Enunciado: Construa um algoritmo para mostrar os 100

Leia mais

Apontadores/ponteiros

Apontadores/ponteiros Apontadores/ponteiros 1 Apontadores/ponteiros 1. Um ponteiro pode ser manipulado como sendo um vetor. #include int v[5] = { 10, 20, 30, 40, 50 ; int p, i; p = v; for (i = 1; i < 5; i++) printf

Leia mais

CES-11. Algoritmos e Estruturas de Dados. Carlos Alberto Alonso Sanches Juliana de Melo Bezerra

CES-11. Algoritmos e Estruturas de Dados. Carlos Alberto Alonso Sanches Juliana de Melo Bezerra CES-11 Algoritmos e Estruturas de Dados Carlos Alberto Alonso Sanches Juliana de Melo Bezerra CES-11 Revisão Tipos escalares primitivos Tipos constituídos de uma linguagem Ponteiros Alocação estática versus

Leia mais

Listas (cont.) K&R: Capitulo 6. Lista Simplesmente Ligada IAED, 2012/2013. Conjunto de nós. Cada nó contém. head NULL. typedef struct node {

Listas (cont.) K&R: Capitulo 6. Lista Simplesmente Ligada IAED, 2012/2013. Conjunto de nós. Cada nó contém. head NULL. typedef struct node { Listas (cont.) K&R: Capitulo 6 Lista Simplesmente Ligada Conjunto de nós head NULL Cada nó contém Informação útil Ponteiro para o próimo nó typedef struct node Item item; struct node *net; *link; Item

Leia mais

Estrutura de Dados. Struct (Registro) Lais Farias Alves

Estrutura de Dados. Struct (Registro) Lais Farias Alves Estrutura de Dados Struct (Registro) Lais Farias Alves Conceito de Struct Struct (Registro). Um registro (=record) é uma coleção de várias variáveis, possivelmente de tipos diferentes. Na linguagem C,

Leia mais

Algoritmos e Estruturas de dados

Algoritmos e Estruturas de dados Algoritmos e Estruturas de dados Listas Encadeadas Prof. Dr. Fábio Rodrigues de la Rocha (Listas Encadeadas) 1 / 21 Definição: Anteriormente estudamos listas encadeadas que foram implementadas como vetores

Leia mais

SSC304 Introdução à Programação Para Engenharias. Ponteiros. GE4 Bio

SSC304 Introdução à Programação Para Engenharias. Ponteiros. GE4 Bio Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação Introdução à Para Engenharias s GE4 Bio GE4Bio Grupo de Estudos em Sinais Biológicos Prof.Dr.

Leia mais

ALGORITMOS E ESTRUTURAS DE DADOS CES-11

ALGORITMOS E ESTRUTURAS DE DADOS CES-11 ALGORITMOS E ESTRUTURAS DE DADOS CES-11 Prof. Paulo André Castro pauloac@ita.br Sala 110 Prédio da Computação www.comp.ita.br/~pauloac IECE - ITA Revisão CES-11 Tipos escalares primitivos Tipos constituídos

Leia mais

Linguagem de Programação C. Comandos de Seleção e Desvio

Linguagem de Programação C. Comandos de Seleção e Desvio Cristiano Lehrer Valores Lógicos Em C não existe nenhum tipo específico de dados para armazenar valores lógicos. Em C o valor lógico FALSO é representado por 0 (ZERO). Tudo aquilo que seja diferente de

Leia mais

MATRIZES. Luís Charneca.

MATRIZES. Luís Charneca. MATRIZES Luís Charneca luis.charneca@gmail.com Matrizes - Vectores (1) Vectores nada mais são que matrizes unidimensionais. É importante notar que vectores, matrizes bidimensionais e matrizes de qualquer

Leia mais

Computação I - C Prova /10/ Profs. Adriano Cruz e Valeria Bastos

Computação I - C Prova /10/ Profs. Adriano Cruz e Valeria Bastos Computação I - C Prova 2 2016-2 14/10/2016 - Profs. Adriano Cruz e Valeria Bastos Nome: DRE: Observação: Justifique todas as respostas dadas. Some nte serão aceitas respostas com justificativas. Questão

Leia mais

Introdução à Programação I

Introdução à Programação I Introdução à Programação I Programação Estruturada Álgebra Booleana e Expressões Compostas Material da Prof. Ana Eliza Definição: Chama-se proposição todo o conjunto de palavras ou símbolos que exprimem

Leia mais

UNIVERSIDADE DA BEIRA INTERIOR

UNIVERSIDADE DA BEIRA INTERIOR UNIVERSIDADE DA BEIRA INTERIOR Programação II 1º Semestre Frequência 1 (7 val) Resolução 30/10/2018 1 [1,00 val + 1,00 val] - Memória Dinâmica Considere as seguintes declarações de variáveis: int **V,

Leia mais

Tipos Abstratos de Dados. Estrutura de Dados

Tipos Abstratos de Dados. Estrutura de Dados Tipos Abstratos de Dados Tipo Abstrato de Dados ou TAD Idéia principal: desvincular o tipo de dado (valores e operações) de sua implementação: O que o tipo faz e não como ele faz! Vantagens da desvinculação:

Leia mais

AULA 14 ESTRUTURA DE DADOS

AULA 14 ESTRUTURA DE DADOS AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri Matriz Uma matriz bidimensional é um conjunto de elementos (ou tabela) composta por m linhas e n colunas. Matriz Uma

Leia mais

Introdução à Ciência da Computação I. Alocação Dinâmica. Prof. Claudio Fabiano Motta Toledo

Introdução à Ciência da Computação I. Alocação Dinâmica. Prof. Claudio Fabiano Motta Toledo Introdução à Ciência da Computação I Alocação Dinâmica Prof. Claudio Fabiano Motta Toledo Sumário Funções para alocação de memória Ponteiros para ponteiros 8/12/16 2 Funções para alocação de memória malloc(),

Leia mais

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

Introdução a Programação. Ponteiros e Vetores, Alocação Dinâmica Introdução a Programação Ponteiros e Vetores, Alocação Dinâmica Tópicos da Aula Hoje aprenderemos que existe uma forte relação entre ponteiros e vetores Associação entre ponteiros e vetores Ponteiros constantes

Leia mais

1/22 FICHEIROS BINÁRIOS

1/22 FICHEIROS BINÁRIOS 1/22 FICHEIROS BINÁRIOS Funções para manipulação de ficheiros 2/22 Funções para manipulação de ficheiros fopen abertura de um ficheiro para leitura/entrada e escrita/saída fclose fecho de um ficheiro fwrite

Leia mais

Estruturas. struct são coleções de dados heterogêneos agrupados em uma mesma estrutura de dados. Ex: armazenar as coordenadas (x,y) de um ponto:

Estruturas. struct são coleções de dados heterogêneos agrupados em uma mesma estrutura de dados. Ex: armazenar as coordenadas (x,y) de um ponto: Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação Estruturas Profa Rosana Braga 1 Estruturas struct são coleções de dados heterogêneos agrupados em uma mesma estrutura

Leia mais

1 Escrita de Arquivos Binário

1 Escrita de Arquivos Binário Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Aula prática sobre arquivos binários 1 Escrita de Arquivos Binário Esta aula será sobre escrita e leitura de arquivos binários. Nesta

Leia mais

Programação de Computadores I Arquivos na Linguagem C PROFESSORA CINTIA CAETANO

Programação de Computadores I Arquivos na Linguagem C PROFESSORA CINTIA CAETANO Programação de Computadores I Arquivos na Linguagem C PROFESSORA CINTIA CAETANO Introdução As informações que os programas utilizam são perdidas quando eles são finalizados ou quando o computador é desligado.

Leia mais

Estruturas de Dados Aula 10: Listas (parte 2) 19/04/2011

Estruturas de Dados Aula 10: Listas (parte 2) 19/04/2011 Estruturas de Dados Aula 10: Listas (parte 2) 19/04/2011 Fontes Bibliográficas Livros: Projeto de Algoritmos (Nivio Ziviani): Capítulo 3; Introdução a Estruturas de Dados (Celes, Cerqueira e Rangel): Capítulo

Leia mais

Fundamentos de Programação 1

Fundamentos de Programação 1 Fundamentos de Programação 1 Linguagem C Arquivos Seqüências ou de Texto. Slides 18 Prof. SIMÃO Jean Marcelo SIMÃO 1 Arquivo de Escrita 1 fopen ( nome.txt", "w" ); fputc ( caracter, arquivo); 2 #include

Leia mais

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

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

Leia mais

Alocação de Memória. Lucas Ferrari de Oliveira Professor Adjunto Universidade Federal do Paraná (UFPR)

Alocação de Memória. Lucas Ferrari de Oliveira Professor Adjunto Universidade Federal do Paraná (UFPR) Alocação de Memória Linguagem de Programação Estruturada 1 Alocação dinâmica e ponteiros Lucas Ferrari de Oliveira Professor Adjunto Universidade Federal do Paraná (UFPR) Sumario Introdução Alocação Estática

Leia mais

1/24 FICHEIROS DE TEXTO

1/24 FICHEIROS DE TEXTO 1/24 FICHEIROS DE TEXTO Hardware de entrada/saída 2/24 Hardware de entrada/saída Grande variedade de dispositivos de E/S (Input/Output) - de memória: disco interno e externo, DVD, pen, CD,... - de transmissão:

Leia mais

Memória Compartilhada

Memória Compartilhada Memória Compartilhada Programação com memória compartilhada Nos sistemas multiprocessadores com memória compartilhada, qualquer localização da memória pode ser acessada por qualquer processador Existe

Leia mais

struct Nodo { int struct Nodo struct Nodo typedef struct Nodo *PNodo; int ConstruirLista (PNodo *H, PNodo *T) { int Criar

struct Nodo { int struct Nodo struct Nodo typedef struct Nodo *PNodo; int ConstruirLista (PNodo *H, PNodo *T) { int Criar struct Nodo { int Elemento; struct Nodo *Prox; struct Nodo *Ant; ; typedef struct Nodo *PNodo; Copiar para o ficheiro ListasLigadasDuplas.h e adaptar as funções associadas às seguintes operações: Criar;

Leia mais

Listas Encadeadas. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

Listas Encadeadas. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR Listas Encadeadas David Menotti Algoritmos e Estruturas de Dados II DInf UFPR Listas Encadeadas Características: Tamanho da lista não é pré-definido Cada elemento guarda quem é o próximo Elementos não

Leia mais

Vetores. e o programa deverá ler os valores separadamente:

Vetores. e o programa deverá ler os valores separadamente: Vetores Vetor é um tipo de dado usado para representar uma certa quantidade de variáveis de valores homogêneos (do mesmo tipo). Imagine o seguinte problema: calcular a média das notas da prova de 5 alunos.

Leia mais

Métodos Computacionais. Listas Encadeadas

Métodos Computacionais. Listas Encadeadas Métodos Computacionais Listas Encadeadas Vetores Declaração de vetor implica na especificação de seu tamanho Não se pode aumentar ou diminuir tamanho Outra alternativa no uso de vetores é alocar dinamicamente

Leia mais

13. ALOCAÇÃO DINÂMICA DE MEMÓRIA

13. ALOCAÇÃO DINÂMICA DE MEMÓRIA 787878787878787878787878787878787878787878787878787878 13. ALOCAÇÃO DINÂMICA DE MEMÓRIA Sempre é necessário declarar o número de elementos do array. Mas e se ele for desconhecido? E se ele variar? Pode

Leia mais

PROGRAMAÇÃO INSTRUÇÕES DA LINGUAGEM C

PROGRAMAÇÃO INSTRUÇÕES DA LINGUAGEM C PROGRAMAÇÃO INSTRUÇÕES DA LINGUAGEM C 1 2 Condicional 1 Se 'C' é verdadeira Então?; 3 Condicional 1 Se 'C' é verdadeira Então? if (C)?; 4 Condicional 2 Se 'C' é verdadeira Então? Senão?? 5 Condicional

Leia mais

Programação de Sistemas Array Sistólico

Programação de Sistemas Array Sistólico Programação de Sistemas Array Sistólico Programação de Sistemas Array sistólico : 1/7 Problema (1) [Definição] Um array sistólico 1 é um sistema composto por células dispostas matricialmente. Cada célula

Leia mais

UNIVERSIDADE DA BEIRA INTERIOR

UNIVERSIDADE DA BEIRA INTERIOR UNIVERSIDADE DA BEIRA INTERIOR Programação II 2º Semestre Exame Época Norma (15 val) Resolução 22/06/2018 1 [1,00 val + 1,00 val] - Memória Dinâmica Considere as seguintes declarações de variáveis: int

Leia mais

Aula 3 Alocação Dinâmica

Aula 3 Alocação Dinâmica Aula 3 Alocação Dinâmica Universidade Federal de Santa Maria Colégio Agrícola de Frederico Westphalen Curso Superior de Tecnologia em Sistemas de Internet Prof. Bruno B. Boniati www.cafw.ufsm.br/~bruno

Leia mais

Introdução à Programação

Introdução à Programação Introdução à Programação Aula 08 Ponteiros Edirlei Soares de Lima Endereço de uma Variável Toda variável definida em um programa ocupa uma área de memória; A cada área de memória

Leia mais

1/34 GESTÃO DINÂMICA DE MEMÓRIA

1/34 GESTÃO DINÂMICA DE MEMÓRIA 1/34 GESTÃO DINÂMICA DE MEMÓRIA Memória Estática 2/34 Memória Estática Exemplo #include main() { int V[300], N; do{ printf ( N =? ); scanf ( %d, &N); while ((N < 0) (N > 300); for (i = 0; i

Leia mais

Paralela e Distribuída. Memória Partilhada com Processos

Paralela e Distribuída. Memória Partilhada com Processos Programação Paralela e Distribuída Programação em Memória Partilhada com Processos Paralelismo nos Dados Realizar a mesma operação sobre cada componente dos dados. Paralelismo nos Dados Realizar a mesma

Leia mais

Reinaldo Gomes Alocação Dinâmica

Reinaldo Gomes Alocação Dinâmica Algoritmos e Lógica de Programação Linguagem C Alocação Dinâmica i de Memória Reinaldo Gomes reinaldo@cefet-al.br Alocação Dinâmica Quando declaramos uma variável ou um arranjo, o compilador automaticamente

Leia mais

Alocação Dinâmica em C

Alocação Dinâmica em C Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação Alocação Dinâmica em C Profa Rosana Braga Adaptado de material preparado pela profa Silvana Maria Affonso de Lara

Leia mais

PROGRAMAÇÃO DE MICROPROCESSADORES 2007 / 2008

PROGRAMAÇÃO DE MICROPROCESSADORES 2007 / 2008 Departamento de Engenharia Electrotécnica PROGRAMAÇÃO DE MICROPROCESSADORES 2007 / 2008 Mestrado Integrado em Engenharia Electrotécnica e Computadores 1º ano 1º semestre Testes, condições e ciclos http://tele1.dee.fct.unl.pt

Leia mais

Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação. Estruturas em C

Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação. Estruturas em C Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação Estruturas em C 1 Material preparado pela profa Silvana Maria Affonso de Lara 2º semestre de 2010 ROTEIRO DA AULA

Leia mais

TÉCNICAS DE LINGUAGEM DE PROGRAMAÇÃO

TÉCNICAS DE LINGUAGEM DE PROGRAMAÇÃO TÉCNICAS DE LINGUAGEM DE PROGRAMAÇÃO Ponteiros Definição Variável: área de memória que armazena dados de um certo tipo. Na memória, toda variável possui um endereço. Um Ponteiro é uma variável especial

Leia mais

UNIVERSIDADE ESTADUAL DE PONTA GROSSA SETOR DE CIÊNCIAS AGRÁRIAS E DE TECNOLOGIA DEPARTAMENTO DE INFORMÁTICA JEFERSON AUGUSTO WISBISKI JOÃO DAVI MAYER

UNIVERSIDADE ESTADUAL DE PONTA GROSSA SETOR DE CIÊNCIAS AGRÁRIAS E DE TECNOLOGIA DEPARTAMENTO DE INFORMÁTICA JEFERSON AUGUSTO WISBISKI JOÃO DAVI MAYER UNIVERSIDADE ESTADUAL DE PONTA GROSSA SETOR DE CIÊNCIAS AGRÁRIAS E DE TECNOLOGIA DEPARTAMENTO DE INFORMÁTICA JEFERSON AUGUSTO WISBISKI JOÃO DAVI MAYER MEMÓRIA COMPARTILHADA PONTA GROSSA 2017 JEFERSON AUGUSTO

Leia mais

Algoritmos e Estruturas de Dados I (DCC/003) Variável Indexada Vetor

Algoritmos e Estruturas de Dados I (DCC/003) Variável Indexada Vetor Algoritmos e Estruturas de Dados I (DCC/003) Variável Indexada Vetor 1 Vetores Iremos aprender como armazenar e trabalhar com um grande conjunto de valores no computador Existem várias formas de armazenar

Leia mais

Fundamentos de Programação

Fundamentos de Programação Fundamentos de Programação Linguagem C++: arrays - aula I Bruno Emerson Gurgel Gomes 1 1 Instituto Federal de Educação, Ciência e Tecnologia do RN (IFRN) 2012 Bruno Gomes (IFRN) Fundamentos de Programação

Leia mais

Linguagem C. Programação Estruturada. Estrutura de Dados Heterogêneos. Prof. Luis Nícolas de Amorim Trigo

Linguagem C. Programação Estruturada. Estrutura de Dados Heterogêneos. Prof. Luis Nícolas de Amorim Trigo Programação Estruturada Linguagem C Estrutura de Dados Heterogêneos Prof. Luis Nícolas de Amorim Trigo nicolas.trigo@ifsertao-pe.edu.br Sumário Introdução Struct Declaração Manipulação Vetor de Struct

Leia mais

Ponteiros em C. Adriano Joaquim de Oliveira Cruz 21 de julho de Instituto de Matemática Departamento de Ciência da Computação UFRJ

Ponteiros em C. Adriano Joaquim de Oliveira Cruz 21 de julho de Instituto de Matemática Departamento de Ciência da Computação UFRJ Ponteiros em C Adriano Joaquim de Oliveira Cruz 21 de julho de 2017 Instituto de Matemática Departamento de Ciência da Computação UFRJ 1 Resumo da Seção Introdução Declaração Incrementando e Decrementando

Leia mais

ESTRUTURAS DE DADOS (LEI, LM, LEE) PROGRAMAÇÃO III (LTSI) Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2017/2018

ESTRUTURAS DE DADOS (LEI, LM, LEE) PROGRAMAÇÃO III (LTSI) Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2017/2018 ESTRUTURAS DE DADOS (LEI, LM, LEE) PROGRAMAÇÃO III (LTSI) Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2017/2018 Apontadores O que é um apontador? Variável que contém

Leia mais

Curso de Programação C em Ambientes Linux Aula 05

Curso de Programação C em Ambientes Linux Aula 05 Curso de Programação C em Ambientes Linux Aula 05 Centro de Engenharias da Mobilidade - UFSC Professores Gian Berkenbrock e Giovani Gracioli http://www.lisha.ufsc.br/c+language+course+resources Conteúdo

Leia mais

Semáforos. Walter Fetter Lages

Semáforos. Walter Fetter Lages Semáforos Walter Fetter Lages w.fetter@ieee.org Universidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Engenharia Elétrica ELE213 Programação de Sistemas de Tempo Real Copyright

Leia mais

Programação 5374 : Engenharia Informática 6638 : Tecnologias e Sistemas de Informação. Cap. 11 Estruturas (Structs) Structs

Programação 5374 : Engenharia Informática 6638 : Tecnologias e Sistemas de Informação. Cap. 11 Estruturas (Structs) Structs Programação 5374 : Engenharia Informática 6638 : Tecnologias e Sistemas de Informação Cap. 11 Estruturas (Structs) Structs Sumário: Revisitação à taxonomia de tipos de dados Características gerais de tipos

Leia mais

Sistemas Operacionais: Sincronização entre processos

Sistemas Operacionais: Sincronização entre processos Sistemas Operacionais: Sincronização entre processos Sincronização Programa concorrente Executado por diversos processos Acesso concorrente a dados Paralelismo real x Paralelismo aparente Multiprocessadores:

Leia mais

VETORES ADAPTADO DO MATERIAL DE PROF. L. A. ALVARES

VETORES ADAPTADO DO MATERIAL DE PROF. L. A. ALVARES VETORES ADAPTADO DO MATERIAL DE PROF. L. A. ALVARES SEJA O PROBLEMA: LER 30 VALORES E CALCULAR A MÉDIA ARITMÉTICA DOS MESMOS. Pergunta-se: Quantas variáveis serão necessárias para ler os 30 valores? 30?

Leia mais

Estruturas de Dados. Módulo 11 Pilhas. 9/8/2005 (c) Dept. Informática - PUC-Rio 1

Estruturas de Dados. Módulo 11 Pilhas. 9/8/2005 (c) Dept. Informática - PUC-Rio 1 Estruturas de Dados Módulo 11 Pilhas 9/8/2005 (c) Dept. Informática - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus (2004)

Leia mais

UNIVERSIDADE DA BEIRA INTERIOR

UNIVERSIDADE DA BEIRA INTERIOR UNIVERSIDADE DA BEIRA INTERIOR Programação II 2º Semestre Frequência 1 (8 valores) Resolução 10/04/2019 1 [2,00 val = 1,00 val + 1,00 val] - Memória dinâmica Considere as seguintes declarações de variáveis:

Leia mais

struct LISTA item quant

struct LISTA item quant UNIVERSIDADE SÃO JUDAS TADEU ESTRUTURA DE DADOS - PROF. H. Senger IMPLEMENTAÇÃO DE LISTAS COM VETORES A implementação de listas utilizando vetores é simples. Existe apenas uma pequena questão, com relação

Leia mais

PONTEIROS E LISTAS. Kalinka Regina Lucas Jaquie Castelo Branco

PONTEIROS E LISTAS. Kalinka Regina Lucas Jaquie Castelo Branco PONTEIROS E LISTAS Kalinka Regina Lucas Jaquie Castelo Branco kalinka@icmc.usp.br ALOCAÇÃO DINÂMICA DE MEMÓRIA Pode-se assumir que as variáveis declaradas na cláusula variável do pseudo-código do algoritmo

Leia mais

PROGRAMAÇÃO INSTRUÇÕES DA LINGUAGEM C

PROGRAMAÇÃO INSTRUÇÕES DA LINGUAGEM C PROGRAMAÇÃO INSTRUÇÕES DA LINGUAGEM C 1 Instruções de Entrada Entrada/Leitura de dados Introduzir um valor inteiro/real para X 2 Instruções de Entrada Entrada/Leitura de dados Introduzir um valor inteiro/real

Leia mais

#include <stdio.h> #define nl 3 #define nc 4 main () { int matriz[nl][nc],*p,i; for (i=0, p=&matriz[0][0];i<nl*nc;i++) *(p++)=i+1; for (i=0,

#include <stdio.h> #define nl 3 #define nc 4 main () { int matriz[nl][nc],*p,i; for (i=0, p=&matriz[0][0];i<nl*nc;i++) *(p++)=i+1; for (i=0, 369 #include #define nl 3 #define nc 4 main () { int matriz[nl][nc],*p,i; for (i=0, p=&matriz[0][0];i

Leia mais

! Os primeiros computadores permitiam a execução de apenas um programa de cada vez, com acesso completo aos recursos do sistema

! Os primeiros computadores permitiam a execução de apenas um programa de cada vez, com acesso completo aos recursos do sistema Background! Os primeiros computadores permitiam a execução de apenas um programa de cada vez, com acesso completo aos recursos do sistema! Os sistemas actuais suportam o carregamento de múltiplos programas

Leia mais

Exercício. Alocação Dinâmica. Alocação dinâmica de memória. Alocação de memória. Alocação da Memória Principal. Alocação da Memória Principal

Exercício. Alocação Dinâmica. Alocação dinâmica de memória. Alocação de memória. Alocação da Memória Principal. Alocação da Memória Principal Exercício Crie uma função que recebe o número de dias até um determinado evento e calcula e retorna o equivalente em meses, semanas e dias, sem usar vetor ou o conceito de vetor. Considerar que todos os

Leia mais

INF 1620 P2-01/11/03 Questão 1 Nome:

INF 1620 P2-01/11/03 Questão 1 Nome: INF 1620 P2-01/11/03 Questão 1 Considere a implementação de uma lista encadeada para armazenar as notas dos alunos de uma turma dada pelo tipo abaixo: struct lista { char nome[81]; int mat; float p1, p2,

Leia mais

Carlos Eduardo Batista. Centro de Informática - UFPB

Carlos Eduardo Batista. Centro de Informática - UFPB Estrutura de Dados Carlos Eduardo Batista Centro de Informática - UFPB bidu@ci.ufpb.br Aritmética de ponteiros em C (continuação) O que acontece na memória? Ponteiro para ponteiro etc. Métodos de pesquisa

Leia mais

Programação II. Aula Teórica 4: memoria dinâmica / pre-processador. Marco Giunti. Departamento de Informática, UBI

Programação II. Aula Teórica 4: memoria dinâmica / pre-processador. Marco Giunti. Departamento de Informática, UBI Aula Teórica 4: memoria dinâmica / pre-processador Departamento de Informática, UBI C(ontiguous) alloc Calloc A função calloc permite de criar um espaço de memória contíguo com uma dimensão certa calloc(n,

Leia mais

Linguagem C estruturas de repetição

Linguagem C estruturas de repetição Linguagem C estruturas de repetição IF61A/IF71A - Computação 1 Prof. Leonelo Almeida Universidade Tecnológica Federal do Paraná Até agora... Introdução à linguagem C Estrutura de um programa Escrita e

Leia mais

Programação 1. Atribuição, operadores aritméticos, entrada de dados. Técnico em Eletrônica Semestre 5 02

Programação 1. Atribuição, operadores aritméticos, entrada de dados. Técnico em Eletrônica Semestre 5 02 Programação 1 Atribuição, operadores aritméticos, entrada de dados Técnico em Eletrônica Semestre 5 02 Armazenando na memória tipo de variável #include #include main() { int ano; Declaração

Leia mais