CES-11. Algoritmos e Estruturas de Dados. Esclarecimento sobre notação. Revisão. Revisão

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

Download "CES-11. Algoritmos e Estruturas de Dados. Esclarecimento sobre notação. Revisão. Revisão"

Transcrição

1 CES-11 Algoritmos e Estruturas de Dados Aula de revisão sobre rogramação Carlos Forster Carlos Alonso Juliana Bezerra Revisão CES-11 Tios escalares rimitivos Tios constituídos de uma linguagem Ponteiros Alocação estática versus dinâmica Passagem de arâmetros Revisão CES-11 Tios escalares rimitivos Tios constituídos de uma linguagem Ponteiros Alocação estática versus dinâmica Passagem de arâmetros Esclarecimento sobre notação Notação Algorítmica Próxima à da Matemática e serve ara exlicar uma solução formalmente ara uma essoa. Exemlo: atribuição i i+1 Exemlo mais sofisticado: atribuição múltila: i,j j,i (troca as variáveis i e j) Linguagem de Programação Código ara descrever um algoritmo ara execução no comutador. É imortante que seja legível or humano ara que não recisemos reescrever tudo em notação algorítmica, rincialmente quando se esera modificar o código com certa freqüência.

2 Tios escalares rimitivos Tio Inteiro: Domínio: números inteiros entre - e + Oerações: + - * div(/) mod(%) = < > Exemlos: 7 div 3 = 2 7 mod 3 = 1 (em C) 7 / 3 = 2 7 % 3=1 Tio Real: Domínio: números reais entre - e + Oerações: + - * / = < > Arredondamento ara inteiro: 3.14 = =4 Lg x é o logaritmo de x na base 2. Tios escalares rimitivos #include <limits.h> -- contem as constantes que descrevem os limites dos tios inteiros da linguagem C. #define SCHAR_MIN (-128) #define SCHAR_MAX 127 #define UCHAR_MAX 255 #define INT_MAX #define INT_MIN (-INT_MAX-1) #define UINT_MAX 0xffffffff #define LONG_MAX L #define LONG_LONG_MAX LL Tios escalares rimitivos #include<math.h> -- constantes e funções #define M_E #define M_PI #define M_SQRT double sin (double); double cos (double); double tan (double); double sinh (double); double cosh (double); double tanh (double); double asin (double); double acos (double); double atan (double); double atan2 (double, double); double ex (double); double log (double); double log10 (double); double ow (double, double); double sqrt (double); double ceil (double); double floor (double); double fabs (double); Tios escalares rimitivos Tio Lógico: Domínio: Verdadeiro e Falso Oerações: =,, and (&&), or( ), not(!) e xor(^) Os resultados das comarações são valores lógicos.

3 Tio Lógico em C A linguagem C não define tio lógico, mas utiliza inteiros. Um inteiro igual a zero corresonde a Falso e um inteiro qualquer diferente de zero corresonde a Verdadeiro. As oerações lógicas da linguagem C retornam valores 0 ara Falso ou 1 ara Verdadeiro. Em C, os oeradores lógicos fazem avaliação em curto-circuito. Tios escalares rimitivos Tio Caractere Domínio: Dígitos decimais: 0, 1,..., 9 Letras: A, B,..., Z, a, b,..., z Sinais eseciais:.,,, ;, +, -, (, ), \n, \t,... Oerações: = ( < > + - * / %) Sucessor e Predecessor (Succ(x), Pred(x)) Número de ordem (Ord(x)) Caractere corresondente ao inteiro x (Chr(x)) Tios escalares rimitivos Os caracteres da linguagem C ossuem valor de inteiro. Por isso, não estão definidas as oerações de sucessor (x+1), redecessor (x-1), ordem e conversão ara caractere ( (char) x ). Para a aritmética de caracteres, ode-se assumir que o código ASCII é utilizado (mas nem toda arquitetura utiliza esse código e há códigos em que as letras não aarecem em seqüência). Dessa forma é melhor, semre que ossível, utilizar as funções de ctye.h ao invés das comarações e. Tios escalares rimitivos #include <ctye.h> int isalnum(int); int isalha(int); int iscntrl(int); int isdigit(int); int isgrah(int); int islower(int); int isrint(int); int isunct(int); int issace(int); int isuer(int); int isxdigit(int); int tolower(int); int touer(int);

4 Questões (ling C) Quando a exressão a>b>c é verdadeira? Se a>b e c<1 ou se a<=b e c<0 Entretanto, não faz muito sentido comarar um valor lógico com um inteiro: (a<b)<c => Falso<c Qual a diferença entre (getchar()== s getchar()== n ) (getchar()== s getchar()== n ) E qual a diferença entre x=3; k=x++; x=3; k=++x; E a ordem alfabética vale? b > a? B > a? Revisão CES-11 Tios escalares rimitivos Tios constituídos de uma linguagem Ponteiros Alocação estática versus dinâmica Passagem de arâmetros Tios constituídos de uma linguagem Vetores: Tio_rimitivo v[30], w[50], x[200]; ou Inicialização: int v[5]={5,4,3,2,1,; int s[]={3,2,1; tyedef int vetor[30]; vetor v1, v2, v3; Indexação: x=v[3] ou v[i+1]=x v[i]: O resultado é um L-Valor, ou seja, um valor com endereço em memória (na ling C) Tios constituídos de uma linguagem Matrizes: Tio_rimitivo m1[10][10][10], m2[5][4]; Inicialização: ou tyedef int matriz[10, 10]; matriz m3, m4; int x[][3]={{1,2,3,{4,5,6,,{7,8,9; float s[2][3]={{0,3,5,{2,1,4,; Vetores e matrizes são chamados de variáveis indexadas Estruturas homogêneas: contém elementos do mesmo tio

5 Tios constituídos de uma linguagem Cadeias de caracteres: tyedef char cadeia[15]; cadeia nome, rua, aux; As cadeias de caracteres na linguagem C funcionam como vetores do tio char. As funções ara maniulação das cadeias consideram que estas terminam com o caractere Nulo, de valor Zero ou \0. #include <string.h> size_t strlen (const char*); char* strcat (char*, const char*); int strcm (const char*, const char*); char* strcy (char*, const char*); Tios constituídos de uma linguagem Estruturas simles (registro): struct funcionario { char nome[30], endereco[30], setor[15]; char sexo, estcivil; int idade; ; struct funcionario f1, f2, f3, emregados[200];... emregados[1] = f1; f2.sexo = M ; strcy (emregados[3].nome, José da Silva ); Estruturas heterogêneas: odem agruar elementos de vários tios Tios constituídos de uma linguagem Atribuição de Registros Outros: Estruturas de camos alternativos (UNION) Tios enumerativos (ENUM) enum numcor {AZUL=1,VERDE,AMARELO; union u_cor { struct s_cor { unsigned char r, g, b; uc_cor; enum numcor i_cor; ; tyedef struct cadeia { char s[15]; ; cadeia hel={"auxilio"; cadeia edit={"editar"; main() { cadeia k; k=hel; rintf("%s\n",k.s); k=edit; rintf("%s\n",k.s); k.s[0]='x'; rintf("%s\n",k.s); rintf("%s\n",edit.s); Observe que não houve necessidade de utilizar strcy neste exemlo orque as cadeias estão dentro de registros e a atribuição de registro já coia os vetores dentro dele Saída no console: Auxilio Editar Xditar Editar

6 Estruturas versus imlementações CES-11 Revisão Tios escalares rimitivos Listas lineares Pilhas Filas Árvores Grafos etc. Variáveis indexadas Ponteiros Tios constituídos de uma linguagem Ponteiros Alocação estática versus dinâmica Passagem de arâmetros Ponteiros Ponteiros (ou aontadores) são variáveis que armazenam endereços de outras variáveis. No exemlo ao lado, e q são onteiros. Declarações: float a; int c; float *; int *q; = &a; q = &c; Ponteiros Princiais utilidades de onteiros: Passagem de arâmetros or referência, em subrogramação Alocação dinâmica de variáveis indexadas Modificação direta de valores na memória

7 Ponteiros: notação Se é um onteiro, * é o valor da variável aontada or. Se a é uma variável, &a é o seu endereço. Exemlos: int a, b=2, *; = &a; a? b 2 a? b 2? Ponteiros: exemlo Sejam as declarações abaixo: int a=2, b=5, *=&a, *q=&b; *q=&b ou q=&b??? A inicialização é de e q, não de * e *q: * = 1; a 1 b 2 q 2 a 5 b b = *; a 1 b 1 Ponteiros e variáveis veis indexadas Sejam as declarações abaixo: int a[7], *, b[5]; a Situação a; inicial = b; b tornou-se equivalente aa a b As atribuições a = e b = são roibidas! Outras semelhanças as Ponteiros odem ter índices, e variáveis indexadas admitem o oerador unário *. Por exemlo, suonha as declarações abaixo: int i, a[50], *; a[i] é equivalente a *(a+i) *(+i) é equivalente a [i] a contém o endereço de a[0]: = a equivale a = &a[0] = a+1 equivale a = &a[1]

8 Qual é a diferença, então? Constante versus variável: a é o endereço inicial de um vetor estático: seu valor não ode ser alterado é uma variável: seu conteúdo ode mudar Atribuições: = &i é ermitido a = &i não é ermitido Endereços na memória: a[1] tem semre o mesmo endereço [1] ode variar de endereço Aritmética de Aontadores A linguagem C ermite certo conjunto de oerações com aontadores. Essas oerações não são comuns em linguagens de nível mais alto e devem ser evitadas. Sugere-se limitar a usar &a, *, [i], ++ e -- A comaração de aontadores ==q ode não funcionar em algumas lataformas (dois endereços diferentes odem reresentar o mesmo local na memória em algumas máquinas) O valor numérico do endereço ode ser obtido através da transformação em inteiro: endereco=(unsigned long) ; Veja que endereco+1 ode ser diferente de +1 (quando?) Revisão CES-11 Tios escalares rimitivos Tios constituídos de uma linguagem Ponteiros Alocação estática versus dinâmica Passagem de arâmetros Alocação estática tica versus dinâmica Variáveis estáticas: têm endereço determinado em temo de comilação São revistas antes da comilação do rograma Ocuam uma área de dados do rograma, determinada na comilação Existem durante toda a execução do rograma Variáveis dinâmicas: têm endereço determinado em temo de execução São alocadas de uma área extra da memória, chamada hea, através de funções esecíficas (malloc, new, etc.) Sua eventual existência deende do rograma, e seu endereço recisa ser armazenado em outra variável Exige uma olítica de administração da memória

9 Pilha de execução Alocação dinâmica de memória Muitas vezes, é conveniente alocar esaço ara uma variável indexada aenas em temo de execução. Nesse caso, essa variável deve ser inicialmente alocada como onteiro. Durante a execução do rograma, o esaço de memória necessário ara essa variável ode ser alocado através da função malloc. O esaço alocado deve ser rearoveitado utilizando-se a função free ara liberá-lo. Exemlo Alocação dinâmica de matrizes tyedef int *vetor; void main () { int m, i; vetor A, B, C; rintf("tamanho dos vetores: "); scanf("%d",&m); A = (int *) malloc (m*sizeof(int)); B = (int *) malloc (m*sizeof(int)); C = (int *) malloc (m*sizeof(int)); rintf("vetor A: "); for (i = 0; i < m; i++) scanf("%d",&a[i]); rintf("vetor B: "); for (i = 0; i < m; i++) scanf("%d",&b[i]); rintf("vetor C: "); for (i = 0; i < m; i++) C[i] = (A[i] > B[i])? A[i]: B[i]; for (i = 0; i < m; i++) rintf("%d",c[i]); free(a); free(b); free(c); Uma matriz também ode ser alocada em temo de execução, de modo análogo aos vetores. Exemlo: matriz m x n. Gasta-se mais esaço: um onteiro ara cada linha

10 Exemlo tyedef int *vetor; tyedef vetor *matriz; void main () { int m, n, i, j; matriz A; rintf("dimensoes da matriz: "); scanf("%d%d",&m,&n); A = (vetor *) malloc (m * sizeof(vetor)); for (i = 0; i < m; i++) A[i] = (int *) malloc (n * sizeof(int)); rintf("elementos da matriz:"); for (i = 0; i < m; i++) { rintf("linha %d ", i); for (j = 0; j < n; j++) scanf("%d",&a[i][j]); for (i = 0; i < m; i++) free(a[i]); free(a); m 5 n 4 A Dimensões da matriz:?????? Revisão CES-11 Tios escalares rimitivos Tios constituídos de uma linguagem Ponteiros Alocação estática versus dinâmica Passagem de arâmetros Encadeamento de estruturas Considere o código abaixo: struct st {int a; float b; st *; = (st *) malloc (sizeof(st)); (*).a = 5; (*).b = 17.3; a b a? 5 b? 17.3 Código equivalente às atribuições acima: ->a = 5; ->b = 17.3; Outro exemlo struct noh {int a; noh *rox; noh *; = (noh *) malloc (sizeof(noh)); ->a = 2; ->rox = (noh *) malloc (sizeof(noh)); ->rox->a = 3; ->rox->rox = (noh *) malloc (sizeof(noh)); ->rox->rox->a = 5; ->rox->rox->rox = NULL; a rox 2? a rox 3? a rox 5?

11 Continuando a rox 2? a rox 3? a rox Escrita do camo a de todos os nós: noh *q; for (q=; q!=null; q=q->rox) rintf("%d",q->a); 5? Encadeamento de estruturas Baseia-se na utilização de variáveis onteiros Proorciona muitas alternativas ara estruturas de dados É usado em listas lineares, árvores e grafos Acesso ao camo a do último nó: ->rox->rox->a mais simles ou (*(*(*).rox).rox).a CES-11 Passagem de arâmetros Revisão Tios escalares rimitivos Tios constituídos de uma linguagem Ponteiros Alocação estática versus dinâmica Passagem de arâmetros Declaração de funções: Tio Nome_de_função (Lista_de_arâmetros) { Coro_de_função Funções que não retornam valores são do tio void A lista de arâmetros ode ser vazia ou não Parâmetros semre são alocados dinamicamente, e recebem os valores que lhe são assados na chamada Duas formas de assagem: or valor ou or referência

12 Passagem de arâmetros Passagem or valor Passagem de arâmetros Passagem or referência void ff (int a) { a += 1; rintf ("Durante ff: a = %d \n", a); a 56 void trocar (int *, int *q) { int aux; aux = *; * = *q; *q = aux; aux 3 q void main ( ) { int a = 5; rintf ("Antes de ff: a = %d \n", a); ff (a); rintf ("Deois de ff: a = %d \n", a); Antes de ff: a = 5 Durante ff: a = 6 Deois de ff: a = 5 a 5 outra variável! void main ( ) { int i = 3, j = 8; rintf ("Antes: i = %d, j = %d \n", i, j); trocar (&i, &j); rintf ("Deois: i = %d, j = %d", i, j); Antes: i = 3, j = 8 Deois: i = 8, j = 3 i 38 j 83 Outra vantagem: economia de memória ao se trabalhar com grandes estruturas Passagem de arâmetros Passagem or referência Variável indexada como arâmetro #include <stdio.h> void alterar (int B[]) { B[1] = 5; B[3] = 5; void main ( ) { int i, j, A[10] = {0; //imrimir vetor A alterar(a); //imrimir vetor A alterar(&a[4]); //imrimir vetor A Revisão CES-11 Tios escalares rimitivos Tios constituídos de uma linguagem Ponteiros Alocação estática versus dinâmica Passagem de arâmetros

13 Uma função é recursiva se fizer alguma chamada a si mesma diretamente ou através de uma outra função. Ex1: soma dos n rimeiros números naturais int soma (int n) { int i, resultado = 0; for (i=1; i<=n; i++) resultado = resultado + i; return resultado; Mais elegante! int somarecursiva (int n) { if (n==1) return 1; Cuidado com return n + somarecursiva(n-1); loo infinito Projeto de um algoritmo recursivo: Procurar casos básicos em que a solução é conhecida sem esforço: Em geral, quanto mais simles é o caso base, melhor. No caso da soma da PA, oderíamos ter utilizado o caso base n=0 (a soma seria 0, o elemento neutro), mas utilizamos n=1, cuja soma é 1. Agora egamos o roblema genérico de tamanho n e, suondo que sabemos resolver roblemas menores, o resolvemos através da combinação de soluções desses roblemas menores. No caso da soma, utilizamos a soma de n-1 ara calcular a soma de n. Veja que é fácil de rovar or indução finita que o rograma está correto. Mas há cuidados a se tomar, demonstramos o seguinte elo rincíio da indução finita: Em qualquer conjunto de cavalos, todos cavalos tem a mesma cor. Num conjunto de 1 cavalo, todos tem a mesma cor. Num conjunto de N cavalos, searamos N-1 e assumimos que tem a mesma cor, retiramos um cavalo do conjunto de N-1 e colocamos o que está sobrando, logo este também tem a cor dos demais. Onde está o erro????? Cuidado com o rojeto eficiente do algoritmo recursivo: Números de Fibonacci: F(0)=1 F(1)=1 F(n)=F(n-1)+F(n-2) Veja a quantidade de cálculos redundantes F(1) F(2) F(3) F(0) F(1) F(4) F(1) F(2) F(5) F(0) F(1) F(2) F(3) F(0) F(1)

14 Ex2: cálculo de otência Ex4: máximo divisor comum Ex3: cálculo de fatorial de números ositivos 42 = 2 * 3 * 7 30 = 2 * 3 * 5 MDC(42,30) = 6 m = n * q + r MDC(42,30) 42 = 30 * MDC(30,12) 30 = 12 * MDC(12,6) 12 = 6 * MDC(6,0) Retorna 6 Será que funciona se calcularmos MDC(30,42)? Ex4: máximo divisor comum Ex5: busca binária em vetor ordenado 42 = 2 * 3 * 7 30 = 2 * 3 * 5 MDC(30,42) = 6 m = n * q + r MDC(30,42) 30 = 42 * MDC(42,30) 42 = 30 * MDC(30,12) 30 = 12 * MDC(12,6) 12 = 6 * MDC(6,0) Retorna 6 medio = (inf + su) /2

15 Ex5: busca binária em vetor ordenado Procura(28,vet,0,9) vet: medio infmedio inf su medio Achou! su Ex6: reconhecimento de cadeias de caracteres Uma cadeia contendo aenas uma letra ou dígito é válida. Se α é uma cadeia válida, então (α) também será. #include <stdio.h> #include <conio.h> #include <ctye.h> tyedef char cadeia[30]; cadeia cad; int i; bool erro; Contém rintf Contém getche() e gets() Contém oerações ara string Variáveis globais void testarcadeia (void); Protótio de função Ex6: reconhecimento de cadeia de caracteres void main() { char c; rintf ("Testar cadeia? (s/n): "); do c = getche ( ); while (c!='s' && c!='n'); while (c == 's') { clrscr (); rintf ("Digite a cadeia: "); fflush (stdin); gets (cad); i = 0; erro=false; testarcadeia (); if (cad[i]!= '\0') erro = true; if (erro) rintf ("cadeia rerovada!"); else rintf ("cadeia valida!"); rintf ("\n\ntestar nova cadeia? (s/n): "); do c = getche ( ); while (c!='s' && c!='n ); Ex6: reconhecimento de cadeia de caracteres void testarcadeia () { if (isalha(cad[i]) isdigit(cad[i])) i++; else if (cad[i] == '(') { i++; testarcadeia (); if (erro==false && cad[i] == ')') i++; else erro = true; else erro = true;

16 Ex6: reconhecimento de cadeia de caracteres O código funciona, mas não é elegante. Pontos fracos: Não verifica se a cadeia excede 30 caracteres cad, i e erro são variáveis globais O ideal seria: bool testarcadeia(cadeia,indice) Para que o código abaixo está na função main? if (cad[i]!= '\0') erro = true; Ex7: reconhecimento de exressões aritméticas Uma exressão com aenas uma letra ou dígito é válida. Se α e β são exressões válidas, então (α+β), (α-β), (α*β) e (α/β) também serão. Ex8: cadeias com n zeros iniciais (n 0) seguidos de 2n um s Uma cadeia vazia é válida. Se α é uma cadeia válida, então 0α11 também é. Gera erro em casos com 2 letras/números seguidos. Ex: aa, (bb) Isso deveria ser escoo da função testarcadeia. Torres de Hanoi Solução ara torres de Hanoi Regras: Três colunas A, B e C Os 64 discos estão todos na coluna A inicialmente Devem estar todos na coluna C no final Todos discos tem tamanho diferente Um disco maior nunca ode estar sobre um menor Já sei mover dois discos de A ara C A B C

17 Torres de Hanoi A B C Já sei mover dois discos de A ara C: A->B, A->C, B->C Como mover 3? Mover 2 de A ara C Mover 1 de A ara B Mover 2 de C ara B Torres de Hanoi void mover(int quantidade, char *de, char *ara, char *or) { if(quantidade==1) rintf("%s->%s ",de,ara); else { mover(quantidade-1, de, or, ara); mover(1, de, ara, or); mover(quantidade-1, or, ara, de); main() { mover(4,"a","c","b"); getchar(); getchar(); A->B A->C B->C A->B C->A C->B A->B A->C B->C B->A C->A B->C A->B A->C B->C Fim

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

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

26/8/2009 ALGORITMOS E ESTRUTURAS DE DADOS CES-11 CES-11 CAPACIDADE DE REPRESENTAÇÃO CES-11. Revisão. Tipo Lógico: Tipo Inteiro: Tipo Caractere:

26/8/2009 ALGORITMOS E ESTRUTURAS DE DADOS CES-11 CES-11 CAPACIDADE DE REPRESENTAÇÃO CES-11. Revisão. Tipo Lógico: Tipo Inteiro: Tipo Caractere: ALGORITMOS E ESTRUTURAS DE DADOS Prof. Pulo André Cstro uloc@it.br Sl 110 Prédio d Comutção www.com.it.br/~uloc IECE - ITA Tios esclres rimitivos Tios esclres rimitivos Tio Inteiro: Domínio: números inteiros

Leia mais

union [<union-type-name>] { <type> <variable-names> ;... } [<union-variables>] ; union int_or_long { int i; long l; } a_number;

union [<union-type-name>] { <type> <variable-names> ;... } [<union-variables>] ; union int_or_long { int i; long l; } a_number; Uniões Uma união (union) consiste de uma variável que ode conter valores de diferentes tios comartilhando a mesma área de memória. Uma união é semelhante a uma struct, exceto que ela ermite definir variáveis

Leia mais

Estruturas de Dados. Profa. Juliana Pinheiro Campos

Estruturas de Dados. Profa. Juliana Pinheiro Campos Estruturas de Dados Profa. Juliana Pinheiro Campos Vetores Forma mais simples de estruturar um conjunto de dados. Exemplo: int p[10]; // vetor de inteiros com 10 elementos Reserva de um espaço de memória

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- Algoritmos e Estruturas de Dados Carlos Alberto Alonso Sanches Juliana de Melo Bezerra Árvores CES- Operações sobre uma árvore Estruturas para armazenar árvores Contígua Contígua melhorada Encadeada

Leia mais

Linguagem C: Ponteiros - Alocação Dinâmica

Linguagem C: Ponteiros - Alocação Dinâmica Prof. Paulo R. S. L. Coelho paulo@facom.ufu.br Faculdade de Computação Universidade Federal de Uberlândia GEQ007 Organização 1 Ponteiros Alocação Dinâmica de Memória 2 3 4 Organização Ponteiros Alocação

Leia mais

Variáveis, Tipos de Dados e Operadores

Variáveis, Tipos de Dados e Operadores ! Variáveis, Tipos de Dados e Operadores Engenharias Informática Aplicada 2.o sem/2013 Profa Suely (e-mail: smaoki@yahoo.com) VARIÁVEL VARIÁVEL É um local lógico, ligado a um endereço físico da memória

Leia mais

Programação Estruturada

Programação Estruturada Programação Estruturada Recursão Professores Emílio Francesquini e Carla Negri Lintzmayer 2018.Q3 Centro de Matemática, Computação e Cognição Universidade Federal do ABC Recursão Recursão 1 Recursão 2

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

C++ - Matrizes. Observ.: C++ não avisa quando o limite de uma matriz foi excedido. Providenciar a verificação é responsabilidade do programador.

C++ - Matrizes. Observ.: C++ não avisa quando o limite de uma matriz foi excedido. Providenciar a verificação é responsabilidade do programador. C++ - Matrizes É um conjunto de variáveis, do mesmo tipo, referenciadas por um único nome, onde cada variável é diferenciada por meio de um número entre colchetes chamado índice. Declaração : tipo nome

Leia mais

AULA 5. Registros e Structs. Registros e Structs. Pausa para nossos comerciais. Hoje. Registros e structs

AULA 5. Registros e Structs. Registros e Structs. Pausa para nossos comerciais. Hoje. Registros e structs Pausa ara nossos comerciais AULA 5 Plantão de dúidas: Vinícius Horário: terças das 12h às 13h Onde: Rede Linux do IME, Bloco A, sala 127 Treinos ara Maratona de Programação: Horário: quintas das 14h às

Leia mais

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

INF 1620 P1-04/10/03 Questão 1 Nome: INF 1620 P1-04/10/03 Questão 1 a) Implemente uma função para calcular as raízes de uma equação do segundo grau do tipo ax 2 +bx+c=0. O protótipo dessa função deve ser: void raizes (float a, float b, float

Leia mais

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

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

Leia mais

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

INF 1620 P4-01/07/08 Questão 1 Nome:

INF 1620 P4-01/07/08 Questão 1 Nome: INF 1620 P4-01/07/08 Questão 1 Escreva uma função em C que receba duas strings, cujos caracteres estão ordenados em ordem crescente, e retorne uma nova string alocada dinamicamente, que contém todos os

Leia mais

Fundamentos de Programação

Fundamentos de Programação Fundamentos de Programação ET42G Aula 5 Prof. Daniel Cavalcanti Jeronymo Tipos básicos de dados. Modificadores de tipos. Operadores aritméticos. Operadores lógicos. Operadores binários. Universidade Tecnológica

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

DAS5102 Fundamentos da Estrutura da Informação

DAS5102 Fundamentos da Estrutura da Informação Ponteiros e Funções Funções ou sub-rotinas são parcelas de código que podem ser invocadas a partir do programa principal ou até mesmo por outras sub-rotinas. Elas têm como objetivo a execução de uma tarefa

Leia mais

Fundamentos de Programação

Fundamentos de Programação Fundamentos de Programação CP41F. Modificadores de tipos. Aula 6 Prof. Daniel Cavalcanti Jeronymo Universidade Tecnológica Federal do Paraná (UTFPR) Engenharia de Computação 1º Período 1/28 Plano de Aula

Leia mais

Linguagens de Programação I

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

Leia mais

Aluno: Valor Nota Q1 3.0 Q2 2.5 Q3 2.5 Q4 2.0 Total 10.0

Aluno: Valor Nota Q1 3.0 Q2 2.5 Q3 2.5 Q4 2.0 Total 10.0 P4 Programação II 2012.2 Departamento de Informática/PUC- Rio Aluno: Matrícula: Turma: 1. A prova é sem consulta e sem perguntas. A interpretação do enunciado faz parte da prova. 2. A prova deve ser completamente

Leia mais

3. Linguagem de Programação C

3. Linguagem de Programação C Introdução à Computação I IBM1006 3. Linguagem de Programação C Prof. Renato Tinós Departamento de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 3.2. Estrutura de Programas e Representação

Leia mais

Ponteiros e alocação dinâmica de memória. Disciplina de Programação de Computadores I Universidade Federal de Ouro Preto

Ponteiros e alocação dinâmica de memória. Disciplina de Programação de Computadores I Universidade Federal de Ouro Preto Ponteiros e alocação dinâmica de memória Disciplina de Programação de Computadores I Universidade Federal de Ouro Preto Agenda Ponteiros Ponteiros e vetores Passagem por cópia e por referência Alocação

Leia mais

Introdução a Programação de Jogos

Introdução a Programação de Jogos Introdução a Programação de Jogos Aula 03 Introdução a Linguagem C Edirlei Soares de Lima Estrutura de um Programa C Inclusão de bibliotecas auxiliares: #include Definição

Leia mais

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

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

Leia mais

Árvores Binárias. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich

Árvores Binárias. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich Árvores Binárias SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista. Figuras editadas por Isadora Maria Mendes http://www.icmc.usp.br/~paulovic

Leia mais

Sumário. Introdução à Ciência da Computação. Ponteiros em C. Introdução. Definição. Por quê ponteiros são importantes?

Sumário. Introdução à Ciência da Computação. Ponteiros em C. Introdução. Definição. Por quê ponteiros são importantes? Introdução à Ciência da Computação Ponteiros em C Prof. Ricardo J. G. B. Campello Sumário Introdução Definição de Ponteiros Declaração de Ponteiros em C Manipulação de Ponteiros em C Operações Ponteiros

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

Estruturas de Dados. Introdução Definição de Ponteiros Declaração de Ponteiros em C Manipulação de Ponteiros em C

Estruturas de Dados. Introdução Definição de Ponteiros Declaração de Ponteiros em C Manipulação de Ponteiros em C Estruturas de Dados Revisão de Ponteiros Prof. Ricardo J. G. B. Campello Sumário Introdução Definição de Ponteiros Declaração de Ponteiros em C Manipulação de Ponteiros em C Operações Ponteiros e Arranjos

Leia mais

ANHANGUERA ESTRUTURA DE DADOS AULA 04 MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA. Prof. Thomás da Costa

ANHANGUERA ESTRUTURA DE DADOS AULA 04 MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA. Prof. Thomás da Costa ANHANGUERA 2015.2 ESTRUTURA DE DADOS AULA 04 Prof. Thomás da Costa thomascosta@aedu.com O que é: Matrizes São vetores que possuem duas ou mais dimensões para armazenar valores. Uma matriz de duas dimensões,

Leia mais

Métodos Computacionais. Vetores e Matrizes Dinâmicas

Métodos Computacionais. Vetores e Matrizes Dinâmicas Métodos Computacionais Vetores e Matrizes Dinâmicas Vetores Um programa para o cálculo da média Média m n i= = 1 n x i Variância v n i= = 1 ( x i n m) 2 A forma mais simples de estruturar um conjunto de

Leia mais

Caracteres e Cadeias de Caracteres

Caracteres e Cadeias de Caracteres Caracteres e Cadeias de Caracteres INF1005 Programação I Prof. Hélio Lopes lopes@inf.puc-rio.br sala 408 RDC 1 caracteres e cadeias de caracteres tópicos caracteres cadeias de caracteres (strings) vetor

Leia mais

Conceitos básicos de programação

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

Leia mais

Ponteiros - Parte I. Ponteiros, Ponteiros e Vetores, Algoritmo Bubble Sort, Alocação Dinâmica de Memória

Ponteiros - Parte I. Ponteiros, Ponteiros e Vetores, Algoritmo Bubble Sort, Alocação Dinâmica de Memória Ponteiros - Parte I Ponteiros, Ponteiros e Vetores, Algoritmo Bubble Sort, Alocação Dinâmica de Memória Ponteiros Um ponteiro é uma variável que contém um endereço de memória. Esse endereço é normalmente

Leia mais

Aula 12- Variáveis e valores reais

Aula 12- Variáveis e valores reais Aula 12- Variáveis e valores reais Até agora todos os nossos problemas continham apenas valores inteiros e portanto variáveis do tipo int. Para resolver problemas que usam valores com parte fracionária,

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

Ponteiros e Tabelas. K&R: Capitulo 5 IAED, 2012/2013

Ponteiros e Tabelas. K&R: Capitulo 5 IAED, 2012/2013 Ponteiros e Tabelas K&R: Capitulo 5 Ponteiros e Tabelas Ponteiros e endereços Ponteiros e argumentos de funções Ponteiros e tabelas Alocação dinâmica de memória Aritmética de ponteiros Tabelas de ponteiros

Leia mais

Ponteiros e Tabelas. K&R: Capitulo 5 IAED, 2012/2013

Ponteiros e Tabelas. K&R: Capitulo 5 IAED, 2012/2013 Ponteiros e Tabelas K&R: Capitulo 5 Ponteiros e Tabelas Ponteiros e endereços Ponteiros e argumentos de funções Ponteiros e tabelas Alocação dinâmica de memória Aritmética de ponteiros Tabelas de ponteiros

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

4. Estruturas Fundamentais de Programação em C

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

Leia mais

Ponteiros. prof. Fabrício Olivetti de França

Ponteiros. prof. Fabrício Olivetti de França Ponteiros prof. Fabrício Olivetti de França Anteriormente em prog. estrut. Vimos que as variáveis representando arrays em C armazenam apenas um apontador para o endereço de memória contendo os valores

Leia mais

Bits e operações. Sistemas de Computação

Bits e operações. Sistemas de Computação Bits e operações Porque utilizar base 2? Representação na base 10 Estamos acostumados Representação natural para transações financeiras (precisão) Implementação eletrônica na base 10 Difícil de armazenar

Leia mais

Programação Estruturada Prof. Rodrigo Hausen Agregados de Dados Heterogêneos (structs)

Programação Estruturada Prof. Rodrigo Hausen   Agregados de Dados Heterogêneos (structs) Programação Estruturada Prof. Rodrigo Hausen http://progest.compscinet.org Agregados de Dados Heterogêneos (structs) 1 AGREGADO HOMOGÊNEO Um agregado homogêneo de dados é um conjunto de dados que são necessariamente

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

ponteiros INF Programação I Prof. Roberto Azevedo

ponteiros INF Programação I Prof. Roberto Azevedo ponteiros INF1005 -- Programação I -- 2016.1 Prof. Roberto Azevedo razevedo@inf.puc-rio.br ponteiros tópicos o que são ponteiros operadores usados com ponteiros passagem de ponteiros para funções referência

Leia mais

Lista de Exercícios para P1 INF1007 (Prog2) 15/04/2013. ATENÇÃO: O material a seguir não sofreu revisão e pode conter erros.

Lista de Exercícios para P1 INF1007 (Prog2) 15/04/2013. ATENÇÃO: O material a seguir não sofreu revisão e pode conter erros. EXERCÍCIO 1: Lista de Exercícios para P1 INF1007 (Prog2) 15/04/2013 ATENÇÃO: O material a seguir não sofreu revisão e pode conter erros. Considere as informações dos candidatos inscritos em um concurso.

Leia mais

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

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

Leia mais

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

4 Variáveis. Unesp Campus de Guaratinguetá

4 Variáveis. Unesp Campus de Guaratinguetá 4 Variáveis Unesp Campus de Guaratinguetá Curso de Programação Computadores Prof. Aníbal Tavares Profa. Cassilda Ribeiro Ministrado por: Prof. André Amarante Composição do Hardware MEMÓRIA UNIDADES FUNCIONAIS

Leia mais

Representação de Dados

Representação de Dados Representação de Dados Representação binária Exemplo: 15213 10 11101101101101 2 Vantagens: Implementação eletrônica Possibilidade de armazenar elementos com dois estados Transmissão eletrônica confiável

Leia mais

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

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

Leia mais

Programação de Computadores II

Programação de Computadores II Programação de Computadores II Aula de Revisão 01 Karina Mochetti 2019.1 Formato da Prova Questões teóricas. Escrever um programa do zero. Dar valores finais de variáveis. Completar um programa. Achar

Leia mais

Instituto Federal de Educação, Ciência e Tecnologia do RN Câmpus Currais Novos. LINGUAGEM C++ VARIÁVEIS COMPOSTAS Arrays Aula I

Instituto Federal de Educação, Ciência e Tecnologia do RN Câmpus Currais Novos. LINGUAGEM C++ VARIÁVEIS COMPOSTAS Arrays Aula I LINGUAGEM C++ VARIÁVEIS COMPOSTAS Arrays Aula I Prof. Bruno E. G. Gomes Uma variável em um algoritmo pode ser vista como uma gaveta. A declaração de uma variável reserva uma gaveta (posição) de um certo

Leia mais

Permite modularidade (dividir programa em partes): Facilita a depuração (debug) e portabilidade.

Permite modularidade (dividir programa em partes): Facilita a depuração (debug) e portabilidade. 222222222222222222222222222 8 - FUNÇÕES 81 - Características básicas É um trecho independente de código, com objetivos bem definidos Programas em C, geralmente consistem em várias pequenas funções, ao

Leia mais

INF 1620 P1-17/09/05 Questão 1 Nome:

INF 1620 P1-17/09/05 Questão 1 Nome: INF 1620 P1-17/09/05 Questão 1 Considere as equações de movimento para calcular a posição (s) e velocidade (v) de uma partícula em um determinado instante t, dado sua aceleração a, posição inicial s 0

Leia mais

Módulo 8 Tipos Estruturados

Módulo 8 Tipos Estruturados Estruturas de Dados Módulo 8 Tipos Estruturados 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

Leia mais

Exercícios. 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ícios. 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ícios 1) Crie uma função que recebe os coeficientes de uma função do 2o. grau e retorna as raízes sem usar vetor. 2) Faça um programa que acha o maior e o menor inteiro dentro de um vetor de 10 inteiros,

Leia mais

PROGRAMAÇÃO DE COMPUTADORES V - TCC Modulo 5: Array. (complemento de dois) Aura - Erick

PROGRAMAÇÃO DE COMPUTADORES V - TCC Modulo 5: Array. (complemento de dois) Aura - Erick PROGRAMAÇÃO DE COMPUTADORES V - TCC- 00.323 Modulo 5: Array (complemento de dois) Aura - Erick aconci@ic.uff.br, erickr@id.uff.br Roteiro Vetores Matrizes Como são tratados os números negativos Operação

Leia mais

INF 1620 P1-16/09/06 Questão 1 Nome:

INF 1620 P1-16/09/06 Questão 1 Nome: INF 1620 P1-16/09/06 Questão 1 Considerando a fórmula para o cálculo da distância entre dois pontos (x 1, y 1 ) e (x 2, y 2 ) apresentada a seguir: d = (x 2 " x 1 ) 2 + (y 2 " y 1 ) 2 (a) Escreva uma função

Leia mais

Fundamentos de Programação

Fundamentos de Programação Fundamentos de Programação ET42G Aula 21 Prof. Daniel Cavalcanti Jeronymo Conversão de tipos. Alocação dinâmica de memória. Recursão. Criação de bibliotecas, arquivos de cabeçalhos e variáveis globais.

Leia mais

SCC Capítulo 2 Recursão

SCC Capítulo 2 Recursão SCC-501 - Capítulo 2 João Luís Garcia Rosa 1 1 Departamento de Ciências de Computação Instituto de Ciências Matemáticas e de Computação Universidade de São Paulo - São Carlos http://www.icmc.usp.br/~joaoluis

Leia mais

3. Linguagem de Programação C

3. Linguagem de Programação C Introdução à Computação I IBM1006 3. Linguagem de Programação C Prof. Renato Tinós Departamento de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 3.5. Vetores 3.5.1. Vetores 3.5.2. Strings 3.5.3.

Leia mais

Princípios de Desenvolvimento de Algoritmos MAC122

Princípios de Desenvolvimento de Algoritmos MAC122 Princípios de Desenvolvimento de Algoritmos MAC122 Prof. Dr. Paulo Miranda IME-USP Alocação Dinâmica de Memória Motivação: Nossos programas pré-fixavam o número de variáveis a serem utilizadas. No caso

Leia mais

Módulo 1. Introdução. AEDS I C++ (Rone Ilídio)

Módulo 1. Introdução. AEDS I C++ (Rone Ilídio) Módulo 1 Introdução AEDS I C++ (Rone Ilídio) Introdução Linguagens de Programação Fonte Compilador Executável SO I Hardware C++ - Características Evolução do C, ou seja, possui a mesma sintaxe É uma linguagem

Leia mais

Nomes de variáveis Todo nome de variável deve iniciar com uma letra ou sublinha _.

Nomes de variáveis Todo nome de variável deve iniciar com uma letra ou sublinha _. Prof. Alceu Britto Material feito por Prof. Dr. Edson J. R. Justino (PUCPR) Aula Prática 03 e 04 UEPG Nomes de variáveis Todo nome de variável deve iniciar com uma letra ou sublinha _. Ex.: nome _nome

Leia mais

Estruturas Dinâmicas - Ponteiros

Estruturas Dinâmicas - Ponteiros SSC0800 - ICC1 Teórica Introdução à Ciência da Computação I Estruturas Dinâmicas - Ponteiros Prof. Claudio Fabiano Motta Toledo: claudio@icmc.usp.br Sumário Ponteiros Ponteiros e Vetores Funções para alocação

Leia mais

1. Revisão de Vetores, Ponteiros, Funções e Estruturas em C

1. Revisão de Vetores, Ponteiros, Funções e Estruturas em C Introdução à Computação II 5952011 1. Revisão de Vetores, Ponteiros, Funções e Estruturas em C Prof. Renato Tinós Local: Depto. de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 1.1. Revisão

Leia mais

Estrutura de Dados Conceitos Iniciais

Estrutura de Dados Conceitos Iniciais Engenharia de CONTROLE e AUTOMAÇÃO Estrutura de Dados Conceitos Iniciais Aula 01 DPEE 1038 Estrutura de Dados para Automação Curso de Engenharia de Controle e Automação Universidade Federal de Santa Maria

Leia mais

Linguagem C. Ponteiros. Alex Vidigal Bastos.

Linguagem C. Ponteiros. Alex Vidigal Bastos. Linguagem C Ponteiros Alex Vidigal Bastos alexvbh@gmail.com Ponteiros Ponteiros são variáveis que contém endereços. Estas variáveis apontam para algum determinado endereço da memória. Em geral, o ponteiro

Leia mais

11a. Aula Ponteiros e Vetores

11a. Aula Ponteiros e Vetores 11a. Aula Ponteiros e Vetores 2013.2 2 É um tipo de variável com uma ressalva...... armazena apenasendereçode memória (ou null) Se eu tiver o endereço da casa de Francisca, eu poderei visitá-la e lhe fazer

Leia mais

Computação Informática

Computação Informática Computação Informática Linguagem C Matrizes em C Aula N. 05 Prof. SIMÃO Jean Marcelo SIMÃO 1 Estrutura de Dados Homogênea matrizes Uma matriz computacional é um váriável composta capaz de armazenar uma

Leia mais

Ponteiros e Tabelas. K&R: Capítulo 5

Ponteiros e Tabelas. K&R: Capítulo 5 Ponteiros e Tabelas K&R: Capítulo 5 Ponteiros e Tabelas Ponteiros e endereços Ponteiros e argumentos de funções Ponteiros e tabelas Alocação dinâmica de memória Aritmética de ponteiros Tabelas de ponteiros

Leia mais

INF 1620 P3-25/11/05 Questão 1 Nome:

INF 1620 P3-25/11/05 Questão 1 Nome: INF 1620 P3-25/11/05 Questão 1 Dizemos que uma matriz quadrada é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos de cada coluna e a soma dos elementos de sua diagonal principal

Leia mais

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

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

Leia mais

INF 1620 P1-13/09/02 Questão 1 Nome:

INF 1620 P1-13/09/02 Questão 1 Nome: INF 1620 P1-13/09/02 Questão 1 Considere que o cálculo da multa para o pagamento de um determinado imposto varia de acordo com a tabela a seguir: Valor do Imposto Original Multa por mês de atraso até R$

Leia mais

Estrutura de dados 1. Ponteiros

Estrutura de dados 1. Ponteiros Estrutura de dados 1 Ponteiros Ponteiros Um ponteiro é um endereço de memória O valor de um ponteiro indica onde uma variável está armazenada Um ponteiro proporciona um modo de acesso a uma variável sem

Leia mais

Departamento de Informática - PUC-Rio INF 1007 Programação 2 P3 23/06/2010

Departamento de Informática - PUC-Rio INF 1007 Programação 2 P3 23/06/2010 Departamento de Informática - PUC-Rio INF 1007 Programação 2 P3 23/06/2010 Aluno: Instruções: 1) Escreva seu nome completo, matrícula e turma em todas as folhas desta prova; 2) A prova deve ser completamente

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

Programação científica C++

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

Leia mais

INF 1620 P3-21/06/08 Questão 1 Nome:

INF 1620 P3-21/06/08 Questão 1 Nome: INF 1620 P3-21/06/08 Questão 1 Dada uma lista encadeada de números inteiros cujo tipo que representa um nó da lista é dado por: struct lista { int info; struct lista *prox; typedef struct lista Lista;

Leia mais

INF 1620 P1-18/09/04 Questão 1 Nome:

INF 1620 P1-18/09/04 Questão 1 Nome: INF 1620 P1-18/09/04 Questão 1 Considerando a definição da série harmônica abaixo: H n =1+ 1 2 + 1 3 + 1 4 + 1 5 + K+ 1 n (a) Escreva uma função que calcule o valor de H n dado o número de termos da série

Leia mais

ALGORITMOS E ESRUTRA DE DADOS I. Ponteiros Passagem por Valor e Referência Alocação de Memória

ALGORITMOS E ESRUTRA DE DADOS I. Ponteiros Passagem por Valor e Referência Alocação de Memória ALGORITMOS E ESRUTRA DE DADOS I Ponteiros Passagem por Valor e Referência Alocação de Memória 2 Agenda Ponteiros Conceitos gerais O que é Ponteiro? Declaração de Ponteiros Operadores para Ponteiros Exemplos

Leia mais

Programação II. Vetores e Alocação Dinâmica. Bruno Feijó Dept. de Informática, PUC-Rio

Programação II. Vetores e Alocação Dinâmica. Bruno Feijó Dept. de Informática, PUC-Rio Programação II Vetores e Alocação Dinâmica Bruno Feijó Dept. de Informática, PUC-Rio Vetores (arrays) Vetor: estrutura de dados definindo um conjunto enumerável Exemplo: v = vetor de inteiros com 10 elementos

Leia mais

Ponteiros. Introdução

Ponteiros. Introdução Ponteiros Introdução Conceito Um PONTEIRO ou APONTADOR é uma variável usada para armazenar um endereço de memória. Normalmente, o endereço armazenado em um PONTEIRO é a posição de uma outra variável na

Leia mais

Introdução a Programação. Strings (Vetor de Caracteres)

Introdução a Programação. Strings (Vetor de Caracteres) Introdução a Programação Strings (Vetor de Caracteres) Tópicos da Aula Hoje aprenderemos a manipular vetores de caracteres (Strings) Caracteres em C Entrada/Saída de caracteres Funções que manipulam caracteres

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

Listas: nós de cabeçalho, listas não homogêneas, listas generalizadas

Listas: nós de cabeçalho, listas não homogêneas, listas generalizadas Listas: nós de cabeçalho, listas não homogêneas, listas generalizadas SCC-502 Algoritmos e Estruturas de Dados I Prof. Thiago A. S. Pardo Lista com nó de cabeçalho Nó de cabeçalho Header, sentinela, etc.

Leia mais

Estruturas de Dados, Análise de Algoritmos e Complexidade Estrutural. Carlos Alberto Alonso Sanches

Estruturas de Dados, Análise de Algoritmos e Complexidade Estrutural. Carlos Alberto Alonso Sanches CT-234 Estruturas de Dados, Análise de Algoritmos e Complexidade Estrutural Carlos Alberto Alonso Sanches CT-234 2) Algoritmos recursivos Indução matemática, recursão, recorrências Indução matemática Uma

Leia mais

Capítulo 1: Introdução à Linguagem C. Pontifícia Universidade Católica Departamento de Informática

Capítulo 1: Introdução à Linguagem C. Pontifícia Universidade Católica Departamento de Informática Capítulo 1: Introdução à Linguagem C Pontifícia Universidade Católica Departamento de Informática Programa Programa é um algoritmo escrito em uma linguagem de programação. No nosso caso, a linguagem C.

Leia mais

Programação: Vetores

Programação: Vetores Programação de Computadores I Aula 09 Programação: Vetores José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2011-1 1/62 Motivação Problema Faça um programa que leia

Leia mais

Estruturas de Dados Homogêneas (Vetores e Matrizes) e Ponteiros em C

Estruturas de Dados Homogêneas (Vetores e Matrizes) e Ponteiros em C Estruturas de Dados Homogêneas (Vetores e Matrizes) e Ponteiros em C 2015/1 Programação Básica de Computadores (INF 09325) Archimedes Detoni www.inf.ufes.br/~archimedesdetoni archimedesdetoni@inf.ufes.br

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

Programação Estruturada

Programação Estruturada Programação Estruturada Ponteiros Parte 1 Professores Emílio Francesquini e Carla Negri Lintzmayer 2018.Q3 Centro de Matemática, Computação e Cognição Universidade Federal do ABC Ponteiros Ponteiro Ponteiros

Leia mais

CURSO BÁSICO DE PROGRAMAÇÃO AULA 11. Revisão Aula Anterior Vetores Cadeia de Caracteres

CURSO BÁSICO DE PROGRAMAÇÃO AULA 11. Revisão Aula Anterior Vetores Cadeia de Caracteres CURSO BÁSICO DE PROGRAMAÇÃO AULA 11 Revisão Aula Anterior Vetores Cadeia de Caracteres Introdução a Linguagem C Laços de Repetição While Do-While For while() { } do { }while();

Leia mais

Algoritmos e Programação

Algoritmos e Programação Algoritmos e Programação Aula 3 Introdução a Linguagem C Profa. Marina Gomes marinagomes@unipampa.edu.br 1 Aula de Hoje - Criar programas simples em C utilizando a estrutura básica; - Declarar variáveis;

Leia mais

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: ponteiros e alocação dinâmica

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: ponteiros e alocação dinâmica Universidade Federal de Uberlândia Faculdade de Computação Linguagem C: ponteiros e alocação dinâmica Prof. Renato Pimentel 1 Ponteiros 2 Prof. Renato Pimentel 1 Ponteiros: introdução Toda a informação

Leia mais

Alocação Estática e Dinâmica. Prof. M.Sc. Mariella Berger

Alocação Estática e Dinâmica. Prof. M.Sc. Mariella Berger Alocação Estática e Dinâmica Prof. M.Sc. Mariella Berger http://www.inf.ufes.br/~mberger mberger@inf.ufes.br mariellaberger@gmail.com Alocação Estática Estratégia de alocação de memória na qual toda a

Leia mais

3. Linguagem de Programação C

3. Linguagem de Programação C Introdução à Computação I IBM1006 3. Linguagem de Programação C Prof. Renato Tinós Departamento de Computação e Matemática (FFCLRP/USP) 1 3.3. Conceitos Básicos de C: Expressões, Operadores e Bibliotecas

Leia mais