Este pdf contém o código, em linguagem C, de 6 ficheiros.
|
|
- Alícia Correia Ximenes
- 7 Há anos
- Visualizações:
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 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 maisSistemas 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.
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 maisMAC422/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 maisPthreads 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 maisSemá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 maisComunicaçã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 mais7. 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 maisMemó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 maistime_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 maisInter-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 maisMemó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 maisSemá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 maisComunicaçã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 maisComunicaçã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 maisProgramaçã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 maisA 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 maisProgramaçã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 maisExercí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 maisPonteiros. 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 maisProdutor / Consumidor
Problemas sobre Programação Concorrente Produtor / Consumidor /*+---------------------------------------------------------------------+ Programa 1 : Produtor / Consumidor Descricao : Algoritmo Produtor
Leia mais1ª 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 maisSISTEMAS 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 maisUniversidade 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 maisUNIVERSIDADE 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 maisProgramaçã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 maisProgramaçã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 maisMé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 maisO 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 maisIntroduçã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 maisPROGRAMAÇÃ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 maisApontadores/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 maisCES-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 maisListas (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 maisEstrutura 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 maisAlgoritmos 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 maisSSC304 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 maisALGORITMOS 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 maisLinguagem 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 maisMATRIZES. 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 maisComputaçã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 maisIntroduçã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 maisUNIVERSIDADE 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 maisTipos 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 maisAULA 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 maisIntroduçã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 maisIntroduçã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 mais1/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 maisEstruturas. 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 mais1 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 maisProgramaçã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 maisEstruturas 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 maisFundamentos 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 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 maisAlocaçã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 mais1/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 maisMemó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 maisstruct 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 maisListas 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 maisVetores. 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 maisMé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 mais13. 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 maisPROGRAMAÇÃ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 maisProgramaçã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 maisUNIVERSIDADE 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 maisAula 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 maisIntroduçã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 mais1/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 maisParalela 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 maisReinaldo 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 maisAlocaçã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 maisPROGRAMAÇÃ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 maisUniversidade 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 maisTÉ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 maisUNIVERSIDADE 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 maisAlgoritmos 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 maisFundamentos 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 maisLinguagem 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 maisPonteiros 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 maisESTRUTURAS 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 maisCurso 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 maisSemá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 maisProgramaçã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 maisSistemas 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 maisVETORES 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 maisEstruturas 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 maisUNIVERSIDADE 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 maisstruct 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 maisPONTEIROS 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 maisPROGRAMAÇÃ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,
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
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 maisExercí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 maisINF 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 maisCarlos 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 maisProgramaçã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 maisLinguagem 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 maisProgramaçã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