Revisão para Prova 2. Mirella M. Moro

Documentos relacionados
INF1007: Programação 2. 0 Revisão. 06/08/2015 (c) Dept. de Informática - PUC-Rio 1

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

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

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 02/03/2011

Programação de Computadores II. Cap. 5 Vetores

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

Módulo 3 Controle de Fluxo

Introdução à Programação. Expressões Booleanas e Comandos Condicionais

ponteiros INF Programação I Prof. Roberto Azevedo

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

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

Introdução à linguagem C++

Suponha um conjunto habitacional, com várias famílias... imagina se todas elas morassem em uma única casa?

Métodos Computacionais. Tipos Estruturados

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

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

INF 1007 Programação II

Métodos Computacionais. Comandos Condicionais e de Repetição em C

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

Mais sobre Ponteiros em C

Cap. 3 Entrada e Saída e Controle de Fluxo

Alocação Dinâmica em C

Linguagem C: funções e ponteiros. Prof. Críston Algoritmos e Programação

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.

Revisão da Linguagem C Prof. Evandro L. L. Rodrigues

Linguagem C: Elementos fundamentais

Linguagem C (estruturas condicionais)

Computação eletrônica:

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

RESUMO DE CONCEITOS BÁSICOS DE C

Programação Estruturada

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

Suponha um conjunto habitacional, com várias famílias... imagina se todas elas morassem em uma única casa?

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

Sub-rotinas em C. Disciplina de Programação de Computadores I Universidade Federal de Ouro Preto

Apontadores/ponteiros

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

Modulo 3: Else, Case, For...

Fábio da Fontoura Beltrão Felipe Augusto Chies Lucas Fialho Zawacki Marcos Vinicius Cavinato Matheus de Carvalho Proença

Faculdade Anglo-Americano Curso de Ciência da Computação Linguagem de Programação. Lista de Exercícios 1

Aula 07 Introdução à Programação Subprogramas

Subprogramas. Prof. Carlos Lopes

REVISÃO DE C. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

Introdução à Programação em C

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

Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação. Profa Rosana Braga

Programação I Funções. Prof. Carlos Alberto

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

Programação de Computadores II. Cap. 5 Alocação Dinâmica

1) Operadores de auto incremento ++ e auto decremento --

Linguagem C. André Tavares da Silva.

Sistemas Operacionais e Introdução à Programação. Programação com linguagem C

Computação 2. Aula 2. Profª. Fabiany Vetores e Matrizes

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

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

Controle de Fluxo Utilizando C

Programação: Vetores

A sintaxe para se declarar uma variável do tipo ponteiro é dada por:

Comandos de decisão. Tiago Alves de Oliveira. Adaptado de slides das Profas. Patrícia Jaques, Mônica Py e Deise Sacol

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

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

Fundamentos de Programação1

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

Estruturas de Repetição

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

Métodos Computacionais. Vetores e Matrizes Dinâmicas

LÓGICA DE PROGRAMAÇÃO (C) VETORES E MATRIZES. Professor Carlos Muniz

Ponteiros. Ponteiros. Ponteiros. Ponteiros. Ponteiros. Introdução a Programação. Profa. Roseli Romero

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

Ponteiro. Ponteiro. Objetivo. Compreender a definição e dominar a implementação de ponteiros em C.

C Comandos de Controle

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

PIC - PROGRAMAÇÃO LINGUAGEM C. AUTOR: ENG. ANTONIO CARLOS LEMOS JÚNIOR

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

Ponteiros. um ponteiro é uma variável que contém o endereço um dado declaração: * indica que a variável é um ponteiro. Ex: tipo_dado *nome_ponteiro;

Ponteiros. Considere um carteiro recém-chegado na vila Na vila, a referência para se encontrar a casa é pelo morador

Revisão C++ - Parte 1

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

Variáveis primitivas e Controle de fluxo

Introdução a Programação. Tipos Estruturados de Dados

Introdução à Programação. Estruturas de Repetição

Seleção Múltipla Laços (while, do-while, for) AULA 05

Linguagem C Funções. André Tavares da Silva.

Linguagem C Ponteiros

Introdução à Programação Aula 07. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação

Introdução a JAVA. Variáveis, tipos, expressões, comandos e blocos

Linguagem C. André Tavares da Silva.

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

Introdução à Computação - Linguagem C: aula 06. Mauro Cesar Bernardes 04/Junho/2014

Material sobre Funções AEDS 1

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

3. Linguagem de Programação C

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

prim = A ; prim = &A[0];

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

char *strchr (const char *str, int ch);

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

Transcrição:

Revisão para Prova 2 Mirella M. Moro

2 Roteiro 1. Estruturas de decisão 2. Estruturas de repetição 3. Funções 4. Vetores 5. Matrizes 6. Ponteiros 7. Alocação dinâmica

3 1. Estruturas decisão if (condição) comando; else comando; if (condição) { comando1; comando2; else { comando3; comando4;

4 Estruturas decisão: switch switch (var) { case (1): comandos; break; case (2): comandos; break; case (3): comandos; break; default é opcional!

5 2. Estruturas repetição for (var = valor inicial; condição; incremento) comando; while (condição) comando; PRIMEIRO confere condição DEPOIS executa do { comando; while (condição); PRIMEIRO executa DEPOIS confere condição

6 3. Funções e passagem de parâmetro Retorna UM valor Recebe um ou mais como parâmetros Precisa de uma assinatura Determina o tipo do valor retornado Determina o(s) tipo(s) do(s) parâmetro(s) float f = pow (f, 2); f = f^2 assinatura = float pow (float x, float y);

Função 7

8 Vários níveis de chamadas Subprograma Z Função main Subprograma X Execute X; Execute Z; Subprograma Y Execute Y;

9 Funções em C tipo NomeDaFuncao (lista_de_parâmetros) { comandos; return valor_do_tipo; void NomeDaFuncao (lista_de_parâmetros) { comandos; Função do tipo void NÃO TEM COMANDO RETURN

10 Funções em C int SomaDoisNumeros(int A, int B) { return A +B; void ImprimeTexto() { printf( Ola Mundo ); int main() { int r; r= SomaDoisNumeros (30, 50); ImprimeTexto(); return 0; 1 Primeiro define as funções 2 Depois pode usá-las na função main

11 Funções: Passagem de parâmetros Passagem por Valor o parâmetro passado por valor é copiado, ou seja, o valor da variável utilizada como parâmetro não é alterado Passagem por Referência O endereço do parâmetro passado por referência é atribuído à um ponteiro, ou seja, qualquer alteração no conteúdo apontado será refletida no conteúdo da variável utilizada como parâmetro

12 Funções: Passagem de parâmetros void FuncaoQualquer(int A, int* B) { A = 1; *B= 2; main() { int X = 0, Y = 0; printf( %d %d, X, Y); FuncaoQualquer (X, &Y); printf( %d %d, X, Y); system( pause ); A é passado por valor É alterado dentro da função, porém seu valor permanece o mesmo na função main B é passado por referência Qualquer alteração dentro da função é refletida na função main

13 Funções: Passagem de parâmetros void FuncaoQualquer(int* A, int* B) { *A= 1; *B= 2; main() { int X = 0, Y = 0; FuncaoQualquer (& X, &Y); printf( %d %d, X, Y); system( pause ); Como fazer a função retornar MAIS DE UM VALOR

Funções: Escopo de variáveis int teste(int x) { int main() { int y; for(int i=0;i<10;i++) { if(i < 5) { int a; else { int b; Escopo de x 14

Funções: Escopo de variáveis int teste(int x) { int main() { int y; for(int i=0;i<10;i++) { if(i < 5) { int a; else { int b; Escopo de y 15

Funções: Escopo de variáveis int teste(int x) { int main() { int y; for(int i=0;i<10;i++) { if(i < 5) { int a; else { int b; Escopo de i 16

Funções: Escopo de variáveis int teste(int x) { int main() { int y; for(int i=0;i<10;i++) { if(i < 5) { int a; else { int b; Escopo de a 17

Funções: Escopo de variáveis int teste(int x) { int main() { int y; for(int i=0;i<10;i++) { if(i < 5) { int a; else { int b; Escopo de b 18

19 4. Vetores ÍNDICE 0 André 1 Bianca 2 Cleiton 3 Danilo 4 Edson 5 Fernando 6 Glauber 7 Hugo 8 Ivan VALORES

20 Vetores: Memória //declaração: int a[2], b; char c[4]; Inteiro (int): 2 bytes Caractere (char): 1 byte Memória: Endereço Conteúdo ------------------------------ 100 00 101 01 102 00 103 02 104 00 105 10 106 79 ( O ) 107 105 ( i ) 108 33 (! ) 109 63 (? ) Exemplo de uso: a[0] = 1; a[1] = 2; b = 10; c[0] = O ; c[1] = i ; c[2] =! ; c[3] =? ;

21 Vetores: quando usar? Calcular a média da nota de 5 alunos e verificar quantos conseguiram nota acima da média: int i, soma=0; float media, n; for (i=0;i<5;i++){ scanf( %f,&n); soma=soma + n; media = soma/i; Como verificar se a nota de cada aluno é maior que a média?? int acima=0; float media, n1, n2, n3, n4, n5; scanf( %f%f%f%f%f, &n1, &n2, &n3, &n4, &n5); media = (n1+ n2 + n3 + n4 + n5)/5; if (n1>media) acima++; if (n2>media) acima++; if (n3>media) acima++; if (n4>media) acima++; if (n5>media) acima++;

int acima=0; float media, n1, n2, n3, n4, n5; scanf( %f%f%f%f%f, &n1, &n2, &n3, &n4, &n5); media = (n1+ n2 + n3 + n4 + n5)/5; if (n1>media) acima++; if (n2>media) acima++; if (n3>media) acima++; if (n4>media) acima++; if (n5>media) acima++; 22 Lê os 5 valores Calcula média Conta quantos ficaram acima da média

23 Vetores: leitura + impressão int vetor[10], cont; for (cont=0; cont<10; cont++) { printf ("\ndigite um valor inteiro: "); scanf ("%d", &vetor[cont]); for (cont=0; cont<10; cont++) printf ("\no valor em %d = %d\n", cont, vetor[cont]);

Vetores como parâmetro Passa o vetor por referência, sempre! Pois x é um ponteiro x p p+1 p+5 índ val 0 0 1 2 2 4 3 6 4 8 5 10 x é um ponteiro 24

25 5. Matrizes Coluna 0 Coluna 1 Coluna 2 Coluna 3 Linha 0 P[0][0] P[0][1] P[0][2] P[0][3] Linha 1 P[1][0] P[1][1] P[1][2] P[1][3] Linha 2 P[2][0] P[2][1] P[2][2] P[2][3]

26 Matrizes: 1 Declara a matriz L 0 1 2 C 0 1 0 1 1 2 2 3 Define os valores para a matriz Imprime na tela todos os valores Para cada linha, imprime todas as colunas Ao final de cada linha, imprime \n

27 Matrizes: 2 L 0 1 2 C 0 1 1 2 3 4 5 6

Dimensões 28

Dimensões 29

30 Dimensões: Estacionamento São 5 andares de estacionamento Cada andar tem 8 filas de carros Em cada fila cabem 20 carros Qual é a matriz em C? bool estacionamento[5][8][20];

31 Dimensões: Estacionamento Dado o seguinte código, como definir as duas funções? Popula a matriz / atribui valores à cada vaga Imprime X para vagas ocupadas, senão. Chama as funções passando a matriz como parâmetro

32 ( aleatoriamente ) Para cada andar Para cada fila Para cada posição Define um valor para a vaga no estacionamento, entre true ou false

if (true) 33

34 Outros exemplos clássicos Dadas duas matrizes A e B com dimensões x e y, e as seguintes matrizes resultantes: C = A + B D = A B F = A * B H = A t E = B A G = B * A I = B t Implementar as funções para calcular C, D, E, F, G, H, I

35 6. Ponteiros Toda e qualquer variável utilizada por um programa reside em determinado endereço de memória O acesso ao endereço de uma variável pode ser feito simbolicamente através de seu nome. Essa referência é simbólica porque o endereço de memória propriamente dito NÃO é especificado. A declaração: int x =3; produz Variável Valor da Variável Endereço de Memória x 3 AFA1

Ponteiros Variáveis que armazenam endereços de memória 1003 1003 O endereço é a posição de uma outra variável na memória Se uma variável a armazena o endereço de uma variável b, dizemos que a aponta para b. 36

37 Ponteiros int x=10, *p1, *p2; // x é variável do tipo inteiro // p1 e p2 são ponteiros para // variáveis do tipo inteiro p1 = &x; //p1 recebe o endereço de x ( x) p2 = p1; //p2 recebe p1, também printf( %d, *p2); //escreve o valor de x printf( %d, p2); //escreve o endereço de x

38 Ponteiros int i=25; int *p = &i; printf("%d - ", i ); printf("%d - ", *p ); printf("%d - ", &i ); printf("%d - ", p ); 25 25 1004080 1004080

39 7. Alocação Dinâmica int *x = (int *) malloc(sizeof(int)*5); int i; for (i=0; i<5; i++) x[i] = 0; x[1] = 23; printf( %d-%d, x[0], x[1]); free(x);

Alocação, Vetores e Funções 40