Aula 20 - Ponteiros. Prof. Laura Silva de Assis. Engenharia de Computação. CEFET/RJ - Centro Federal de Educação Tecnológica Celso Suckow da Fonseca

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

Download "Aula 20 - Ponteiros. Prof. Laura Silva de Assis. Engenharia de Computação. CEFET/RJ - Centro Federal de Educação Tecnológica Celso Suckow da Fonseca"

Transcrição

1 Programação Aula 20 - Ponteiros Prof. Laura Silva de Assis Engenharia de Computação 2 o Período CEFET/RJ - Centro Federal de Educação Tecnológica Celso Suckow da Fonseca UnED Petrópolis 2 o semestre

2 1 Sumário 1 2 3

3 com ponteiros Ponteiros e vetores Matriz de ponteiros Indireção múltipla Atribuição Em geral, expressões envolvendo ponteiros concordam com as mesmas regras de qualquer outra expressão em C; Como ocorre com qualquer variável um ponteiro pode ser usado do lado direito de uma atribuição para passar seu valor para um outro ponteiro. #include <stdio.h> void main(){ int x ; int p1, p2 ; p1 = &x; p2 = p1 ; printf ( valor de x = %d \t \t endereco de x = %p\n, x, &x) ; printf ( valor de x = %d \t \t endereco apontado por p1 = %p\n, x, p1) ; printf ( Endereco apontado por p2 = %p\n, p2) ; } Tanto p1 quanto p2 apontam para x. 2

4 com ponteiros Ponteiros e vetores Matriz de ponteiros Indireção múltipla Atribuição #include <stdio.h> void main(){ int x ; int p1, p2 ; p1 = &x; p2 = p1 ; printf ( valor de x = %d \t \t endereco de x = %p\n, x, p2) ; printf ( valor de x = %d \t \t endereco apontado por p1 = %p\n, x, p1) ; printf ( Endereco apontado por p2 = %p\n, p2) ; } O modificador de formato da função printf(), %p, faz com que a função apresente um endereço no formato do computador. Resultado da execução valor de x = 0 endereco de x = 0x7fffe482e7dc valor de x = 0 endereco apontado por p1 = 0x7fffe482e7dc Endereco apontado por p2 = 0x7fffe482e7dc 3

5 com ponteiros Ponteiros e vetores Matriz de ponteiros Indireção múltipla Aritmética Existem duas operações aritméticas que podem ser usada literalmente com ponteiros: adição e subtração; Considerando as instruções a seguir e o armazenamento de inteiros com 2 bytes: #include <stdio.h> void main(){ int x = 20; //considerando x armazenado na memó ria 2000 int p1 = &x ; p1++; } Após a instrução p1++, p1 contém 2002 e não 2001; Cada vez que p1 é incrementado ele aponta para o próximo inteiro (o mesmo acontece com o decremento). 4

6 5 Aritmética - Incremento com ponteiros Ponteiros e vetores Matriz de ponteiros Indireção múltipla Um ponteiro pode ser incrementado como qualquer variável; O incremento em um ponteiro (ptr) para um determinado tipo, significa que o novo endereço do ponteiro é seu endereço anterior + sizeof(tipo); Então o ponteiro não avança um byte, mas sim a dimensão do tipo do objeto para o qual ele aponta.

7 6 Aritmética - Incremento com ponteiros Ponteiros e vetores Matriz de ponteiros Indireção múltipla Um ponteiro para o tipo xyz avança sempre sizeof(xyz) bytes por unidade de incremento; Na operação de incremento, podem-se utilizar os operadores normais: ptr++; ptr = ptr + 2; ptr += 4;... for ( i =0; i<n; i++) ptr +=i ;

8 7 Aritmética - Incremento Exemplo: com ponteiros Ponteiros e vetores Matriz de ponteiros Indireção múltipla #include <stdio.h> void main(){ int x=5; int px = &x; float y=5.0; float py = &y ; } printf ( %d %ld \n, x, (long )px) ; printf ( %d %ld \n, x+1, (long )(px+1)) ; printf ( %f %ld \n, y, (long )py) ; printf ( %f %ld \n, y+1, (long )(py+1)) ;

9 8 com ponteiros Ponteiros e vetores Matriz de ponteiros Indireção múltipla Aritmética Considerando as declarações: char ch = 3000; int i = 3000;

10 9 Aritmética - Decremento com ponteiros Ponteiros e vetores Matriz de ponteiros Indireção múltipla O decremento de ponteiros pode ser utilizado da mesma forma que o incremento; Um (ponteiro ) para o tipo xyz recua sempre sizeof(xyz) bytes por unidade de decremento. Exemplo: Programa que mostra uma string na tela na forma normal e inversa. #include <stdio.h> int main(){ char s [100]; char ptr = s ; printf ( Insira uma string \n ) ; gets(s) ; if ( ptr == \0 ) return (0) ; putchar( \n ) ; //continua...

11 10 Aritmética - Decremento com ponteiros Ponteiros e vetores Matriz de ponteiros Indireção múltipla Exemplo: Programa que mostra uma string na tela na forma normal e inversa //continuacao... // Imprimir normalmente while( ptr!= \0 ) putchar( ptr++); putchar( \n ) ; } //Imprimir a string ao contr á rio ptr ; while (ptr >= s) putchar( ptr ); putchar( \n ) ; Insira uma string programa ção I programa ção I I oãç amargorp

12 11 com ponteiros Ponteiros e vetores Matriz de ponteiros Indireção múltipla Aritmética geral Generalizando Cada vez que um ponteiro é incrementado ele aponta para a posição de memória do próximo elemento do seu tipo base (decremento elemento anterior); Logo, quando um ponteiro de caracter é incrementado seu valor aumenta em 1, porém quando um ponteiro de inteiro é incrementado seu valor aumenta em dois; Toda aritmética de ponteiro é feita relativamente ao tipo de base do ponteiro.

13 12 Aritmética - Soma e subtração com ponteiros Ponteiros e vetores Matriz de ponteiros Indireção múltipla Pode-se somar e subtrair ponteiros: int p1;... p1 += 12; A expressão acima faz p1 apontar para o décimo segundo elemento inteiro adiante do elemento que p1 aponta atualmente; Além dessas operações nenhuma outra aritmética pode ser efetuada com ponteiros (não podemos dividir ou multiplicar).

14 com ponteiros Ponteiros e vetores Matriz de ponteiros Indireção múltipla Aritmética - Soma e subtração A operação de subtração entre dois ponteiros para elementos do mesmo tipo permite saber quantos elementos existem entre um endereço e outro; A diferença entre ponteiros só pode ser realizada entre ponteiros do mesmo tipo. #include <stdio.h> int strlen1 (char s){ char ptr = s ; while( s!= \0 ) s++; return ( int )(s ptr ) ; } void main(){ char s [100]; char ptr = s ; printf ( Introduza uma string \n ) ; gets(s) ; printf ( %d\n, strlen1 (s)) ; } 13

15 14 Comparação de ponteiros com ponteiros Ponteiros e vetores Matriz de ponteiros Indireção múltipla A comparação, como qualquer outra variável, também pode ser feita com ponteiros; int p1, p2;... // verifica se p1 e p2 apontam para o mesmo endereço if (p1 == p2) // verifica se p1 aponta para NULL if (p1 == NUL)

16 com ponteiros Ponteiros e vetores Matriz de ponteiros Indireção múltipla Comparação de ponteiros É possível comparar dois ponteiros (para o mesmo tipo) em uma expressão relacional; int p, q;... if (p < q) printf ( p aponta para uma memó ria mais baixa que q ) ; else if (p = = q) printf ( p aponta para a mesma posi ção de memó ria que q ) ; else printf ( p aponta para uma memó ria mais alta que q ) ; Geralmente, a comparação de ponteiros é utilizada quando dois ou mais ponteiros apontam para um objeto comum; Pode-se utilizar qualquer operador <,<=,>,>=,==e! =. 15

17 16 Comparação de ponteiros com ponteiros Ponteiros e vetores Matriz de ponteiros Indireção múltipla Exemplo: Uma pilha é uma lista de dados em que o último elemento a entrar é o primeiro a sair - LIFO (pillha de pratos); As pilhas são frequentemente usadas em compiladores, planilhas, etc (softwares relacionados com o sistema); Para criar uma pilha são necessárias basicamente duas funções: push() e pop(); push() insere elementos na pilha e pop() remove elementos da mesma.

18 com ponteiros Ponteiros e vetores Matriz de ponteiros Indireção múltipla Comparação de ponteiros Exemplo: #include <stdio.h> #include <stdlib.h> #define SIZE 50 //Variá veis globais int topo, p1, stack [SIZE ]; //funcao para inserir na pilha void push( int num){ p1++; if (p1 = = topo+size){ printf ( Estouro da pilha\n ) ; exit (1) ; } p1 = num; } //funcao para remover da pilha int pop(){ if (p1 = = topo){ printf ( Pilha vazia!\n ) ; exit (1) ; } p1 ; return (p1+1); } //continua... 17

19 18 Comparação de ponteiros com ponteiros Ponteiros e vetores Matriz de ponteiros Indireção múltipla Exemplo: //continuacao... void main(){ int value ; topo = stack ; p1 = stack ; do{ printf ( Digite um valor\n ) ; scanf( %d, &value ) ; if (value!= 0) push( value ) ; else printf ( Elemento desempilhado: %d\n,pop()) ; }while (value!= 1); }

20 19 Comparação de ponteiros com ponteiros Ponteiros e vetores Matriz de ponteiros Indireção múltipla Resultado da execução: Digite um valor 5 Digite um valor 3 Digite um valor 56 Digite um valor 2 Digite um valor 0 Elemento desempilhado: 2 Digite um valor 56 Digite um valor 0 Elemento desempilhado: 56 Digite um valor 1

21 20 com ponteiros Ponteiros e vetores Matriz de ponteiros Indireção múltipla O nome de um vetor corresponde ao endereço de seu primeiro elemento; int vet [10]; vet = = &vet [0] Logo, o nome de um vetor é um ponteiro para o primeiro elemento desse vetor, porém é um ponteiro constante associado à sua própria memória; Exemplo:... int v [3] = {10, 20, 30}; int ptr ; ptr = v; //mesmo que ptr = &v [0] printf ( %d %d\n, v[0], ptr ) ; //sa í da ptr = &v [2]; printf ( %d %d\n, v[2], ptr ) ; //sa í da 30 30

22 21 com ponteiros Ponteiros e vetores Matriz de ponteiros Indireção múltipla Ponteiros e vetores acesso aos elementos O C fornece dois métodos para acessar elementos de uma matriz: aritmética de ponteiros e indexação de matrizes; Exemplo: char s [] = OlaOleOli ; char ptr = s ; Como pode ser feito o acesso ao caracter a?; s[2] - Acesso ao índice 2 do vetor de caracteres;

23 22 com ponteiros Ponteiros e vetores Matriz de ponteiros Indireção múltipla Ponteiros e vetores acesso aos elementos O C fornece dois métodos para acessar elementos de uma matriz: aritmética de ponteiros e indexação de matrizes; Exemplo: char s [] = OlaOleOli ; char ptr = s ; *(ptr+2) - Acesso à posição de memória onde ptr aponta adicionado à 2 posições à frente; *(s+2) - Como s aponta para a primeira posição do vetor s adicionando 2 temos a terceira posição;

24 23 com ponteiros Ponteiros e vetores Matriz de ponteiros Indireção múltipla Ponteiros e vetores acesso aos elementos char s [] = OlaOleOli ; char ptr = s ; ptr[2] - O endereçamento de elementos através de colchetes pode ser realizados também por ponteiros, como se tratasse de um vetor. Se vet for um vetor já declarado, então: vet [0] = = (vet ) vet [1] = = (vet+1) vet [2] = = (vet+2)... vet [n] = = (vet+n)

25 24 com ponteiros Ponteiros e vetores Matriz de ponteiros Indireção múltipla Matriz de ponteiros Ponteiros podem ser organizados em matrizes como qualquer outro tipo de dados; int x [10]; Para atribuir o endereço de uma variável inteira, chamada var, ao terceiro elemento da matriz de ponteiro, faz-se: x [2] = &var ; Para obter o valor de var escreve-se; x [2];

26 com ponteiros Ponteiros e vetores Matriz de ponteiros Indireção múltipla Matriz de ponteiros Se for necessário passar uma matriz de ponteiros para uma função, pode ser usado o mesmo método que é utilizado para passar outras matrizes; Chame a função com o nome da matriz sem qualquer índice; void display array ( int q []) { int t ; for (t=0; t < 10; t++) printf ( %d, q[ t ]) ; } O parâmetro q precisa ser declarado como uma matriz de ponteiros para inteiros; Matrizes de ponteiros são normalmente usadas como ponteiros para strings. 25

27 26 Ponteiros de ponteiros com ponteiros Ponteiros e vetores Matriz de ponteiros Indireção múltipla Quando desejamos armazenar o endereço de uma variável basta declara um ponteiro com o operador * e atribuir o endereço de uma variável ao ponteiro com o operador &; Se desejarmos armazenar o endreço de um ponteiro, declaramos um ponteiro para o tipo da variável; int x; int ptrx ; int ptr ptrx ;

28 27 Ponteiros de ponteiros com ponteiros Ponteiros e vetores Matriz de ponteiros Indireção múltipla Pode-se ter um ponteiro apontando para outro ponteiro, o qual aponta para o valor final. Essa situação é chamada de indireção múltipla, ou ponteiros para ponteiros; Quando se tem um ponteiro para ponteiro, o primeiro ponteiro contém o endereço para o segundo ponteiro, o qual aponta para a variável que contém o valor desejado;

29 28 Ponteiros de ponteiros com ponteiros Ponteiros e vetores Matriz de ponteiros Indireção múltipla A indireção múltipla pode ser realizada com qualquer dimensão, porém dificilmente é necessário mais que um ponteiro para ponteiro; Indireção excessiva é difícil de seguir e propensa a erros conceituais; Uma variável que é um ponteiro para ponteiro deve ser declarada como tal, para isso deve-se colocar um * adicional na frente do nome da variável; float notas ; A variável nota não é um ponteiro para um ponto flutuante e sim um ponteiro para um ponteiro float.

30 29 Ponteiros de ponteiros com ponteiros Ponteiros e vetores Matriz de ponteiros Indireção múltipla Para acessar o valor final apontado indiretamente por um ponteiro a um ponteiro, deve-se utilizar o operador * duas vezes. #include <stdio.h> void main(){ int x, p, q; } x = 10; p = &x ; q = &p; printf ( \n x = %d \n\n, q) ; //imprime o valor de x, ou seja, x = 10 Resultado: x = 10

31 30 Ponteiros de ponteiros com ponteiros Ponteiros e vetores Matriz de ponteiros Indireção múltipla Para acessar o valor final apontado indiretamente por um ponteiro a um ponteiro, deve-se utilizar o operador * duas vezes. #include <stdio.h> void main(){ int x, ptr x, ptr ptr x ; x = 5; } ptr x = &x ; ptr ptr x = &ptr x ; printf ( x = %d &x = %ld\n, x, (long )&x) ; printf ( x = %d &x = %ld\n, ptr x, (long ) ptr x ) ; printf ( x = %d &x = %ld\n, ptr ptr x, (long ) ptr ptr x ) ; Resultado: x = 5 &x = x = 5 &x = x = 5 &x =

32 31 Passagem de parâmetro Introdução Tipos de passagem de parâmetros Passagem de parâmetro por valor Passagem de parâmetro por referência Linha de comando Revisando... Uma função é composta por 4 partes distintas: Nome da função; Tipo do retorno; Lista de parâmetros; Corpo da função.

33 32 Passagem de parâmetro Introdução Tipos de passagem de parâmetros Passagem de parâmetro por valor Passagem de parâmetro por referência Linha de comando Exemplo int Maior( int a, int b){ return (a > b)? a : b; } Nome da função Maior. Tipo de retorno int. Lista de parâmetros int a, int b. Corpo da função return (a > b)? a : b;. Depois que uma função é escrita, esta é invocada através do seu nome, seguido do conjunto de argumentos colocados entre parênteses.

34 Tipo de retorno Introdução Tipos de passagem de parâmetros Passagem de parâmetro por valor Passagem de parâmetro por referência Linha de comando Uma função possui apenas um tipo de retorno ou nenhum (void); Caso seja necessário obter da função mais de um valor (após seu processamento) temos um problema; Exemplo: Função que calcula quantos elementos de um vetor de float são menor que zero e ainda retorne o menor deles; O número de elementos de um vetor é armazenado em um int e o menor dos elementos é armazenado em uma variável do tipo float. Qual deverá então ser o tipo de retorno da função? Para resolver esse problema passa-se as variáveis destinatárias dos resultados para a própria função, de forma que seja a própria função que carregue os resultados nas variáveis. 33

35 34 Exemplo - Troca de valores Introdução Tipos de passagem de parâmetros Passagem de parâmetro por valor Passagem de parâmetro por referência Linha de comando Uma das operações que realizamos com maior frequência é a troca de valores entre variáveis; Por exemplo, a ordenação de um vetor é realizada através de trocas sucessivas de elementos até que todos eles se apresentem de acordo com uma determinada ordem; Uma troca se realiza em 3 passos e necessita sempre de uma variável auxiliar do tipo dos elementos a serem trocados; Os elementos a serem trocados deveriam ser enviados para a função que realizará a troca.

36 35 Exemplo - Troca de valores Introdução Tipos de passagem de parâmetros Passagem de parâmetro por valor Passagem de parâmetro por referência Linha de comando #include <stdio.h> void troca( int a, int b){ int tmp; tmp = a; a = b; b = tmp; } void main(){ int n, k; } printf ( Insira dois números inteiros \n ) ; scanf ( %d %d,&n, &k) ; printf ( \nantes da troca : \n n = %d \t k = %d\n, n, k) ; troca (n,k) ; printf ( \ndepois da troca : \n n = %d \t k = %d\n, n, k) ;

37 36 Exemplo - Troca de valores Introdução Tipos de passagem de parâmetros Passagem de parâmetro por valor Passagem de parâmetro por referência Linha de comando Resultado da execução Insira dois números inteiros 2 5 Antes da troca : n = 2 k = 5 Depois da troca : n = 2 k = 5 Nota Nenhum dos elementos foi trocado, cada variável ficou exatamente com o valor existente antes da chamada da função troca.

38 37 Introdução Tipos de passagem de parâmetros Passagem de parâmetro por valor Passagem de parâmetro por referência Linha de comando - Declaração das variáveis e atribuição de valores Sempre que enviamos argumentos para uma função, estes tem que ser armazenados em memória unicamente durante a execução da função, sendo depois eliminados; Exemplo: programa troca de inteiros;

39 38 - Chamada da função Introdução Tipos de passagem de parâmetros Passagem de parâmetro por valor Passagem de parâmetro por referência Linha de comando Sempre que uma função é invocada é criado um ambiente próprio onde é feito a criação das variáveis necessárias à execução do código dessa função; É como se fosse criada uma barreira que cortasse a ligação com o resto do programa que a invocou; Em seguida é alocado espaço para os parâmetros da função, que são automaticamente iniciados com os valores que lhe foram enviados pelo programa invocador.

40 39 - Chamada da função Introdução Tipos de passagem de parâmetros Passagem de parâmetro por valor Passagem de parâmetro por referência Linha de comando void troca ( int a, int b)... troca(n, k) ;

41 40 - Chamada da função Introdução Tipos de passagem de parâmetros Passagem de parâmetro por valor Passagem de parâmetro por referência Linha de comando Em seguida é realizado a alocação de espaço para as variáveis locais à função, as quais, se não forem inicializadas pelo programador, armazenam inicialmente um lixo de memória. int tmp;

42 41 - Chamada da função Introdução Tipos de passagem de parâmetros Passagem de parâmetro por valor Passagem de parâmetro por referência Linha de comando Logo após são executadas as três atribuições que fazem parte da função troca. tmp = a; a = b; b = tmp;

43 42 - Chamada da função Introdução Tipos de passagem de parâmetros Passagem de parâmetro por valor Passagem de parâmetro por referência Linha de comando Como pode-se ver na memória os valores das variáveis a e b estão trocados; Após a execução do código da função, o ambiente associado a ela é destruído, voltando o controle da execução para o programa que a invocou.

44 43 Introdução Tipos de passagem de parâmetros Passagem de parâmetro por valor Passagem de parâmetro por referência Linha de comando Notas Depois de ter terminado uma função, todo o ambiente em que esta é executado é eliminado; Os valores das variáveis originais permanecem inalterados, pois a troca não foi feita com o valor das variáveis e sim com a cópia desses valores.

45 por valor Introdução Tipos de passagem de parâmetros Passagem de parâmetro por valor Passagem de parâmetro por referência Linha de comando Sempre que a passgem de parâmetro é realizada por valor, não é a variável que é enviada à função, mas sim uma cópia do seu valor; Sendo assim, dentro da função pode-se alterar esses valores recebidos como parâmetros que, o valor original das variáveis não sofrerá qualquer alteração, pois são cópias dos valores originais; Uma vez que a execução da função é encerrada, o programa continua a execução com os valores originais das variáveis invocadoras. Nota Numa passagem de parâmetro por valor, são sempre enviadas para a função cópias dos valores de que esta necessita. Os valores das variáveis de invocação NUNCA são alterados. 44

46 45 por referência Introdução Tipos de passagem de parâmetros Passagem de parâmetro por valor Passagem de parâmetro por referência Linha de comando Na passagem de parâmetros por referência o que é enviado para a função é a própia variável, ou seja a referência a ela, e não uma cópia do seu valor; Dessa forma, qualquer alteração nos parâmetros da função, na realidade, ocorre uma alteração nas variáveis referênciadas na chamada da função.

47 46 por referência Introdução Tipos de passagem de parâmetros Passagem de parâmetro por valor Passagem de parâmetro por referência Linha de comando A passagem de parâmetros por referência é realizada em C utilizando ponteiros; Como em C nunca se consegue alterar os argumentos passados a uma função, pode-se passar o endereço da variável usando o operador &; Se o argumento será um endereço então o parâmetro do cabeçalho da função deve ser um ponteiro para o tipo passado;

48 47 por referência Introdução Tipos de passagem de parâmetros Passagem de parâmetro por valor Passagem de parâmetro por referência Linha de comando A invocação da função troca será realizada com o endereço das variáveis e NÃO com o seu valor; troca(&n, &k) ; O cabeçalho da função troca passará a receber, como parâmetro, dois ponteiros para inteiros; void troca ( int a, int b)

49 48 por referência Introdução Tipos de passagem de parâmetros Passagem de parâmetro por valor Passagem de parâmetro por referência Linha de comando Situação da memória quando a função é executada

50 49 por referência Introdução Tipos de passagem de parâmetros Passagem de parâmetro por valor Passagem de parâmetro por referência Linha de comando O objetivo da função agora não é trocar os valores das variáveis a e b e sim o que essas variáveis apontam (n, k); De qualquer forma em toda troca precisa-se utilizar uma variável auxiliar; Passo a passo da troca: tmp = a;

51 50 por referência Introdução Tipos de passagem de parâmetros Passagem de parâmetro por valor Passagem de parâmetro por referência Linha de comando Estando o valor original de n já armazenado em tmp, podemos colocar no seu local o valor de k sem perda de dados; Como só temos acesso às variáveis a e b para conseguir referenciar as posições de memória abaixo da linha delimitadora da função. a = b;

52 51 por referência Introdução Tipos de passagem de parâmetros Passagem de parâmetro por valor Passagem de parâmetro por referência Linha de comando Por último basta colocar em k o valor armazenado na variável auxiliar; b = tmp;

53 52 por referência Introdução Tipos de passagem de parâmetros Passagem de parâmetro por valor Passagem de parâmetro por referência Linha de comando Quando a função termina, toda a memória utilizada na execução é eliminada e n e k estão com os valores trocados como desejado;

54 53 por referência Introdução Tipos de passagem de parâmetros Passagem de parâmetro por valor Passagem de parâmetro por referência Linha de comando Exemplo: Programa da torca completo com passagem por referência. #include <stdio.h> void troca ( int a, int b){ int tmp; tmp = a; a = b; b = tmp; } void main(){ int n, k; printf ( Insira dois números inteiros \n ) ; scanf( %d %d,&n, &k) ; printf ( \nantes da troca n = %d e k = %d\n, n, k) ; troca(&m, &k) ; printf ( Depois da troca n = %d e k = %d\n,n,k) ; }

55 54 por referência Introdução Tipos de passagem de parâmetros Passagem de parâmetro por valor Passagem de parâmetro por referência Linha de comando Exemplo: Programa da torca completo com passagem por referência. Resultado Insira dois números inteiros 2 4 Antes da troca n = 2 e k = 4 Depois da troca n = 4 e k = 2 Nota Note que a variável tmp continua sendo inteira, pois seu objetivo é armazenar um dos inteiros para que o valor não se perca.

56 55 Passagem de parâmetro na linha de comando Introdução Tipos de passagem de parâmetros Passagem de parâmetro por valor Passagem de parâmetro por referência Linha de comando Em C é possível fazer a passagem de argumentos para programas via linha de comando; Pergunta: Quem é o destinatário dos argumentos passados na linha de comando? Resposta: O próprio programa! Para realizar a passagem de parâmetros, para o main() através da linha de comando, basta digitar o nome do programa seguido da lista de argumentos../ nome do prog <lista de argumentos>

57 56 Passagem de parâmetro na linha de comando Introdução Tipos de passagem de parâmetros Passagem de parâmetro por valor Passagem de parâmetro por referência Linha de comando Internamente, o programa receberá os argumentos em um vetor de strings; Para tal, são necessários especificar dois parâmetros especiais na função principal do programa: main( int argc, char argv []) argc: É um inteiro que indica quantos argumentos foram passados na linha de comando (incluindo o próprio nome do programa); argv: Vetor contendo todas as strings passadas na linha de comando.

58 57 Passagem de parâmetro na linha de comando Introdução Tipos de passagem de parâmetros Passagem de parâmetro por valor Passagem de parâmetro por referência Linha de comando Notas O parâmetro argv é um vetor pois foi declarado como argv[] e os elementos que armazena são do tipo char *, portanto é um vetor de strings. argv também pode ser declarado como sendo do tipo char **argv (ponteiro duplo para char) dado que o nome de um vetor é o endereço do seu primeiro elemento.

59 58 Passagem de parâmetro na linha de comando Introdução Tipos de passagem de parâmetros Passagem de parâmetro por valor Passagem de parâmetro por referência Linha de comando Exemplo:./ prog.e alfa 123 x 55,4 Valor de argc será 5; O vetor argv irá conter as strings passadas na linha de comando e todos os parâmetros são armazenados como strings.

60 59 Passagem de parâmetro na linha de comando Introdução Tipos de passagem de parâmetros Passagem de parâmetro por valor Passagem de parâmetro por referência Linha de comando Exemplo 1: Programa que mostra todos os parâmetros recebidos na linha de comando. #include <stdio.h> main( int argc, char argv []) { int i ; for ( i =0; i<argc ; i++) printf ( %d Par metro = \ %s\ \n, i+1, argv [ i ]) ; }

61 60 Passagem de parâmetro na linha de comando Introdução Tipos de passagem de parâmetros Passagem de parâmetro por valor Passagem de parâmetro por referência Linha de comando Resultado execução: Programa que mostra todos os parâmetros recebidos na linha de comando. // primeira execução./ parametros.e 1 Par metro =./ parametros.e // segunda execu ção./ parametros.e alfa 123 x 55 1 Par metro =./ parametros.e 2 Par metro = alfa 3 Par metro = Par metro = x 5 Par metro = 55

62 61 Passagem de parâmetro na linha de comando Introdução Tipos de passagem de parâmetros Passagem de parâmetro por valor Passagem de parâmetro por referência Linha de comando Exemplo 2: Programa que soma todos os números passados na linha de comando. #include <stdio.h> #include <stdlib.h> void main( int argc, char argv []) { int i, total ; printf ( \npar metros \n ) ; for ( i=1, total=0; i<argc ; i++){ total += atoi (argv [ i ]) ; printf ( %s, argv [ i ]) ; } printf ( \nsoma = %d \n, total ) ; } Resultado execução./soma. e Par metros Soma = 7

63 62 Passagem de parâmetro na linha de comando Introdução Tipos de passagem de parâmetros Passagem de parâmetro por valor Passagem de parâmetro por referência Linha de comando Exemplo 3: Programa que soma todos os números passados na linha de comando (ponteiro). #include <stdio.h> #include <stdlib.h> void main( int argc, char argv){ int i, total ; printf ( \npar metros \n ) ; argv++; for ( total =0; argv!=null; argv++){ total += atoi( argv) ; printf ( %s, argv) ; } printf ( \n\nsoma = %d \n, total ) ; } Resultado execução./soma2.e Par metros Soma = 6

64 63 1 C Completo e Total, Herbert Schidt; Pearson Makron Books; 3a. Ed., Linguagem C, Luís Damas, LTC, 10a. Ed.2014.

Linguagem C: Ponteiros. Prof. Leonardo Barreto Campos 1

Linguagem C: Ponteiros. Prof. Leonardo Barreto Campos 1 Linguagem C: Ponteiros Prof. Leonardo Barreto Campos 1 Sumário Ponteiros; Variáveis ponteiros; Operadores de ponteiros; Expressões com ponteiros; Atribuição de ponteiros; Aritmética de ponteiros; Comparação

Leia mais

Centro Universitário Franciscano Curso de Sistemas de Informação Disciplina de algoritmos e programação II. Ponteiros

Centro Universitário Franciscano Curso de Sistemas de Informação Disciplina de algoritmos e programação II. Ponteiros Centro Universitário Franciscano Curso de Sistemas de Informação Disciplina de algoritmos e programação II Ponteiros Profa.: Simone Ceolin Slides (Prof.Tiago Rios da Rocha) Primeiro Semestre 2011 Sumário

Leia mais

Aula 8 - Matrizes e Strings

Aula 8 - Matrizes e Strings Programação I Aula 8 - e Prof. Laura Silva de Assis Engenharia da Computação 2 o Período CEFET/RJ - Centro Federal de Educação Tecnológica Celso Suckow da Fonseca UnED Petrópolis 2n o semestre - 2015 1

Leia mais

Funções em Linguagem C Parte II

Funções em Linguagem C Parte II Slides inicialmente preparados pelo Prof. Dr. Claudio Fabiano Motta Toledo Funções em Linguagem C Parte II Profa. Dra. Elisa Yumi Nakagawa 1. Semestre 2017 Sumário Introdução a Ponteiros Escopo de Variáveis

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

Linguagem C: Introdução

Linguagem C: Introdução Linguagem C: Introdução Linguagem C É uma Linguagem de programação genérica que é utilizada para a criação de programas diversos como: Processadores de texto Planilhas eletrônicas Sistemas operacionais

Leia mais

1 Exercícios com ponteiros

1 Exercícios com ponteiros Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Oitava Aula Prática - 29 de outubro de 2010 O objetivo desta aula prática é exercitar ponteiros e funções. 1 Exercícios com ponteiros

Leia mais

1 Exercícios com ponteiros

1 Exercícios com ponteiros Computação para Informática Funções e Ponteiros1 EXERCÍCIOS COM PONTEIROS Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Aula Prática - Funções e ponteiros O objetivo desta aula prática

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

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

Estrutura de dados 2. Ponteiro. Prof. Jesuliana N. Ulysses

Estrutura de dados 2. Ponteiro. Prof. Jesuliana N. Ulysses 1 3 Estrutura de dados 2 Ponteiro Ponteiro 2 O ponteiro é um tipo de dado como int, char ou float. A diferença do ponteiro ponteiro guardará um endereço de memória. Por meio deste endereço pode-se acessar

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

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

Métodos Computacionais. Operadores, Expressões Aritméticas e Entrada/Saída de Dados

Métodos Computacionais. Operadores, Expressões Aritméticas e Entrada/Saída de Dados Métodos Computacionais Operadores, Expressões Aritméticas e Entrada/Saída de Dados Tópicos da Aula Hoje aprenderemos a escrever um programa em C que pode realizar cálculos Conceito de expressão Tipos de

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

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

Estruturas de Dados Aulas 3 e 4: Uso da. 14/03/2011 e 16/03/2011

Estruturas de Dados Aulas 3 e 4: Uso da. 14/03/2011 e 16/03/2011 Estruturas de Dados Aulas 3 e 4: Uso da memória e Vetores 14/03/2011 e 16/03/2011 Uso da memória Existem 3 maneiras de reservar o espaço da memória: Variáveis globais (estáticas) Espaço existe enquanto

Leia mais

Métodos Computacionais. Funções, Escopo de Variáveis e Ponteiros

Métodos Computacionais. Funções, Escopo de Variáveis e Ponteiros Métodos Computacionais Funções, Escopo de Variáveis e Ponteiros Tópicos da Aula Hoje vamos detalhar funções em C Escrevendo funções Comando return Passagem de argumentos por valor Execução de uma função

Leia mais

Introdução. Ponteiros

Introdução. Ponteiros Introdução O correto entendimento e uso de ponteiros é crítico para um programador C. Há três razões para isso: 1. Ponteiros fornecem os meios pelos quais as funções podem modificar seus argumentos; 2.

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 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

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

O que é um apontador em C (type pointer in C)?

O que é um apontador em C (type pointer in C)? O que é um apontador em C (type pointer in C)? Um apontador é uma variável que contém um endereço de outra variável. int x = 10;//variável inteira iniciada com o valor 10 int *px = &x;//variável apontadora

Leia mais

Módulo 5 Vetores e Alocação Dinâmica

Módulo 5 Vetores e Alocação Dinâmica Estruturas de Dados Módulo 5 Vetores e Alocação Dinâmica 1/9/2005 (c) Dept. Informática - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora

Leia mais

Tipos Básicos. Operadores de Incremento e Decremento. Operador Sizeof. Estruturas de Dados Aula 2: Estruturas Estáticas

Tipos Básicos. Operadores de Incremento e Decremento. Operador Sizeof. Estruturas de Dados Aula 2: Estruturas Estáticas Tipos Básicos Quantos valores distintos podemos representar com o tipo char? Estruturas de Dados Aula 2: Estruturas Estáticas 03/03/2010 Operadores de Incremento e Decremento ++ e -- Incrementa ou decrementa

Leia mais

Introdução a Linguagem C. Prof. Me. Hélio Esperidião

Introdução a Linguagem C. Prof. Me. Hélio Esperidião Introdução a Linguagem C Prof. Me. Hélio Esperidião Características de um programa De forma geral a maioria dos programas são compostos por dados de entrada, processamento e dados de saída. Entrada de

Leia mais

Vetores e Matrizes. Prof. Fabrício Olivetti de França Charles Henrique

Vetores e Matrizes. Prof. Fabrício Olivetti de França Charles Henrique Vetores e Matrizes Prof. Fabrício Olivetti de França Charles Henrique Vetores Estáticos Um vetor em C é declarado como: tipo nome[tamanho]; 2 Vetores Estáticos /* vetor de nome v1 com 100 elementos do

Leia mais

Programação Estruturada Prof. Rodrigo Hausen Organização e Gerenciamento de Memória

Programação Estruturada Prof. Rodrigo Hausen  Organização e Gerenciamento de Memória Programação Estruturada Prof. Rodrigo Hausen http://progest.compscinet.org Organização e Gerenciamento de Memória 1 AULA PASSADA - vetores ou arrays Declaração de um vetor (array) em C: tipo nome[tamanho];

Leia mais

Estruturas de Dados Aula 2: Estruturas Estáticas 02/03/2011

Estruturas de Dados Aula 2: Estruturas Estáticas 02/03/2011 Estruturas de Dados Aula 2: Estruturas Estáticas 02/03/2011 Tipos Básicos Quantos valores distintos podemos representar com o tipo char? Operadores de Incremento e Decremento ++ e -- Incrementa ou decrementa

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

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

É o asterisco (*) que faz o compilador saber que aquela variável não vai guardar um valor e sim um endereço para aquele tipo especificado.

É o asterisco (*) que faz o compilador saber que aquela variável não vai guardar um valor e sim um endereço para aquele tipo especificado. UDESC Joinville Departamento de Ciência da Computação Ponteiros Os ints guardam inteiros. Os floats guardam números de ponto flutuante. Os chars guardam caracteres. Ponteiros guardam endereços de memória.

Leia mais

Estruturas de Dados. Módulo 4 Funções. 9/8/2005 (c) Dept. Informática - PUC-Rio 1

Estruturas de Dados. Módulo 4 Funções. 9/8/2005 (c) Dept. Informática - PUC-Rio 1 Estruturas de Dados Módulo 4 Funções 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

Estruturas de Repetição

Estruturas de Repetição Estruturas de Repetição Introdução As estruturas de repetição, permitem executar mais de uma vez um mesmo trecho de código. Trata-se de uma forma de executar blocos de comandos somente sob determinadas

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

Algoritmos e Estruturas de Dados I (DCC/003) 2013/1. Estruturas Básicas. Aula Tópico 4

Algoritmos e Estruturas de Dados I (DCC/003) 2013/1. Estruturas Básicas. Aula Tópico 4 Algoritmos e Estruturas de Dados I (DCC/003) 2013/1 Estruturas Básicas Aula Tópico 4 1 Problema 3 Exibir o maior número inteiro que pode ser representado no computador. 2 Qual o maior número inteiro? Para

Leia mais

19 - Ponteiros em C Parte 1

19 - Ponteiros em C Parte 1 19 - Ponteiros em C Parte 1 Unesp Campus de Guaratinguetá Curso de Programação Computadores Prof. Aníbal Tavares Profa. Cassilda Ribeiro Ministrado por: Prof. André Amarante 10.1 Ponteiros: Definições

Leia mais

LÓGICA DE PROGRAMAÇÃO. PROFª. M.Sc. JULIANA H Q BENACCHIO

LÓGICA DE PROGRAMAÇÃO. PROFª. M.Sc. JULIANA H Q BENACCHIO LÓGICA DE PROGRAMAÇÃO PROFª. M.Sc. JULIANA H Q BENACCHIO Primeiro programa em C #include int main() { int num1, num2, result; scanf("%d",&num1); scanf("%d",&num2); result = num1 + num2; printf("%d",

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

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

Curso de Programação C em Ambientes Linux Aula 04 Curso de Programação C em Ambientes Linux Aula 04 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

Introdução à Computação

Introdução à Computação Introdução à Computação Linguagem C Aula de hoje Introdução Vetores (revisão) Relacionamento entre vetores e ponteiros Professor: André de Carvalho Definição: coleção de valores de dados individuais com

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

INF 1007 Programação II

INF 1007 Programação II INF 1007 Programação II Aula 04 Alocação Dinâmica Edirlei Soares de Lima Vetores - Declaração e Inicialização Declaração de um vetor: int meu_vetor[10]; Reserva um espaço de memória

Leia mais

Estruturas de Dados Aula 6: Cadeias de 28/03/2010

Estruturas de Dados Aula 6: Cadeias de 28/03/2010 Estruturas de Dados Aula 6: Cadeias de Caracteres 28/03/2010 Caracteres Caracteres são representados internamente por códigos numéricos Tipo char (inteiro pequeno ) 1 byte (8 bits) 256 caracteres possíveis

Leia mais

Programação Estruturada Aula 2 - Introdução

Programação Estruturada Aula 2 - Introdução Programação Estruturada Aula 2 - Introdução Prof. Luis Carlos Retondaro Técnico em Telecomunicações 2 o Ano CEFET/RJ - Centro Federal de Educação Tecnológica Celso Suckow da Fonseca Campus Petrópolis 2017

Leia mais

5. Vetores e alocação dinâmica

5. Vetores e alocação dinâmica 5. Vetores e alocação dinâmica W. Celes e J. L. Rangel 5.1. Vetores A forma mais simples de estruturarmos um conjunto de dados é por meio de vetores. Como a maioria das linguagens de programação, C permite

Leia mais

Matrizes em C. Lucas Ferrari de Oliveira Professor Adjunto. Universidade Federal do Paraná

Matrizes em C. Lucas Ferrari de Oliveira Professor Adjunto. Universidade Federal do Paraná em C Lucas Ferrari de Oliveira Professor Adjunto Universidade Federal do Paraná Uma matriz é uma coleção de variáveis do mesmo tipo que é referenciada por um nome comum; Em C todas as matrizes consistem

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

Introdução à Computação MAC0110

Introdução à Computação MAC0110 Introdução à Computação MAC0110 Prof. Dr. Paulo Miranda IME-USP Aula 2 Variáveis e Atribuições Memória Principal: Introdução Vimos que a CPU usa a memória principal para guardar as informações que estão

Leia mais

12 - Dados Estruturados Vetores, Matrizes e Strings

12 - Dados Estruturados Vetores, Matrizes e Strings 12 - Dados Estruturados Vetores, Matrizes e Strings Unesp Campus de Guaratinguetá Curso de Programação Computadores Prof. Aníbal Tavares Profa. Cassilda Ribeiro Ministrado por: Prof. André Amarante Vetores,

Leia mais

Tipos de Dados, Variáveis e Entrada e Saída em C. DCC 120 Laboratório de Programação

Tipos de Dados, Variáveis e Entrada e Saída em C. DCC 120 Laboratório de Programação Tipos de Dados, Variáveis e Entrada e Saída em C DCC 120 Laboratório de Programação Variáveis Uma variável representa um espaço na memória do computador para armazenar um determinado tipo de dado. Em C,

Leia mais

Curso C: Ponteiros e Arrays

Curso C: Ponteiros e Arrays Universidade de Brasília Departamento de Ciência da Computação Curso C: Ponteiros e Arrays Prof. Ricardo Pezzuol Jacobi rjacobi@cic.unb.br Ponteiros um ponteiro Ž uma vari vel que contžm o endere o um

Leia mais

Capítulo 2 Operadores. A função scanf()

Capítulo 2 Operadores. A função scanf() Capítulo 2 Operadores A função scanf() A função scanf() é outra das funções de E/S implementadas em todos os compiladores e nos permite ler dados formatados da entrada padrão (teclado). Sintaxe: scanf(

Leia mais

Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação. Material preparado pela profa Silvana Maria Affonso de Lara

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

Leia mais

Linguagem C: Variáveis e Operadores. Prof. Leonardo Barreto Campos 1

Linguagem C: Variáveis e Operadores. Prof. Leonardo Barreto Campos 1 Linguagem C: Variáveis e Operadores Prof. Leonardo Barreto Campos Sumário Variáveis: Tipos de variáveis; Nome da variável; Palavras reservadas; A função printf(); A função scanf(); Variáveis locais; Variáveis

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

#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

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

Gilberto A. S. Segundo. 24 de agosto de 2011

Gilberto A. S. Segundo. 24 de agosto de 2011 Exercícios - Alocação Dinâmica Gilberto A. S. Segundo Programação Aplicada de Computadores Engenharia Elétrica Universidade Federal do Espírito Santo - UFES 24 de agosto de 2011 1 / 23 Grupo de e-mail

Leia mais

Métodos Computacionais

Métodos Computacionais Métodos Computacionais Objetivos da Disciplina e Introdução a Linguagem C Construções Básicas Objetivos da Disciplina Objetivo Geral Discutir técnicas de programação e estruturação de dados para o desenvolvimento

Leia mais

Modulo 12: alocação dinâmica de memória

Modulo 12: alocação dinâmica de memória PROGRAMAÇÃO DE COMPUTADORES V - TCC- 00.323 Modulo 12: alocação dinâmica de memória Aura - Erick aconci@ic.uff.br, erickr@id.uff.br Roteiro porque e como utilizar a alocação dinâmica funções: malloc (

Leia mais

Linguagem C vetores. IF61A/IF71A - Computação 1 Prof. Leonelo Almeida. Universidade Tecnológica Federal do Paraná

Linguagem C vetores. IF61A/IF71A - Computação 1 Prof. Leonelo Almeida. Universidade Tecnológica Federal do Paraná Linguagem C vetores 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 execução do primeiro

Leia mais

Linguagem C (continuação)

Linguagem C (continuação) Linguagem C (continuação) Funções, arrays e ponteiros Slides adaptados, inspirados, muitos copiados dos slides do professor Pedro Pereira Centro de Cálculo Instituto Superior de Engenharia de Lisboa João

Leia mais

1ª Lista de Exercícios

1ª Lista de Exercícios Universidade Federal do Rio de Janeiro Data: 26/04/05 Disciplina: Computação I 1ª Lista de Exercícios 1) Faça um programa, em pseudo-código, que peça ao usuário que informe n números reais e então calcule

Leia mais

Faculdade de Computação

Faculdade de Computação Faculdade de Computação Programação Procedimental 1 o Laboratório de Programação C Prof. Cláudio C. Rodrigues 1. Introdução O objetivo desta aula prática é exercitar o uso de variáveis de vários tipos

Leia mais

Hello World. Linguagem C. Tipos de Dados. Palavras Reservadas. Operadores Aritméticos. Pré e pós incremento e pré e pós decremento

Hello World. Linguagem C. Tipos de Dados. Palavras Reservadas. Operadores Aritméticos. Pré e pós incremento e pré e pós decremento Hello World Linguagem C printf("hello world!\n"); main é a função principal, a execução do programa começa por ela printf é uma função usada para enviar dados para o vídeo Palavras Reservadas auto double

Leia mais

19 Vetores, Ponteiros e Funções

19 Vetores, Ponteiros e Funções 19 Vetores, Ponteiros e Funções Ronaldo F. Hashimoto e Carlos H. Morimoto Oobjetivodestaaulaérelacionarotipovetor com ponteiros eassimentendercomoutilizarvetorescomo parâmetros de funções. Ao final dessa

Leia mais

Linguagem C Controle do Fluxo de Execução. Lógica de Programação

Linguagem C Controle do Fluxo de Execução. Lógica de Programação Linguagem C Controle do Fluxo de Execução Lógica de Programação Caro(a) aluno(a), Aqui começaremos a escrever os nossos primeiros programas em uma Linguagem de Programação. Divirta-se!!! Estrutura Seqüencial

Leia mais

O vetor é provavelmente um dos mais simples e importantes tipos agregados. Através do seu uso, podemos

O vetor é provavelmente um dos mais simples e importantes tipos agregados. Através do seu uso, podemos Cláudio C. Rodrigues Faculdade da Computação -UFU LINGUAGEM C 04: VETORES, STRINGS E MATRIZES Faculdade da Computação - UFU 1 Introdução & Objetivo O vetor é provavelmente um dos mais simples e importantes

Leia mais

Computação 2. Aula 5. Profª. Fabiany defines vetor, strings e matriz por parâmetros de função

Computação 2. Aula 5. Profª. Fabiany defines vetor, strings e matriz por parâmetros de função Computação 2 Aula 5 defines vetor, strings e matriz por parâmetros de função Profª. Fabiany fabianyl@utfpr.com.br #define A diretiva #define define um identificador e uma string que o substituirá toda

Leia mais

Aula 1 Apresentação do Curso

Aula 1 Apresentação do Curso Departamento de Sistemas de Computação Universidade de São Paulo SSC 502 Laboratório de Introdução a Ciência de Computação I Aula 1 Apresentação do Curso Responsável Prof. Seiji Isotani (sisotani@icmc.usp.br)

Leia mais

Universidade Estadual do Maranhão Curso de Engenharia da Computação Mestrado em Engenharia da Computação e Sistemas

Universidade Estadual do Maranhão Curso de Engenharia da Computação Mestrado em Engenharia da Computação e Sistemas Notas de Aulas Sub-rotinas Prof. Dr. Luís Carlos Costa Fonseca São Luís 2013 Geralmente, problemas complexos exigem algoritmos complexos, mas sempre é possível dividir um problema grande em problemas menores.

Leia mais

LINGUAGEM C: ARRAY: VETORES E MATRIZES

LINGUAGEM C: ARRAY: VETORES E MATRIZES LINGUAGEM C: ARRAY: VETORES E MATRIZES Prof. André Backes POR QUE USAR ARRAY? As variáveis declaradas até agora são capazes de armazenar um único valor por vez. Sempre que tentamos armazenar um novo valor

Leia mais

Modularidade - Fun ções e Procedimentos

Modularidade - Fun ções e Procedimentos Modularidade - Fun ções e Procedimentos José Gustavo de Souza Paiva Problema Em diversas situa ções, é preciso executar uma tarefa específica diversas vezes em um programa, variando apenas os dados de

Leia mais

Introdução à Programação. Introdução a Linguagem C. Prof. José Honorato F. Nunes

Introdução à Programação. Introdução a Linguagem C. Prof. José Honorato F. Nunes Introdução à Programação Introdução a Linguagem C Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br Resumo da aula Introdução Variáveis Tipos de dados Operadores e Expressões: Operadores

Leia mais

Curso de Introdução à Liguagem de. Grupo PET-Tele. Universidade Federal Fluminense. July 16, 2012

Curso de Introdução à Liguagem de. Grupo PET-Tele. Universidade Federal Fluminense. July 16, 2012 urso de à urso de à Universidade Federal Fluminense July 16, 2012 Indrodução urso de à O é uma linguagem de programação criada por Dennis Ritchie, em 1972 e que continua a ser muito utilizada até os dias

Leia mais

Ambiente de desenvolvimento

Ambiente de desenvolvimento Linguagem C Ambiente de desenvolvimento Um programa em C passa por seis fases até a execução: 1) Edição 2) Pré-processamento 3) Compilação 4) Linking 5) Carregamento 6) Execução Etapa 1: Criação do programa

Leia mais

6 Alguns conceitos e comandos em programação

6 Alguns conceitos e comandos em programação 6 Alguns conceitos e comandos em programação 6.1 Diretivas Diretivas são instruções que permitem ao programador efetuar algum tipo de modificação à compilação, sendo analisadas e executadas pelo pré-compilador,

Leia mais

A Linguagem C. A forma de um programa em C

A Linguagem C. A forma de um programa em C A Linguagem C Criada em 1972 por D. M. Ritchie e K. Thompson. Tornou-se uma das mais importantes e populares, principalmente pela portabilidade e flexibilidade. Foi projetada para o desenvolvimento de

Leia mais

LINGUAGEM C: VARIÁVEIS E EXPRESSÕES

LINGUAGEM C: VARIÁVEIS E EXPRESSÕES LINGUAGEM C: VARIÁVEIS E EXPRESSÕES Prof. André Backes LINGUAGENS DE PROGRAMAÇÃO Linguagem de Máquina Computador entende apenas pulsos elétricos Presença ou não de pulso 1 ou 0 Tudo no computador deve

Leia mais

Algoritmos e Programação. Linguagem C Procedimentos e. Eliane Pozzebon

Algoritmos e Programação. Linguagem C Procedimentos e. Eliane Pozzebon Algoritmos e Programação Linguagem C Procedimentos e Funções Eliane Pozzebon Procedimentos e Funções Procedimentos são estruturas que agrupam um conjunto de comandos, que são executados quando o procedimento

Leia mais

Declarando e Utilizando Ponteiros. Para declarar um ponteiro temos a seguinte forma geral: tipo_do_ponteiro *nome_da_variável;

Declarando e Utilizando Ponteiros. Para declarar um ponteiro temos a seguinte forma geral: tipo_do_ponteiro *nome_da_variável; Declarando e Utilizando Ponteiros Para declarar um ponteiro temos a seguinte forma geral: tipo_do_ponteiro *nome_da_variável; É o asterisco (*) que faz o compilador saber que aquela variável não vai guardar

Leia mais

Linguagem C. Prof.ª Márcia Jani Cícero

Linguagem C. Prof.ª Márcia Jani Cícero Linguagem C Prof.ª Márcia Jani Cícero A estrutura Básica de um Programa em C Consiste em uma ou várias funções ou programas. main( ) // primeira função a ser executada // inicia a função // termina a função

Leia mais

Introdução à Linguagem C

Introdução à Linguagem C Introdução à Linguagem C Eduardo Simões de Albuquerque Instituto de Informática UFG 13/03/2006 1 História Inventada e desenvolvida por Dennis Ritchie em um DEC- PDP 11 Originária de: BCPL desenvolvida

Leia mais

LINGUAGEM C: FUNÇÕES FUNÇÃO 04/07/2017. Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa.

LINGUAGEM C: FUNÇÕES FUNÇÃO 04/07/2017. Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa. LINGUAGEM C: FUNÇÕES Prof. André Backes FUNÇÃO Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa. printf(): função que escreve na tela scanf(): função que lê o teclado

Leia mais

Introdução à Computação

Introdução à Computação Introdução à Computação Linguagem C Professor: André de Carvalho Aula de hoje Introdução Tipos compostos Tipo enumeração Conclusão Tipos compostos A Linguagem C permite criar tipos de dados definíveis

Leia mais

11 - Estrutura de um programa em C

11 - Estrutura de um programa em C 11 - Estrutura de um programa em C directivas para o compilador { main ( ) declarações instruções } -É possível utilizar comentários, exemplo: /* Comentário */ que não são traduzidos pelo compilador, pois

Leia mais

Estrutura do programa

Estrutura do programa Linguagem C Estrutura do programa Exemplo: #include #include main() { printf( Ola, mundo! ); system( pause ); }

Leia mais

Curso de C para Engenharias

Curso de C para Engenharias Aula 1 Cristiano Dalbem Dennis Balreira Gabriel Moreira Miller Biazus Raphael Lupchinski Universidade Federal do Rio Grande do Sul Instituto de Informática Grupo PET Computação Primeiro Programa Hello

Leia mais

Strings. Introdução. Definição de strings. Criação/Declaração de strings. Inicialização de strings. Manipulação de strings. Exemplos.

Strings. Introdução. Definição de strings. Criação/Declaração de strings. Inicialização de strings. Manipulação de strings. Exemplos. Introdução Definição de strings. Criação/Declaração de strings. Inicialização de strings. Manipulação de strings. Exemplos. 1 definições Uma string é uma sequência, um conjunto, ou uma cadeia de caracteres.

Leia mais

Linguagens de Programação PROGRAMAÇÃO DE COMPUTADORES. Linguagem C. Linguagem C Estrutura Básica. Constante (literais) Linguagem C Primeiro Programa

Linguagens de Programação PROGRAMAÇÃO DE COMPUTADORES. Linguagem C. Linguagem C Estrutura Básica. Constante (literais) Linguagem C Primeiro Programa Linguagens de Programação PROGRAMAÇÃO DE COMPUTADORES Linguagem C - Introdução Linguagens de Máquina Representação numérica Difícil utilização e compreensão Específica para cada máquina Linguagens Simbólicas(Assembly)

Leia mais

Aula 9 Oficina de Programação Strings. Profa. Elaine Faria UFU

Aula 9 Oficina de Programação Strings. Profa. Elaine Faria UFU Aula 9 Oficina de Programação Strings Profa. Elaine Faria UFU - 2017 String Cadeia de caracteres (ou String) É uma seqüência de letras e símbolos, na qual os símbolos podem ser espaços em branco, dígitos

Leia mais

Anhanguera Educacional S.A. Centro Universitário Ibero-Americano

Anhanguera Educacional S.A. Centro Universitário Ibero-Americano O C++ foi inicialmente desenvolvido por Bjarne Stroustrup durante a década de 1980 com o objetivo de melhorar a linguagem de programação C, mantendo a compatibilidade com esta linguagem. Exemplos de Aplicações

Leia mais

INF1007: Programação 2. 2 Alocação Dinâmica. 17/02/2014 (c) Dept. Informática - PUC-Rio 1

INF1007: Programação 2. 2 Alocação Dinâmica. 17/02/2014 (c) Dept. Informática - PUC-Rio 1 INF1007: Programação 2 2 Alocação Dinâmica 17/02/2014 (c) Dept. Informática - PUC-Rio 1 Tópicos Alocação dinâmica Vetores locais e funções 17/02/2014 (c) Dept. Informática - PUC-Rio 2 Alocação Dinâmica

Leia mais

Linguagens de Programação I

Linguagens de Programação I Linguagens de Programação I Tema # 7 Vetores ou Matrizes Unidimensionais Matrices Multidimencionais Susana M Iglesias 1 INTRODUÇÃO Um vetor geralmente é associado a uma lista ou conjunto de elementos similares,

Leia mais

Estrutura de Dados. Cadeia de Caracteres. Roberto Araujo Ago/2013

Estrutura de Dados. Cadeia de Caracteres. Roberto Araujo Ago/2013 Estrutura de Dados Cadeia de Caracteres Roberto Araujo Ago/2013 Estrutura de Dados O que é uma estrutura de dados? É um arranjo pré-definido de um ou mais pedaços de dados Ex: Ex: Os carateres 'u', 'v',

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

Programação Básica. Estrutura de um algoritmo

Programação Básica. Estrutura de um algoritmo Programação Básica Estrutura de um algoritmo Código-fonte Como vimos na aula anterior um algoritmo pode ser representado usando um fluxograma Um algoritmo pode também ser representado usando texto Esse

Leia mais