TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS LINGUAGEM DE PROGRAMAÇÃO I Aula 8 1 02/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
Jan 06, 2016
1
TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS
LINGUAGEM DE PROGRAMAÇÃO I
Aula 8
02/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
2
Agenda Revisão para Avaliação Regimental
Variáveis, constantes, tipos de dados, operadores aritméticos, relacionais e lógicos
Programação básica Estruturas condicionais, IF and IF ELSE Operador ternário Switch Precedência de operadores lógicos e relacionais Estruturas de Repetição do... while e for Matrizes Funções
Exercícios
02/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
3
Variáveis, constantes , tipos de dados Variáveis – Espaço de memória reservado para certo tipo
de dado. Terá valores diferentes em diferentes momentos. Declaração de variáveis – reserva espaço de memória de acordo com
tipo, sempre devem ser declaradas
Nomes devem obedecer preceitos :Letras maiúsculas e minúsculas.Primeiro caracter não pode ser numeroCase sensitiveDeve descrever o conteúdo Ex: vPQP ou vTotal ?
02/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
4
Variáveis, constantes , tipos de dados Variáveis
Armazenam valores de acordo com seus tipos de dados declarados (int,char,float,double).
Precisam ser declaradasDeclaração : int vTotal; char vNome; int vSalario;Reserva espaço em memória de acordo com o tipo.
02/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
Variáveis, constantes , tipos de dados
Variaveis não pode ter o mesmo nome de palavras-chave ou reservadas.
503/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
6
Variáveis, constantes , tipos de dados - complementação
Variáveis Atribuição de valores
Ao ser declarada não tem uma valor aleatório de bites (0 e 1)Sintaxe variavel = expressãoAtribuição pode ser feita junto com a declaração :
Int vTotal = 1000 ou int vTotal = vTotal + vSubtotalUltimo valor atribuído substitui anteriorPode atribuir mesmo valor a varias variáveis :
a= b= c= d = 5 (valores são atribuídos da direita pra esquerda)ou a=5; b=5; c=5; d=5;
02/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
7
Variáveis, constantes , tipos de dados - complementação
Variáveis Atribuição de valores
Ao ser declarada não tem uma valor aleatório de bites (0 e 1)Sintaxe variavel = expressãoAtribuição pode ser feita junto com a declaração :
Int vTotal = 1000 ou int vTotal = vTotal + vSubtotalUltimo valor atribuído substitui anteriorPode atribuir mesmo valor a varias variáveis :
a= b= c= d = 5 (valores são atribuídos da direita pra esquerda)ou a=5; b=5; c=5; d=5;
02/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
8
Variáveis, constantes , tipos de dadosConstantes
Declarada com a diretiva #define ou const:#define PI 3.14159265Const int aliqicmsSp; (; so pra const)
Oposto das variáveis, mantém seu valor por toda a execução do programa, não podem ser alteradas.Ex.: int vMaxcolunas=100 (Numero max. De colunas)
É mais fácil lembrar do nome da constante do que seu valor que será usado repetidas vezes no programa.
02/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
Variáveis, constantes , tipos de dados Diferenças entre const e #define.
Uma constante definida com const existe fisicamente em uma determinada posição de memória.
Uma constante definida com #define não existe fisicamente na memória, sendo seu valor substituido ao longo do programa na fase de pré processamento (antes da compilação)
Const faz parte das palavras reservadas da linguagem C #define é uma diretiva que indica ao pré-processador que o simbolo
que a segue vai ficar com o valor que aparece depois do simbolo, antes de compilar o pré-processdor subtitui o simbolo pelo valor definido.
Constante definida com const fica com o tipo de dado indicado na definição enquanto que se usar #define o tipo resulta da expressão que aparece no componente valor.
Como #define não faz parte da ling. C não precisa de ; no final
905/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
10
Variáveis, constantes , tipos de dados
02/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
BásicosCHAR, INT, FLOAT E DOUBLEPodem ser Alterados com modificadores LONG,
SHORT e UNSIGNED (ver tabela de tipos alterados prox slide)
Variáveis, constantes , tipos de dados Tabela de tipos modificados
1103/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
Variáveis, constantes , tipos de dados
Modificadores – long , short, unsigned Com exceção de void os tipos basicos podem ser
acompanhados de modificadores na declaração Além dos tipos de dados básicos existem outros tipos de dados ditos
modificados. Em C existem dois modificadores: o modificador long e o modificador unsigned. Tipicamente o modificador long aumenta o número de bytes usados para o registro do número. Por conseqüência o intervalo de validade do número fica aumentado significativamente.
Por padrão uma variável de tipo inteiro aceita números positivos e negativos O modificador unsigned permite que uma variável aceite apenas valores
positivos.
1203/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
13
Operadores aritméticos, relacionais e lógicos
02/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
Indicam ao compilador a necessidade de manipulações Matematicas ou lógicas de dados.Operadores Aritméticos – Para calculo de
expressões matemáticas.Binários = Atribuição
+ Soma- Subtração/ Divisão% Módulo (obtem o resto da divisão)
14
Operadores aritméticos, relacionais e lógicos - Continuação
02/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
Unários – Atuam na inversão de valores - Sinal Negativo + Sinal Positivo
Incremento – Soma 1 ao operando (variável)Ex. var = var++
Decremento – Subtrai 1 do operandoEx. var = var --
15
Operadores aritméticos, relacionais e lógicos - Continuação
02/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
Modo Pré-Fixado e Pós-Fixado
Pré – Incrementa variavel e depois executa instrução
Pós – Executa instrução e depois incrementa a variavel.
Operador Instrução Pós-fixado Pré-fixado
++ var = var+1;var = var++;
ou var++;
var = ++var; ou
++var;
-- var = var-1;var = var--;
ou var--;
var= --var; ou
--var;
16
Operadores aritméticos, relacionais e lógicos - Continuação
02/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
Modo Pré-Fixado e Pós-Fixado#include <stdio.h>Void main(){Int Var,Var2;Var=5;Var2=++var;printf(“var=%d\n”,Var);printf(“var2=%d\n”,Var2);}
#include <stdio.h>Void main(){Int Var,Var2;Var=5;Var2=var++;printf(“var=%d\n”,Var);printf(“var2=%d\n”,Var2);}
17
Operadores aritméticos, relacionais e lógicos - Continuação
02/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
Operadores aritméticos de atribuiçõesCombinações podem simplificar instruções
Instrução normal Instrução reduzida
var = var + expr; var+=expr;
Var=var – expr; Var-=expr;
Var=var/expr; Var/=expr;Var=var*expr; Var*=expr;
18
Operadores aritméticos, relacionais e lógicos - Continuação
02/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
Responsaveis por comparações de expressões nos programas
Retornam zero para falso e um para verdadeiro
Operador Descrição> Maior
>= Maior igual< Menor
<= Menor igual== Igualdade!= Diferente
19
Operadores aritméticos, relacionais e lógicos - Continuação
02/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
Exemplo de comparações de expressões nos programas
20
Operadores aritméticos, relacionais e lógicos - Continuação
02/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
Operadores Lógicos – Servem para interligar mais de uma expressão relacional
Retornam zero para falso e um para verdadeiro
Operador Descrição
&& AND|| OR
!NOT (operador de
negação)
21
Operadores aritméticos, relacionais e lógicos - Continuação
02/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
Operadores Lógicos – Exemplo
22
Operadores aritméticos, relacionais e lógicos - Continuação
02/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
Precendência – Ordem em que os operadores são executados pelo compilador.
Caso tenham o mesmo nivel de predência são analisados da esquerda para a direita.
A precedência dos operadores pode ser mudada utilizando parentesEx.: 4/2*5+1=11 4/2*(5+1)=12
23
Programação em CUm programa em C consiste em uma ou varias funções
e comandos, formando uma sequencia de código organizada de tal forma que permita resolver um problema. Os nomes programa e função se confundem em C.
Forma Geral dos programas em C # Biblioteca.h – diretiva para compilador, não é C
Main() <- Primeira Função a ser executada{ <- Inicia o corpo da Função} <- Termina a Função
02/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
24
Programação em C - ContinuaçãoLinguagem é Case Sensitive, maiusculas e
minusculas fazem diferenca.Todas as instruções são escritas em letras
minusculasApenas usar Letras maiusculas em variaveis,
mensagens ou funções escritas pelos programadores.
02/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
25
Programação em C - ContinuaçãoNome de função pode ser qualquer nome menos
main, que indica função que inicia a execução do programa, todo programa deve ter um main
Tipo Void indica que programa não tem valor de retorno
#include <iostream.h>Void main(){
cout << “Primeiro Programa””;}
02/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
26
Programação em C - Continuação Espaço em branco é desconsiderado pelo compilador
Exceções Cadeia de caracteres constantes não podem ser separadas em diversas linhas Nomes de funções,operadores e comandos de linguagem não podem ser separados Diretivas como #include não podem ser escritas em diversas linhas
Toda instrução termina em ; Instruções devem ser escritas entre {} Operador de inserção << conecta mensagem ao comando
cout (objeto da classe I/O leitura e impressão)
02/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
27
Programação em C - Continuação Diretiva do pré processador - #include <biblioteca> -
Programa que examina o programa fonte e executa modificações
Inserindo o a biblioteca (arquivos de inclusão no diretório INCLUDE) no
código fonte antes da compilação. Arquivo iostream.h – Contem cout, << e recupera dados
digitados no teclado e saída em video. Códigos especiais – Não podem ser digitados no teclado,
obtidos por meio de combinação do sinal \
02/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
28
Programação em C - ContinuaçãoTabela de códigos especiais
02/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
29
Programação em C - Continuação Exemplo de uso de códigos especial – Imprimindo uma nova
linha:
#include <iostream.h>Main(){
Cout << “\nPrimeiro programa”;}
02/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
30
Programação em C - Continuação Constantes numéricas – Valor fixo e inalteravel
DECIMAL – 12345 Não podem estar entre aspas HEXADECIMAL – 0X41, 0X1afb (Base 16 precedidos de 0x) OCTAL – 041,010, 0754 (Base 8 Precedidos de 0)
010 diferente de 10 CARACTER – Definida para números entre 0 e 255, significa que cabe
em 1 byte, escritos com aspas simples ‘5’, ‘a’,’w’,’\n’,’\t’ Aspas simples ‘’ para único caractere Aspas duplas “” para cadeia de caracteres.
02/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
31
Estrutura Condicional Simples.
Antes de falarmos sobre estrutura condicional simples, uma pequena revisão.
Estruturas são usadas para controlar o funcionamento do programa. Estruturas sequenciais : Composta por comandos a serem
executados um após o outro sem tomada de decisão para desvio da sequência natural.
Ex.: float x; char sexo; int i; double y; ccout << “ Estrutura sequencial em C”;
02/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
32
Estrutura Condicional Simples.
Para incutirmos alguma “inteligencia” ou processos com maior complexidade aos programas devemos utililizar Estruturas condicionais.
Estrutura condicional simples – Implementada através de comandos de decisão, usados para decidir o que deve ser feito de acordo com uma expressão de teste.
IF – Decisão simples, com uma instrução sem chaves “{}”, com mais de uma instrução necessita chaves “{}”
1 instrução + de 1 instruçãoIF(expressao de teste) IF(expressao de teste) instrução; { ou Instrução;if(condicao) instrucao; Instrução; }
02/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
33
Estrutura Condicional Encadeada. IF ELSE encadeada – Implementa a estrutura de controle condicional encadeada
heterogena.If(pais == ‘Brasil’){ if( estado == ‘São Paulo’) { if( cidade == ‘São Paulo’) cout << “\nVoce esta na capital de São Paulo, Brasil”; else cout << “\nVoce não esta na capital de são Paulo; }} else cout << “\nVoce não esta no Brasil”
02/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
34
Operador Condicional - ?
Único operador Ternário em C, indica a espera de três argumentos.
Sintaxe : condição ? Expressao1 : expressao2 Funcionamento
Condição é avaliadaSe resultado for verdade, o resultado de toda a
expressão é o valor devolvido por expressão1Se resultado for falso, o resultado de toda a expressão
é o valor devolvido por expressão202/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
35
Operador Condicional ?Exemplos
02/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
#include <stdio.h>int main(){ float salario; printf("Qual o Salario: "); scanf("%f",&salario); if (salario <= 0) printf ("Salario: Valor Invalido"); if (salario > 1000) printf ("Imposto = %2f\n", salario*1.10); else printf ("Imposto = %2f\n", salario*1.05); system("PAUSE");}
#include <stdio.h>int main(){ float salario; printf("Qual o Salario: "); scanf("%f",&salario); salario = salario > 1000 ? salario*1.10 : salario*1.05; printf("Novo Salário: %.2f\n",salario);} system("PAUSE");
36
Operador Condicional ?
Considerações – embora pareça semelhante a instrução if-else o operador condicional “?“ Funciona de forma diferente, enquanto o operador condicional devolve sempre um resultado o if-else determina quais instruções deve ser executadas
02/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
37
Switch A instrução switch é usada em tomada de decisões
em que o numero de possibilidades é elevado para reduzir a complexidade do if-else, sintaxe:
02/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
Switch (expressão){ case constante1: instruções1; case constante2: instruções2; .................... break; [dfault: instruções;]}
Expressão representa valor numérico dos tipos char, int ou long., é avaliada e em seguida o switch compara o resultado com valor de cada constante que segue cada um dos case.Instrução break para execução dentro do switch e manda para instrução posterior ao switchO conjunto de todos os valores possíveis para a expressão é colocado entre chaves
38
SwitchFuncionamento
Se o Valor da expressão for igual a alguma das constantes que seguem os varios case, então são executadas as instruções que seguem o case correspondente
Se o valor da expressão não for igual a nenhuma das constantes apresentadas pelos case, então são executadas as instruções que seguem o parâmetro default
Após realizar teste de expressão e encontrar valor correspondente todas as linhas de código são executadas até a instrução break
O parâmetro default é opcional, caso não seja mencionado nada é executado caso o valor da expressão não seja igual a nehum dos case
Em cada case do switch só uma única constante do tipo char, int ou long pode estar presente para avaliação
02/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
39
Switch
Exemplo prog0312.c :
02/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
Incorreto :#include <stdio.h>main(){ char Est_Civil; printf(“Qual estado Civil: “); scanf(“%c”,&Est_Civil); switch(Est_Civil) { case ´C´: printf(“Casado\n”); case ´S´: printf(“Solteiro\n”);
case ´D´: printf(“Divorciado\n”); case ´V´: printf(“Viuvo\n”); default : printf(“Estado Civil incorreto\n”);
}}
#include <stdio.h>main(){ char Est_Civil; printf(“Qual estado Civil: “); scanf(“%c”,&Est_Civil); switch(Est_Civil) { case ´C´: printf(“Casado\n”); case ´S´: printf(“Solteiro\n”);
case ´D´: printf(“Divorciado\n”); case ´V´: printf(“Viuvo\n”); break; default : printf(“Estado Civil incorreto\n”);
}}
40
Precedência de operadores Lógicos
Existem circunstâncias em que uma condição simples não é suficiente para tomar uma decisão, é necessário a interligação de duas ou mais condições lógicas
02/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
41
Precedência de operadores Lógicos
Permitem a combinação de duas ou mais expressões lógicas numa única expressão que devolve um único valor lógico (Verdadeiro ou Falso)
02/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
42
Precedência de operadores Relacionais
Para definir a ordem pela qual as operações são executadas existe a tabela de precedências.
Ocupam patamares Diferentes na hierarquia.Seta indica maior precedência
02/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
Estruturas de repetição: do...while
Laço while Implementa uma estrutura de repetição controlada pela verificação de uma
condição. Sintaxe : While (condição) OU While (condição) <instrução>; { <instrução>; <instrução> } Ao final da ultima instrução no corpo do comando avalia se a condição
continua verdadeira, caso continua repete as instruções dentro do corpo até que a condição não seja mais verdadeira
4303/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
Estruturas de repetição: do...while
Laço while – continuação Ex.: int Ndia =1 while (ndia<=7) { printf (“Dia : %d\n",Ndia);
Ndia++; } Execução do laço pode ser interrompida por quebra de condição ou
comando Break que causa a saida do laço para a proxima instrução após o laço (}).
4403/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
Estruturas de repetição: do...while O comando Break afeta apenas o laço interno a ele no caso de laços aninhados Lacos Aninhados :while (true){ int nCont = 1000; int nPara=0; printf("\n Entre com o numero de parada "); scanf("%d", &nPara); while (nCont > 0) { nCont--; cout << "\n \n" << nCont << "\n"; if(nCont==nPara) break; }}
4503/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
Estruturas de repetição: do...while
O comando CONTINUE força a proxima iteração do laço e pula o codigo que estiver abaixo dele, ou seja força a avaliação da expressão de teste e depois continua o laço
Ex.: Imprime caracteres digitados que são diferentes de digitos
4603/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
Estruturas de repetição: do...while
A estrutura DO-WHILE, similar a estrura WHILE, faz a verificação de teste no final da estrura, bom para situações em que instruções no corpo devam ser excutadas antes da verificação, com sintaxe no exemplo a seguir:
4703/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
Estruturas de repetição: for
Usada para implementar estrutura de controle de repetição de forma similar ao while/do-while
Três expressões separadas por ponto e virgula regulam seu funcionamento
4803/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
Vetores
Representam os dados Homogêneos - Somente um tipo de dado, posições de memória, individualizados por índice, unidimensional.
Estrutura de dados linear que necessita de somente um índice para que seus elementos sejam endereçados.
Usado para armazenar lista de valores do mesmo tipo. Cada célula armazena somente um valor de dados do vetor
tipo. Características principais
Alocação estática, Estrutura homogênea, alocação seqüencial
4905/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
Vetores Inserção/Exclusão
Realocação dos elementosPosição de memória não liberadaEx : int nota [ 5 ]nota [1]=9.5; nota[2]=7.4 .........
5005/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
Matriz É um arranjo bidimensional ou multidimensional de vetores. Necessita de um índice para referenciar a linha e outro para referenciar a
coluna para que seus elementos sejam endereçados. Ex. Char letras[3][6]
5105/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
Uso de Memória em C Funções para alocação de memória
função malloc que realiza a alocação de memória. Deve-se informar para a função a quantidade de bytes para alocação, retorna um ponteiro com o endereço reservado.
Como a função retorna um ponteiro para o tipo void, deve-se utilizar o typecast, transformando este endereço para o tipo de ponteiro desejado.
Calloc Aloca memoria especificando a quantidade de bloco de um determinado tamanho e inicializa com zeros.
5205/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
Uso de Memória em C Funções para alocação de memória Função realloc – expande área inicialmente definida.
Deve-se passar para ela o ponteiro retornado pelo malloc e a indicação do novo tamanho.
Função free – libera área de memória reservada para matriz, passa-se o endereço para isso.
5305/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
Declaração de VetoresTipo nome_variavel[no. De elementos] OU Int notas[4];
Tipo – Tipo de dados de cada um dos elementos do vetor Nome_variavel – Indica o Nome pelo qual o vetor sera chamado. No. De elementos – Valor constante que indica quantos elementos
tem o vetor.
Carga inicial – como as variáveis contem valores aleatoriosÉ possível iniciar automaticamente todos os elementos de um vetor :Tipo var[n] = {valor1,valor2,valor3,...valorn};
5405/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
Declaração de Vetores Ex. de prog.
Para leitura de salários:
5505/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
Matrizes e vetores Multidimensionais
Declaração : Tipo vetor[dim1] [dim2] [...] [dimn]
Constantes – Valor fixo (não se pode alterar ao longo da execução do programa).Const tipo simbolo = valor ou#define simbolo valor
5605/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
Passagem de Vetores para Funções Usado para passagem de vários parâmetros/dados para
função – ex. função de inicialização de vetor com 10 posiçõesMain(){ int v[10]; inic1(v)}
void inic1(int s[10]){...}
5705/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
Passagem de Vetores para Funções
5805/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
59
Funções
Funções - mini-programas com objetivos específicos e únicos que buscam modularizar a programação.
Ex. de funções – printf, scanf, getchar, putchar, etc.
É Indispensável que o programador C domine completamente a escrita de programas de forma modular através de funções.
02/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
60
Funções
Importante – Um prog. Em C tem sempre que possuir a função main() para evitar erros de linkagem (Apenas 1!!).
Variáveis declaradas dentro de um bloco são locais.
Ex. de erro de linkagem
02/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
61
Funções
02/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
62
Funções
Nome – Deve seguir regras de declaração de variáveis
Não pode ser igual ao nome de outra função ou variável
Deve especificar o que faz e de fácil leituraComo funciona
Código executado quando invocada em alguma parte do programa
02/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
63
Funções
Como funcionaPrograma que invoca fica suspenso ate finalizar
execução da função.Programa que invoca pode enviar parâmetros.Função pode retornar Parâmetros ao programa
que invoca-la
02/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
64
Funções
Como funcionaCódigo executado quando invocada em alguma
parte do programa.Programa que invoca fica suspenso ate finalizar
execução da função.Programa que invoca pode enviar parametros.Função pode retornar Parametros ao programa
que invoca-la
02/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
65
Funções
Sem passagem e sem retorno de parametros:
02/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
Main(){.......funcaoX();}
funcaoX(){.............}
66
Funções
Com passagem e com retorno de parametros:
02/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
Main(){.......funcaoX(‘A’, 123,
23.599);}
funcaoX(char ch, int n, float x)
{......Return res;}
67
Funções
Com passagem e com retorno de parâmetros:O numero de parâmetros enviados deve ser igual
ao numero de parâmetros no cabeçalho
02/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
68
Funções
Com passagem e com retorno de parâmetros:Qualquer expressão valida em C pode ser enviada
como parâmetroO cabeçalho de uma função nunca deve ser
seguido por ; (ponto e virgula)O nome das variáveis (parâmetros) presentes no
cabeçalho da função não tem qualquer relação com o nome das variáveis enviadas.
02/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
69
Funções
Funções e procedimentosEm C existem apenas funçõesA função tem sempre um tipo e valor de retorno
associados, um procedimento não devolve qualquer valor.
Ex. função : int max(int n1, int n2) - verifica valores e devolve maior.
Ex, Procedimento : linha() – coloca uma linha na tela e termina sem devolver qualquer valor.
Sempre que no cabeçalho de uma função não é colocado tipo de retorno, ele é substituído por int.
02/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
70
Funções
Funções e procedimentosComo chamar funções:
Para armazenar valor em uma variavel : x=soma(23,y)Dentro de outra função : printf(“%d %d”, dobro(5), soma(dobro(2),3+2));OuIf (soma(x,y) > 0 )
Como chamar procedimentolinha (int n); ou int linha(int n);
02/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
71
Funções
Funções – Onde coloca-lasPodem ser colocadas em qualquer lugar do
Arquivo, antes ou depois de serem invocadas
02/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
void funcaoX(void){..}
Main(){ funcaX()}
Void funcaoX();Main(){ funcaX()}void funcaoX(){..}
72
Bibliografia
02/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com
BIBLIOGRAFIA BÁSICA1 DAMAS, Luís. Linguagem C. 10ª Edição. São Paulo: LTC, 2007.2 FEOFILOFF, P. Algoritmos de Janeiro: Elsevier, 2009.
3MIZRAHI, Victorine Viviane. Treinamento 2ª Edição. São Paulo: Pearson Education, 2008.
4ASCENCIO, Ana Fernanda Gomes; CAMPOS, Edilene Aparecida Veneruchi. Fundamentos da Programação de Computadores. 2ª Edição. São Paulo: Pearson Education, 2007.
BIBLIOGRAFIA COMPLEMENTAR
1DASGUPTA, Sanjoy; UMESH, Vazirani, PAPADIMITRIOU Christos, Algoritmos. 1ª Edição. São Paulo: McGraw-Hill, 2009.
2LAUREANO, M. Estrutura de Dados com Algoritmos e C. 1ª Edição. São Paulo: Brasport, 2008.
3PEREIRA, Silvio do Lago. Estruturas de Dados Fundamentais – Conceitos e Aplicações. 7ª Edição. São Paulo: Érica, 2008.
4SOUZA, Marco Antonio Furlan et al. Algoritmos e Lógica de Programação. São Paulo: Cengage Learning, 2008.
5ZIVIANI, Nívio. Projeto de Algoritmos com Implementações em Pascal e C. 3ª Edição. São Paulo: Cengage Learning, 2010.
RECURSOS DIDÁTICOS
1 TV/VÍDEO/DVD 4 LABORATÓRIO – Software “Turbo C” ou “Dev C++”
2 DATASHOW 5 Aula expositiva em laboratório3 RETRO-PROJETOR 6 Exercícios em laboratório