18 - Funções e Procedimentos em C Programação Modular
|
|
|
- André Belo Amaral
- 9 Há anos
- Visualizações:
Transcrição
1 18 - Funções e Procedimentos em C Programação Modular Unesp Campus de Guaratinguetá Curso de Programação Computadores Prof. Aníbal Tavares Profa. Cassilda Ribeiro Ministrado por: Prof. André Amarante
2 18.3 Funções e Procedimentos: Protótipos tipos Foi visto que na linguagem C a declaração da função deve ser colocada antes do ponto onde ela é chamada. Por esta razão, até agora, sempre escrevemos as funções antes da função principal main (). Para grandes projetos isto não é prático e algumas vezes é inviável determinar qual função deve preceder as demais. Este problema pode ser contornado com a utilização de protótipos tipos. O protótipo tipo de uma função consiste na repetição da linha de sua definição (cabeçalho) seguida do caractere (;). O protótipo tipo da função deve então ser colocado antes desta ser chamada. Vejamos o exemplo a seguir: 13/10/2013 Funções e Procedimentos 2
3 18.3 Funções e Procedimentos: Protótipos tipos //programa que lê um número e imprime seu fatorial #include <stdio.h> #include <stdlib.h> //Função que calcula e imprimi o fatorial void fat (int n) { int i; int f = 1; for (i = 1; i <= n; i++) f *= i; printf("fatorial = %d\n", f); /* Função principal */ main () { int n; scanf("%d", &n); fat(n); system("pause"); Exemplo A função está colocada antes do local onde ela é chamada 13/10/2013 Funções e Procedimentos 3
4 18.3 Funções e Procedimentos: Protótipos tipos A utilização de protótipo tipo permite que a função seja colocada em qualquer parte do programa, inclusive depois da função main. Os protótipos servem para indicar ao compilador quais são os parâmetros de entrada e saída da função sem ser necessário detalhar sua implementação. Reescrevendo o exemplo anterior utilizando protótipo tipo: 13/10/2013 Funções e Procedimentos 4
5 //programa que lê um numero e imprime seu fatorial #include <stdio.h> #include <stdlib.h> void fat (int n); /* Função principal */ main () { int n; scanf("%d", &n); fat(n); system("pause"); //Função que calcula e imprimi o fatorial void fat (int n) { int i; int f = 1; for (i = 1; i <= n; i++) f *= i; printf("fatorial = %d\n", f); 18.3 Funções e Procedimentos: Protótipos tipos Protótipo da Função fat Chamada da Função fat A função está colocada depois do local onde ela é chamada, porque está sendo usado protótipo 13/10/2013 Funções e Procedimentos 5
6 18.3 Funções e Procedimentos: Protótipos tipos Exemplo 18.13: Função que imprime um vetor Cabeçalho e corpo da função Chamada da função dentro da função main. #include <stdio.h> #include <stdlib.h> // Função que imprime um vetor. void imprimev(int v[], int n) { int i; for(i=0; i < n; i++) printf(" [%2d] ",v[i]); printf("\n"); // Função principal chama imprimev. main() { int v[10] = {0; // Imprime elementos do vetor. imprimev(v,10); 13/10/2013 Funções e Procedimentos 6
7 18.3 Funções e Procedimentos: Protótipos tipos Refazendo o exemplo com Protótipo Protótipo da função Chamada da função Declaração e corpo da função #include <stdio.h> #include <stdlib.h> void imprimev(int v[], int n); // Função principal chama imprimev. main() { int v[10] = {0; // Imprime elementos do vetor. imprimev(v,10); // Função que imprime um vetor. void imprimev(int v[], int n) { int i; for(i=0; i < n; i++) printf(" [%2d] ",v[i]); printf("\n"); 13/10/2013 Funções e Procedimentos 7
8 18.3 Funções e Procedimentos: Protótipos tipos Exemplo Ping-Pong #include <stdio.h> #include <stdlib.h> #include <time.h> void ping(int a, int b, int val1, int cont); void pong(int a, int b, int val2, int cont); // Função ping. void ping(int a, int b, int val1, int cont) { int val2 = (rand()%(b-a+1))+a; printf( Ping: %d \n,val2); if (val2 > val1) cont++; if (cont!= 4) pong(a,b,val2,cont); else printf( Ping ganhou: %d! \n,cont); // Função pong. void pong(int a, int b, int val2, int cont) { int val1 = (rand()%(b-a+1))+a; printf( Pong: %d \n,val1); if (val1 > val2) cont--; if (cont!= 0) ping(a,b,val1,cont); else printf( Pong ganhou:%d! \n,cont); // Função Principal. main() { srand(time(0)); ping(0,4,2,2); 13/10/2013 Funções e Procedimentos 8
9 18.3 Funções e Procedimentos: Protótipos tipos Observe que no exemplo anterior o programa não teria como ser compilado sem o uso de protótipos, pois a função ping pode chamar pong e pong pode chamar ping. ping pong Ou seja, em qualquer ordem que sejam colocadas as funções ping e pong, sempre uma delas estará indefinida em relação a outra. O uso de protótipos não é uma opção e sim uma necessidade neste caso. 13/10/2013 Funções e Procedimentos 9
10 18.4 Funções e Procedimentos: Recursão Exemplo Pilha de Execução #include <stdio.h> #include <stdlib.h> #include <math.h> int f1(int x) { return (x/3); int f2(int x) { return ((cos(x)*cos(x))/(1-sin(x))); O programa ao lado equivale a resolver a expressão: y=(cos(x/3)*cos(x/3))/(1-sin(x/3)) f1 f1 f1 main() {int a, b; a = f1(2); b = f2(a); printf( b = f2(f1(2)) = %d \n, b); 13/10/2013 Funções e Procedimentos 10 f2 b
11 18.4 Funções e Procedimentos: Recursão xemplo Pilha de Execução #include <stdio.h> #include <stdlib.h> #include <math.h> int f1(int x) { return (x/3); A forma como isto é feito é melhor explicado com o conceito de pilha de execução: Início a=f1(2) int f2(int x) { return ((cos(x)*cos(x))/(1-sin(x))); main() main() main() {int a, b; a = f1(2); b = f2(a); printf( b = f2(f1(2)) = %d \n, b); printf(b) main() main() Fim b=f2(a) main() 13/10/2013 Funções e Procedimentos 11
12 18.4 Funções e Procedimentos: Recursão Definição função recursiva: Exemplos funções recursivas: Uma função é denominada recursiva se ela chama a si mesma. Toda função recursiva é estabelecida a partir de uma relação de recorrência que é calculada usando: (i) O cálculo do n-ésimo termo de uma função a partir de termos menores que n. (ii) Um caso base ao qual é associado um valor. Fatorial Fat(n) = n*fat(n-1) Fat(0) = 1 Fibonacci F(n) = F(n-1)+F(n-2) F(0) = F(1) = 1 13/10/2013 Funções e Procedimentos 12
13 18.4 Funções e Procedimentos: Recursão Exemplo Fatorial recursiva #include <stdio.h> #include <stdlib.h> int fat(int n) {int resp; if (n == 0) return 1; else resp = n*fat(n-1); return resp; // Função Principal. main() { int n; printf( Entre com n >= 0: ); scanf( %d,&n); printf( Fatorial(n) = %d \n,fat(n)); Caso base Fat(n) = 0 Fat(n) = n*fat(n-1) Chamada recursiva 13/10/2013 Funções e Procedimentos 13
14 18.4 Funções e Procedimentos: Recursão Fatorial: n = 3 int fat(int n = 3) {int resp; if (n == 0) return 1; else resp = 3*fat(2); return resp; int fat(int n=2) {int resp; if (n == 0) return 1; else resp = 2*fat(1); return resp; Obtido o valor do caso base, a expressão de cada chamada pode ser resolvida do caso base até o caso n. A recursão cria chamadas a uma mesma função até que o caso base seja obtido. int fat(int n=1) {int resp; if (n == 0) return 1; else resp = 1*fat(0); return resp; int fat(int n=0) {int resp; if (n == 0) return 1; else resp = n*fat(n-1); return resp; 13/10/2013 Funções e Procedimentos 14
15 18.4 Funções e Procedimentos: Recursão Exemplo Fatorial Recursiva Usando pilha de execução: #include <stdio.h> #include <stdlib.h> int fat(int n) {int resp; if (n == 0) return 1; else resp = n*fat(n-1); return resp; // Função Principal. main() { int n; printf( Entre com n >= 0: ); scanf( %d,&n); printf( Fatorial(n) = %d \n,fat(n)); 0! = 1 1! = 1*0! 2! = 2*1! 3! = 3*2! fat(0)! = 1 fat(1) = 1*fat(0) fat(2) = 2*fat(1) fat(3) = 3*fat(2) 13/10/2013 Funções e Procedimentos 15
16 18.4 Funções e Procedimentos: Recursão Exemplo Fatorial com Laço #include <stdio.h> #include <stdlib.h> int fat(int n) { int resp = n; if (n == 0) resp = 1; else for (i=n-1; i >= 1; i--) resp = resp*i; return resp; // Função Principal. main() { int n; printf( Entre com n >= 0: ); scanf( %d,&n); printf( Fatorial(n) = %d \n,fat(n)); Caso base Fat(n) = 0 Fat(n) = n*fat(n-1) Chamada recursiva 13/10/2013 Funções e Procedimentos 16
17 18.4 Funções e Procedimentos: Recursão Exemplo Fatorial com Laço Observação importante: #include <stdio.h> #include <stdlib.h> int fat(int n) { int i, resp = n; if (n == 0) resp = 1; else for (i=n-1; i >= 1; i--) resp = resp*i; return resp; // Função Principal. main() { int n; printf( Entre com n >= 0: ); scanf( %d,&n); printf( Fatorial(n) = %d \n,fat(n)); Para toda função recursiva existe uma função equivalente que utiliza laço e fornece a mesma solução. Porém, a função com recursão sempre fornece um código mais simples e nem sempre é trivial encontrar o laço que equivale a recursão (vide Exemplo 18.18: Fibonacci e Exemplo 18.19: O problema da Torre de Hanói). 13/10/2013 Funções e Procedimentos 17
18 18.4 Funções e Procedimentos: Recursão Exemplo Fibonacci #include <stdio.h> #include <stdlib.h> int Fib(int n) {int resp; if (n == 0 n == 1) resp = 1; else resp = Fib(n-1)+Fib(n-2); return resp; main() { int n; printf( Entre com n >= 0: ); scanf( %d,&n); printf( Fibonacci(n) = %d \n,fib(n)); system( pause ); Casos base F(1) = F(0) = 0 F(n) = F(n-1)+F(n-2) Chamada recursiva 13/10/2013 Funções e Procedimentos 18
19 18.4 Funções e Procedimentos: Recursão Uma outra forma de representar as sucessivas chamadas a uma função recursiva é utilizar uma árvore de recursão: F(3) F(3) = F(2)+F(1) Nível 3 F(2) F(2) = F(1)+F(0) Nível 2 F(1) F(1) = 1 F(1) F(1) = 1 Nível 1 F(0) F(0) = 1 Nível 0 13/10/2013 Funções e Procedimentos 19
20 18.4 Funções e Procedimentos: Recursão O problema da Torre de Hanói consiste em transportar todos os discos do pino 1 para o pino 3 e mover um disco por vez e sem colocar um disco maior sobre um menor A resolução deste problema utilizando recursão é: (i) Mover n-1 discos de 1 para 2. (ii) Mover o n-ésimo disco de 1 para 3. (iii) Mover n-1 discos de 2 para 3. 13/10/2013 Funções e Procedimentos 20
21 18.4 Funções e Procedimentos: Recursão A resolução deste problema utilizando recursão é: (i) Mover n-1 discos de 1 para 2. (ii) Mover o n-ésimo disco de 1 para 3. (iii) Mover n-1 discos de 2 para 3. 13/10/2013 Funções e Procedimentos 21
22 18.4 Funções e Procedimentos: Recursão A resolução deste problema utilizando recursão é: (i) Mover n-1 discos de 1 para 2. (ii) Mover o n-ésimo disco de 1 para 3. (iii) Mover n-1 discos de 2 para 3. 13/10/2013 Funções e Procedimentos 22
23 18.4 Funções e Procedimentos: Recursão A resolução deste problema utilizando recursão é: (i) Mover n-1 discos de 1 para 2. (ii) Mover o n-ésimo disco de 1 para 3. (iii) Mover n-1 discos de 2 para 3. 13/10/2013 Funções e Procedimentos 23
24 18.4 Funções e Procedimentos: Recursão A resolução deste problema utilizando recursão é: (i) Mover n-1 discos de 1 para 2. (ii) Mover o n-ésimo disco de 1 para 3. (iii) Mover n-1 discos de 2 para 3. 13/10/2013 Funções e Procedimentos 24
25 18.4 Funções e Procedimentos: Recursão Exemplo Torre de Hanói #include <stdio.h> #include <stdlib.h> int mover(int n, char a, char b, char c) { if (n > 0) { mover(n-1,a,c,b); printf( %c -> %c \n,a,b); mover(n-1,c,b,a); // Função Principal. main() { int n; printf( Entre com n: ); scanf( %d,&n); printf( Solucao Hanoi %d discos\n,n); mover(n, A, C, B ); 13/10/2013 Funções e Procedimentos 25
26 18.4 Funções e Procedimentos: Recursão Para n = 3, temos: (i) Mover(2,A,B,C) (ii) Mover(1,A,C,B) (iii) Mover(2,B,C,A) (i) Mover(2,A,B,C) (i.1) Mover(1,A,C,B): A->C (i.2) A->B (i.3) Mover(1,C,B,A): C->B A B C A B C A B C A B C 13/10/2013 Funções e Procedimentos 26
27 18.4 Funções e Procedimentos: Recursão Para n = 3, temos: (i) Mover(2,A,B,C) (ii) Mover(1,A,C,B) (iii) Mover(2,B,C,A) (ii) Mover(1,A,C,B): A->C A B C A B C 13/10/2013 Funções e Procedimentos 27
28 18.4 Funções e Procedimentos: Recursão Para n = 3, temos: (i) Mover(2,A,B,C) (ii) Mover(1,A,C,B) (iii) Mover(2,B,C,A) (iii) Mover(2,A,B,C) (iii.1) Mover(1,B,A,C): B->A (iii.2) B->C (iii.3) Mover(1,A,C,B): A->C A B C A B C A B C A B C 13/10/2013 Funções e Procedimentos 28
29 18.4 Funções e Procedimentos: Recursão Nível 3 Nível 2 Nível 1 Mover(3, A, C, B ) Mover(2, A, B, C ) Mover(1, A, C, B ) A -> C A -> B Mover(1, C, B, A ) C -> B A -> C Mover(2, B, C, A ) Mover(1, B, A, C ) B -> A B -> C Mover(1, A, C, B ) A -> C 13/10/2013 Funções e Procedimentos 29
30 18.4 Aplicações Problema 1: Construir um programa que simule um jogo da velha. O programa deve cumprir os seguintes requisitos: (i) Permitir movimentos alternados de dois jogadores A e B. (ii) Identificar se um movimento pode ser realizado ou não. (iii) Identificar o término de um jogo, indicando as 3 possíveis situações: (1) A ganhou, (2) B ganhou, (3) Empate. (iv) Construir um tabuleiro que permita a representação das jogadas tal como dado abaixo. Jogada de A Jogada de B x... o... 13/10/2013 Funções e Procedimentos 30. Espaço livre
31 18. Funções O Problema do Caminho Mínimo Os nós do grafo, apresentados abaixo, representam cidades, e os arcos, a presença de uma estrada ligando duas cidades. Os números ao lado dos arcos representam a distância medida em quilômetros /10/2013 Funções e Procedimentos 31
32 18. Funções O Problema do Caminho Mínimo Pode-se representar este grafo através de uma variável composta bidimensional D, na qual a existência de conexão entre duas cidades i e j é indicada pelo elemento D[ i, j ] diferente de zero. Desta forma tem-se: Matriz D de distância entre as cidades 13/10/2013 Funções e Procedimentos 32
33 18. Funções O Problema do Caminho Mínimo O problema consiste, então em achar o caminho mais curto entre duas cidades quaisquer. Este problema foi resolvido por Dijkstra (1971) e tem uma série de aplicações na resolução de problemas de otimização. Para resolvê-lo; atribui-se rótulos as cidades, contendo as seguintes informações: 1. Distância acumulada da origem até a cidade C, DA[C]; 2. Um apontador indicando qual a cidade antecessora de C, PAI[C]; 3. Um indicador do estado de C, ESTADO[ C ], que pode ser expandida, não-expandida, não-rotulada. 13/10/2013 Funções e Procedimentos 33
34 18. Funções O Problema do Caminho Mínimo Partindo da origem, determinam-se as cidades adjacentes (aquelas que têm um caminho em comum) a ela. Estas cidades são rotuladas da seguinte forma: DA[ cidade adjacente ] DA[ origem ] + D[ origem,cidade adjacente ] PAI[ cidade adjacente ] origem ESTADO[ cidade adjacente ] Não expandida A cidade geradora da expansão, no caso a origem, tem seu estado alterado: ESTADO[ origem ] expandida Escolhe-se a seguir, a cidade não expandida cuja distância acumulada seja menor. Repete-se o processo anterior, determinando-se e rotulando-se as cidades adjacentes a escolhida. 13/10/2013 Funções e Procedimentos 34
35 18. Funções O Problema do Caminho Mínimo Na hipótese de que uma cidade adjacente já esteja rotulada não expandida, um teste se faz necessário com vistas a comparação da distância acumulada dos dois caminhos, prevalecendo aquele de menor distância acumulada. Garante-se que as cidades rotuladas expandidas já foram alcançadas pelo caminho mais curto da origem até ela. Este procedimento é repetido até que o destino seja rotulado ou até que não existirem cidades rotuladas não expandidas. 13/10/2013 Funções e Procedimentos 35
36 18. Funções O Problema do Caminho Mínimo #include <stdlib.h> #include <stdio.h> main() { //Programa principal int PAI [100], C, ORIGEM, DESTINO, i, j,n,k; float D[100][100], DA[100], MIN; int ESTADO[100]; // Leitura da matriz de distância printf("digite o numero de cidades \n"); scanf("%d",&n); for (i=1;i<=n;i++) { for (j=1;j<=n;j++) { printf("digite a distancia entre a cidade %d e %d ",i,j); scanf("%f",&d[i][j]); //impressao matriz de distancia printf("a matriz de distancia lida eh \n"); for (i=1;i<=n;i++) { for (j=1;j<=n;j++) printf("%4.f", D[i][j]); printf("\n"); printf("\n"); // Inicialização de ESTADO for (i=0; i<=n;i=i+1) ESTADO[i]=0;// 0=não rotulada, //1=não expandida, 2= expandida. // Ler nó) origem e nó destino printf("digite o no. da cidade de origem \n"); scanf("%d",&origem); printf("digite o no. da cidade de destino \n"); scanf("%d",&destino); 13/10/2013 Funções e Procedimentos 36
37 18. Funções O Problema do Caminho Mínimo //Rotular origem C = ORIGEM; PAI[C] = 0; DA[C] = 0.0; k=1; while (( C!= DESTINO) && (C!= 0)) { //rotular cidades adjacentes for (i=1;i <= N;i++ ) { if((estado[i]== 1) && (D[C][i]!= 0) ) { if (DA[i] > DA[C] + D[C][i]) { PAI[i] = C; DA[i] = DA[C] + D[C][i]; else if(( D[C][i]!= 0 ) && (ESTADO[i] == 0)) { ESTADO[i] = 1; //nao expandido PAI[i] = C; DA[i] = DA[C] + D[C][i]; ESTADO [C] = 2; //Expandido //Escolha de um novo C MIN = ; for(j=1;j<= N;j++) {//inicio if(estado[j]== 1)// não expandido {/ if(da[j] < MIN) { //então MIN=DA[j]; C=j; //fim então //fim for j if (MIN == ) C = 0; //fim while rotular cidades adjacentes 13/10/2013 Funções e Procedimentos 37
38 18. Funções O Problema do Caminho Mínimo if(c == 0) { printf(" Nao existe Caminho unindo"); printf(" as cidades %d e %d\n", ORIGEM, DESTINO); else { printf("\n Caminho mais curto ente %d e %d eh:\n",origem, DESTINO); while(c!= ORIGEM) { printf("%d ",C); C = PAI[C]; printf("%d ",ORIGEM); printf("\n A distancia eh %.2f:\n",DA[DESTINO]); system("pause"); 13/10/2013 Funções e Procedimentos 38
39 18. Funções O Problema do Caminho Mínimo 13/10/2013 Funções e Procedimentos 39
40 Unesp-Campus de Guaratinguetá 18 - Funções e Procedimentos FIM Aula 18 Referências dos slides Curso de Programação de Computadores Prof. Aníbal Tavares Profa. Cassilda Ribeiro Prof. Décio Mourão 13/10/2013 Funções e Procedimentos Prof. Galeno Sena 40
MC-102 - Teste de Mesa e Comandos Repetitivos
MC-102 - Teste de Mesa e Comandos Repetitivos Elaborado por Raoni Teixeira e Editado por Danillo Roberto Pereira Instituto de Computação Unicamp Primeiro Semestre de 2013 Introdução Introdução Pode acontecer
Capítulo 5: Repetições
Capítulo 5: Repetições INF1004 e INF1005 Programação 1 Pontifícia Universidade Católica Departamento de Informática Construção de Laços Repetição: Diversos problemas de difícil solução podem ser resolvidos
Programação de Computadores I. Linguagem C Função
Linguagem C Função Prof. Edwar Saliba Júnior Fevereiro de 2011 Unidade 07 Função 1 Conceitos As técnicas de programação dizem que, sempre que possível, evite códigos extensos, separando o mesmo em funções,
Referências. Programação de Computadores II. Cap. 7 Cadeias de Caracteres. Caracteres. Tópicos
Referências Programação de Computadores II Cap. 7 Cadeias de Caracteres Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus (2004) Capítulo 7 Livro: Waldemar
AULA 3 Alocação dinâmica de memória: Ponteiros
UNIP - Ciência da Computação e Sistemas de Informação Estrutura de Dados AULA 3 Alocação dinâmica de memória: Ponteiros Estrutura de Dados 1 Variáveis X Ponteiros VARIÁVEL - Estrutura para armazenamento
Estruturas de Repetição
Estruturas de Repetição Lista de Exercícios - 04 Algoritmos e Linguagens de Programação Professor: Edwar Saliba Júnior Estruturas de Repetição O que são e para que servem? São comandos que são utilizados
Algoritmos e Estruturas de Dados I. Universidade Federal de São João del-rei Pedro Mitsuo Shiroma Sala 119 Bloco 3
Algoritmos e Estruturas de Dados I Universidade Federal de São João del-rei Pedro Mitsuo Shiroma Sala 119 Bloco 3 Laboratório de AEDS 1 Aula 01 Linguagens de Programação Cada linguagem de programação obedece
Linguagem C: strings. Prof. Críston Algoritmos e Programação
Linguagem C: strings Prof. Críston Algoritmos e Programação String Uma string é um vetor de caracteres (texto) char nome [tamanho]; O texto que vamos gravar em uma string não precisa ocupar todos os caracteres
Aula 3/4: Vetores/Matrizes e Ponteiros
Carlos Henrique/Introdução C++ Aula 3/4: Vetores/Matrizes e Ponteiros Funções: Função main (int argc, char ** argv) Recursão Vetores/Matrizes/Strings Vetor (Matriz Unidimensional) Gerando um ponteiro para
1. Estrutura de Dados
1. Estrutura de Dados Não existe vitória sem sacrifício! Filme Transformers Um computador é uma máquina que manipula informações. O estudo da ciência da computação inclui o exame da organização, manipulação
Algoritmos e Estruturas de Dados I. Recursividade. Pedro O.S. Vaz de Melo
Algoritmos e Estruturas de Dados I Recursividade Pedro O.S. Vaz de Melo Problema Implemente uma função que classifique os elementos de um vetor em ordem crescente usando o algoritmo quicksort: 1. Seja
Tipos Abstratos de Dados (TAD)
Instituto de C Tipos Abstratos de Dados (TAD) Luis Martí Instituto de Computação Universidade Federal Fluminense [email protected] - http://lmarti.com Tópicos Principais Módulos e Compilação em separado
Análise de algoritmos. Parte II
Análise de algoritmos Parte II 1 Análise de algoritmos Existem basicamente 2 formas de estimar o tempo de execução de programas e decidir quais são os melhores Empírica ou teoricamente É desejável e possível
Isomorfismos de Grafos, Grafos Planares e Árvores
p. 1/25 Isomorfismos de Grafos, Grafos Planares e Árvores Esdras Medeiros p. 2/25 Isomorfismo de Grafos Os isomorfismos preservam adjacências entre vértices. p. 3/25 Isomorfismo de Grafos Definição 1 Dois
Conversão Visualg à C++ Prof. Paulo Cesar F. de Oliveira, BSc, PhD
Conversão Visualg à C++ Prof. Paulo Cesar F. de Oliveira, BSc, PhD 1 Unidade 01-a Algoritmos e Programação Seção 1.1 Visualg 2 Formato do Visualg algoritmo nome do algoritmo // Função: // Autor: // Data:
PROGRAMAÇÃO FUNÇÕES NA LINGUAGEM C
PROGRAMAÇÃO FUNÇÕES NA LINGUAGEM C 1 Implementações básicas : a) Implementar a função LerValorValido que verifica se um valor introduzido pelo utilizador pertence ao conjunto limitado por dois dados valores
21 Modularização - Funções e Procedimentos
21 Modularização - Funções e Procedimentos À medida que aumenta a complexidade de um programa, torna-se cada vez mais imperativo "dividir" o programa em módulos menores, isolando em cada um destes módulos
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,
PROGRAMAÇÃO FUNÇÕES NA LINGUAGEM C
PROGRAMAÇÃO FUNÇÕES NA LINGUAGEM C 1 Enunciado: a)implementar a função maior que devolve o maior de dois números inteiros passados como parâmetro; b)construir um programa em C que determine o maior de
Suponha um conjunto habitacional, com várias famílias... imagina se todas elas morassem em uma única casa?
Funções Suponha um conjunto habitacional, com várias famílias...... imagina se todas elas morassem em uma única casa? Funções Programação de Computadores 1 de 28 Funções Na Programação, funções são conjuntos
INTRODUÇÃO À PROGRAMAÇÃO II VARIÁVEIS COMPOSTAS HOMOGÊNEAS UNIDIMENSIONAIS
INTRODUÇÃO À PROGRAMAÇÃO II VARIÁVEIS COMPOSTAS HOMOGÊNEAS UNIDIMENSIONAIS Material da Prof. Ana Eliza Dados e comandos, para serem processados, devem estar na memória do computador. Memória Definição:
1 Cálculo do valor à vista
MAC-5 Introdução à Computação para Ciências Exatas e Tecnologia IO Segundo Exercício Programa Entregar até 7/0/2007 Comprar à vista ou comprar à prazo? Várias lojas já possuem alguns planos de crediário
21 Strings. 21.1 O que são strings? 21.2 Leitura de Strings. Ronaldo F. Hashimoto e Carlos H. Morimoto
21 Strings Ronaldo F. Hashimoto e Carlos H. Morimoto Oobjetivodestaaulaéintroduziroconceitodestrings. Aofinaldessaaulavocêdeverásaber: Descrever o que são strings. Descrever a distinção entre strings evetoresdecaracteres.
Suponha um conjunto habitacional, com várias famílias... imagina se todas elas morassem em uma única casa?
Funções Suponha um conjunto habitacional, com várias famílias...... imagina se todas elas morassem em uma única casa? Funções Introdução à Computação 1 de 28 Funções Na Programação, funções são conjuntos
Teoria dos Grafos. Valeriano A. de Oliveira Socorro Rangel Departamento de Matemática Aplicada. [email protected], [email protected].
Teoria dos Grafos Valeriano A. de Oliveira Socorro Rangel Departamento de Matemática Aplicada [email protected], [email protected] Grafos e Algoritmos Preparado a partir do texto: Rangel, Socorro.
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
CAMPUS DE GUARATINGUETÁ FACULDADE DE ENGENHARIA. Introdução à Programação em C. Algoritmos: Estruturas de Repetição. Prof. Dr. Galeno.J.
Unesp UNIVERSIDADE ESTADUAL PAULISTA CAMPUS DE GUARATINGUETÁ FACULDADE DE ENGENHARIA Introdução à Programação em C Algoritmos: Estruturas de Repetição Prof. Dr. Galeno.J. de Sena Departamento de Matemática
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
Algoritmo e Pseudo-código
Departamento de Sistemas de Computação Universidade de São Paulo Algoritmo e Pseudo-código Responsável Prof. Seiji Isotani ([email protected]) Objetivos do Curso Desenvolver o Pensamento Computacional
Introdução. Software Básico Aula 3. Prof. Dr. Rogério Vargas.
Introdução Software Básico Aula 3 Prof. Dr. Rogério Vargas http://rogerio.in Provocação Você já se perguntou como é que os programas que você escreve são traduzidos em instruções executáveis pelas estruturas
CAP. II RESOLUÇÃO NUMÉRICA DE EQUAÇÕES NÃO LINEARES
CAP. II RESOLUÇÃO NUMÉRICA DE EQUAÇÕES NÃO LINEARES Vamos estudar alguns métodos numéricos para resolver: Equações algébricas (polinómios) não lineares; Equações transcendentais equações que envolvem funções
Programação Dinâmica. Aplicação directa - Fibonacci
Programação Dinâmica Divisão e conquista: problema é partido em subproblemas que se resolvem separadamente; solução obtida por combinação das soluções Programação dinâmica: resolvem-se os problemas de
Exercícios: Recursão
UNIVERSIDADE FEDERAL DE UBERLÂNDIA Lista de exercícios de programação em linguagem C Exercícios: Recursão 1) Faça uma função recursiva que calcule e retorne o fatorial de um número inteiro N. 2) Faça uma
Linguagem de Programação I
Linguagem de ção I Curso de Sistemas de Informação Karla Donato Fook karladf@ifmaedubr DESU / DAI 2016 O que é um programa de computador? 2 1 de computador E_1 E_n Resultado Entrada(s) Processamento Saída(s)
Algoritmos e Estruturas de Dados I
Algoritmos e Estruturas de Dados I Prof. Daniel M. Martin ([email protected]) Aula 10 (Baseada nos slides do Prof. André Balan) Recursão Recursão Da wikipedia: A recursão é o processo pelo qual
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
BCC202 - Estrutura de Dados I
BCC202 - Estrutura de Dados I Aula 14: Ordenação: QuickSort Reinaldo Fortes Universidade Federal de Ouro Preto, UFOP Departamento de Computação, DECOM Website: www.decom.ufop.br/reifortes Email: [email protected]
Ciclo com Contador : instrução for. for de variável := expressão to. expressão do instrução
Métodos de Programação I 2. 27 Ciclo com Contador : instrução for identificador downto for de variável := expressão to expressão do instrução UMA INSTRUÇÃO (SIMPLES OU COMPOSTA) Neste caso o ciclo é repetido
9. Tipos Abstratos de Dados
9. Tipos Abstratos de Dados R. Cerqueira, W. Celes e J.L. Rangel Neste capítulo, discutiremos uma importante técnica de programação baseada na definição de Tipos Abstratos de Dados (TAD). Veremos também
Problema da Árvore Geradora Mínima
Problema da Árvore Geradora Mínima The Minimum Spanning Tree Problem Fernando Nogueira Árvore Geradora Mínima 1 O Problema da Árvore Geradora Mínima (The Minimum Spanning Tree Problem) Considere uma rede
9.1.2 Laços Controlados por Entrada: Contador
9.1.2 Laços Controlados por Entrada: Contador Exemplo 2- Escreva um algoritmo e um programa em C que dado um Número qualquer, seja calculado e impresso a tabuada desse número. Algoritmo tabuada Variáveis:
Analise o código abaixo:
Recursão - introdução Analise o código abaixo: 1 # include 2 # include 3 int Fatorial ( int x) 4 int k, s =1; for (k =0;k
Algoritmos APRENDENDO A PROGRAMAR COM C#
Algoritmos APRENDENDO A PROGRAMAR COM C# Alô Mundo AULA 01 Conhecendo o ambiente O objetivo principal desse programa não é mostrar a mensagem Alo Mundo. O objetivo é apresentar o ambiente de desenvolvimento
PHP Estruturas de repetição
Estrutura de repetição com for Sintaxe for (inicialização; condição; incremento) comando1; comando2; A inicialização atribui um valor inicial à variável de controle do laço; Os comandos 1 e 2 serão executados
Método Simplex Revisado
Método Simplex Revisado Prof. Fernando Augusto Silva Marins Departamento de Produção Faculdade de Engenharia Campus de Guaratinguetá UNESP www.feg.unesp.br/~fmarins [email protected] Introdução Método
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
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
INF1005: Programação I. Algoritmos e Pseudocódigo
INF1005: Programação I Algoritmos e Pseudocódigo Tópicos Principais Definição de Algoritmo Exemplos Básicos Formas de representação Condicionais Exemplos com Condicionais Repetições Exemplos com Repetições
Funções. O escopo de variáveis é o conjunto de regras que determinam o uso e a validade de variáveis nas diversas partes do programa.
- Escopo de variáveis Funções O escopo de variáveis é o conjunto de regras que determinam o uso e a validade de variáveis nas diversas partes do programa. Veremos agora três tipos de variáveis, no que
Recursividade. Recursividade
A recursão é uma técnica que define um problema em termos de uma ou mais versões menores deste mesmo problema. Esta ferramenta pode ser utilizada sempre que for possível expressar a solução de um problema
FUNÇÃO QUADRÁTICA. Resumo
01 / 08 / 12 FUNÇÃO QUADRÁTICA 1. Definição Resumo Função do 2º grau ou função quadrática é a função f: R R definida por f(x) = ax² + bx + c, com a, b, c reais e a 0. Em que a é o coeficiente de x²; b
Curso de Programação Computadores Prof. Aníbal Tavares Profa. Cassilda Ribeiro Ministrado por: Prof. André Amarante
16 - Matrizes Unesp Campus de Guaratinguetá Curso de Programação Computadores Prof. Aníbal Tavares Profa. Cassilda Ribeiro Ministrado por: Prof. André Amarante 16.1 Dados Estruturados: Matrizes Matrizes
Linguagem C. Introdução à Programação C. Variáveis. Identificadores. Identificadores 12/03/2011 VARIÁVEIS E TIPOS DE DADOS
Linguagem C Introdução à Programação C Introdução à Ciência da Computação I Prof. Denis F. Wolf Origem de C está associada ao sistema Unix Histórico: 1970: Ken Thompson desenvolve B, baseada em BCPL, para
SCC0601 Projeto de Algoritmos. Recursão
SCC0601 Projeto de Algoritmos Recursão Definição Uma função é dita recursiva quando é definida em seus próprios termos, direta ou indiretamente Dicionário Michaelis: ato ou efeito de recorrer Recorrer:
Isto não é exequível!... B[8][6] A[10] Slides_Java_4
A[10] B[8][6] Slides_Java_4 Sistemas Informáticos I 2005-2006 Imaginemos que é necessário escrever um programa que: leia uma lista de 50 alunos e as respectivas notas. calcule a nota média. escreva a diferença
3. COMPILAÇÃO E ESTRUTURA BÁSICA DE UM PROGRAMA EM C
3. COMPILAÇÃO E ESTRUTURA BÁSICA DE UM PROGRAMA EM C 3.1. Compilação de um Programa C O compilador C realiza a compilação do código-fonte de um programa em cinco etapas: edição, pré-processamento, compilação,
COMPUTAÇÃO. O estudante deve ser capaz de apontar algumas vantagens dentre as seguintes, quanto à modalidade EaD:
COMPUTAÇÃO QUESTÃO DISCURSIVA 1 O estudante deve ser capaz de apontar algumas vantagens dentre as seguintes, quanto à modalidade EaD: (i) flexibilidade de horário e de local, pois o aluno estabelece o
Ficheiros binários 1. Ficheiros binários
Ficheiros binários 1 Ficheiros binários 1. Considere que dispõe de ficheiros binários cujo conteúdo é constituído por uma ou mais estruturas como a indicada a seguir struct registo { }; int ref; float
Trabalho Prático II - Resta 1 Data de Entrega: Conferir no calendário!
ALGORITMOS E ESTRUTURAS DE DADOS I DCC/UFMG Trabalho Prático II - Resta 1 Data de Entrega: Conferir no calendário! Pedro O.S. Vaz de Melo May 29, 2013 1 DESCRIÇÃO DO PROBLEMA O objetivo deste trabalho
Recursividade. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR
Recursividade David Menotti Algoritmos e Estruturas de Dados II DInf UFPR Conceito de Recursividade Fundamental em Matemática e Ciência da Computação Um programa recursivo é um programa que chama a si
Orientação a Objetos
Orientação a Objetos 1. Manipulando Atributos Podemos alterar ou acessar os valores guardados nos atributos de um objeto se tivermos a referência a esse objeto. Os atributos são acessados pelo nome. No
PROGRAMAÇÃO DE COMPUTADORES V - TCC Modulo 6 : Funções Escopo de Variáveis: Globais x Locais Aura - Erick
PROGRAMAÇÃO DE COMPUTADORES V - TCC- 00.323 Modulo 6 : Funções Escopo de Variáveis: Globais x Locais Aura - Erick [email protected], [email protected] Roteiro Funções Escopo de Variáveis Variáveis Globais
Programação II. Tipos Estruturados. Bruno Feijó Dept. de Informática, PUC-Rio
Programação II Tipos Estruturados Bruno Feijó Dept. de Informática, PUC-Rio Dados Compostos Até agora tipos simples: char, int, float,. Necessidade por dados compostos, por tipos estruturados Ex.: pontos
INF 1771 Inteligência Artificial
INF 1771 Inteligência Artificial Aula 04 Busca Heurística Edirlei Soares de Lima Métodos de Busca Busca Cega ou Exaustiva: Não sabe qual o melhor nó da fronteira a ser expandido.
Análise de Algoritmos
Análise de Algoritmos Profa. Sheila Morais de Almeida DAINF-UTFPR-PG março - 2016 A invariante de laço pode ser definida como uma relação entre as variáveis de um algoritmo que é verdadeira em um determinado
Análise de Algoritmos Parte 4
Análise de Algoritmos Parte 4 Túlio Toffolo [email protected] www.toffolo.com.br BCC202 Aula 07 Algoritmos e Estruturas de Dados I Como escolher o algoritmo mais adequado para uma situação? (continuação)
Linguagem C: Elementos fundamentais
Instituto de C Linguagem C: Elementos fundamentais Luis Martí Instituto de Computação Universidade Federal Fluminense [email protected] - http://lmarti.com Tópicos Principais Variáveis e Constantes Operadores
Controle de Fluxo Comandos de repetição: while e do-while
BCC 201 - Introdução à Programação Controle de Fluxo Comandos de repetição: while e do-while Guillermo Cámara-Chávez UFOP 1/1 Comandos de Repetição (Laços) I São muito comuns as situações em que se deseja
Recursividade. Prof. Jesus José de Oliveira Neto
Recursividade Prof. Jesus José de Oliveira Neto Algoritmos podem ser definidos de duas formas: Forma iterativa ou não recursiva: utiliza laços de repetição (while, for, do/while) Forma recursiva: métodos
Exercícios de Fixação Aulas 05 e 06
Disciplina: TCC-0.0 Prog. de Computadores III Professor: Leandro Augusto Frata Fernandes Turma: E- Data: / / Exercícios de Fixação Aulas 0 e 0. Construa um algoritmo (pseudocódigo e fluxograma) que determine
14.1 Vetor - Problemas
Problema 14: Um método de Criptografia consiste em substituir as letras de uma mensagem através do emparelhamento de alfabetos tal como dado abaixo. Construir um programa que codifica mensagens usando
INF 1010 Estruturas de Dados Avançadas
11.2 INF 1010 Estruturas de Dados Avançadas Listas de Prioridades e Heaps 1 Listas de Prioridades Em muitas aplicações, dados de uma coleção são acessados por ordem de prioridade A prioridade associada
Linguagem de Programação C. Fluxo de Saída Padrão. Linguagem de Programação C. printf. Fluxo de Saída Padrão. Algoritmos e Lógica de Programação
Algoritmos e Lógica de Programação Linguagem de Programação C Linguagem C Entrada e Saída de dados Reinaldo Gomes [email protected] Fluxo de Saída Padrão Saída Formatada: ( ) Tem a função de
Computação 2. Aula 2. Profª. Fabiany Vetores e Matrizes
Computação 2 Aula 2 Vetores e Matrizes Profª. Fabiany [email protected] Vetores Vetor também é conhecido como variável composta homogênea unidimensional; Um vetor computacional é um variável composta
Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de programação em linguagem C. Exercícios: Structs
Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de programação em linguagem C Exercícios: Structs 1. Utilizando estrutura, fazer um programa em C que permita
Gramáticas Livres de Contexto
Conteúdo da aula Gramáticas Livres de Contexto Marcelo Johann Trabalho - primeira etapa Definição, código e estrutura Mais elementos e detalhes de lex GLCs Gramática, produção, derivações, árvores Ambíguas,
Computação I (MAB120) DCC/UFRJ
Computação I (MAB120) DCC/UFRJ Aula 2: introdução a algoritmos e programas 6 de abril de 2016 Objetivos dessa aula Definir o que são algoritmos e programas Apresentar algumas técnicas para desenvolvê-los
Metodologias de Programação
Metodologias de Programação Bloco 1 José Paulo 1 Formador José António Paulo E-mail: [email protected] Telemóvel: 96 347 80 25 Objectivos Iniciar o desenvolvimento de raciocínios algorítmicos Linguagem
Matemática para a Economia I - 1 a lista de exercícios Prof. - Juliana Coelho
Matemática para a Economia I - 1 a lista de exercícios Prof. - Juliana Coelho 1 - Para cada função abaixo, calcule os valores pedidos, quando for possível: (a) f(x) = x 3 3x + 3x 1, calcule f(0), f( 1)
Aula 01 Introdução Custo de um algoritmo, Funções de complexidad e Recursão
MC3305 Algoritmos e Estruturas de Dados II Aula 01 Introdução Custo de um algoritmo, Funções de complexidad e Recursão Prof. Jesús P. Mena-Chalco [email protected] 2Q-2015 1 Custo de um algoritmo
Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP. Recursividade
Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP Recursividade Conceito de Recursividade Fundamental em Matemática e Ciência da Computação Um programa recursivo é um programa que chama a si mesmo
Algoritmos e Estruturas de Dados I. Variáveis Indexadas. Pedro O.S. Vaz de Melo
Algoritmos e Estruturas de Dados I Variáveis Indexadas Pedro O.S. Vaz de Melo Por que índices são importantes? Como uma loja de sapatos artesanais deve guardar os seus produtos? 1 2 3 4 Tamanhos entre
