Baixe o app para aproveitar ainda mais
Prévia do material em texto
Engenharia 2014.2 – Programação de Computadores Prof. Max Arruda Diniz Filho P á g i n a | 1 PPPrrrooogggrrraaammmaaaçççãããooo DDDeee CCCooommmpppuuutttaaadddooorrreeesss LLLiiinnnggguuuaaagggeeemmm CCC Engenharia 2014.2 – Programação de Computadores Prof. Max Arruda Diniz Filho P á g i n a | 2 Linguagem de Programação C A linguagem C é uma linguagem 3GL (terceira geração); É uma linguagem com um núcleo muito simples, procedural e com recursos apoiados em bibliotecas de funções padronizadas; Possui um sistema simples de tipos, evitando operações desnecessárias; Parâmetros passados sempre por valor (exceto em vetores simulado através de ponteiros que pode ser passado por referência); Estrutura de variáveis do tipo struct que permite que dados de tipos diferentes sejam combinados e manipulados como um registro. Tradução do código-fonte Quando o programador escreve um algoritmo ele está criando uma solução inicial para o problema proposto pelo usuário. O texto formal é o que se chama de código- fonte, escrito numa linguagem formalizada e dentro dos padrões rígidos de programação (sua sintaxe). Para que o código-fonte seja processado pelo computador é necessário antes traduzi-lo em código de maquina. Interpretação Nesta forma de tradução é feita a leitura, tradução e execução de cada linha do programa (código-fonte). Compilação Após verificação e checagem da sintaxe é gerado um código em linguagem de máquina a partir da tradução integral do programa, dando como resultado final o código executável que pode ser executado diretamente pelo computador. ng Linguagem de Alto Nível Compilador Executável Engenharia 2014.2 – Programação de Computadores Prof. Max Arruda Diniz Filho P á g i n a | 3 Ambiente de desenvolvimento em C A escrita de um programa em C é feita num editor de texto puro, não formatado para evitar a inserção de caracteres estranhos no texto. Dev-C++ É um ambiente integrado de desenvolvimento para aplicações em C e C++ e pode ser baixado no site: http://bloodshed.net/devcpp.html Possui as seguintes características: 1. Controle de versão de software; 2. Editor com cores de sintaxe personalizável; 3. Gerenciador de projetos; 4. Função “auto-completar”; 5. Edição e compilação de arquivos dos projetos criados; 6. Gerenciador de ferramentas; 7. Função de localização e substituição. Figura 1 – Janela Inicial do ambiente de desenvolvimento do Dev-C++ Engenharia 2014.2 – Programação de Computadores Prof. Max Arruda Diniz Filho P á g i n a | 4 Para iniciar um novo projeto basta carregar a ferramenta a partir do desktop e seguir os passos a seguir: 1. Inicie um novo projeto clicando em “File/New/Project”; 2. Selecione: a. Tipo de projeto = Console Application; b. Name = Aula1; c. C Project; d. Make Default Language Engenharia 2014.2 – Programação de Computadores Prof. Max Arruda Diniz Filho P á g i n a | 5 3. Será criado a classe main.c 4. Altere a classe main.c conforme descrito abaixo: #include <stdio.h> #include <stdlib.h> int main() { printf("Alo Mundo!"); getch(); return 0; } Engenharia 2014.2 – Programação de Computadores Prof. Max Arruda Diniz Filho P á g i n a | 6 5. Salve o código fonte da classe main.c (CTRL+S) 6. Salve o código fonte da classe main.c (CTRL+F12) Engenharia 2014.2 – Programação de Computadores Prof. Max Arruda Diniz Filho P á g i n a | 7 7. Compile o arquivo clicando em Execute/Compile 8. Verifique se a compilação ocorreu sem erros (Status Done) a. Caso esteja tudo certo (isento de erro de sintaxe) aparecerá uma janela como a tela acima com o status done (feito, pronto). Caso haja sintaxes incorretas, mensagens de erros aparecerão no rodapé da janela e dentro da janela aparecerá a mensagem: there are erros no status; b. Depois de compilar o programa o arquivo executável é gerado no mesmo local onde foi gravado o arquivo-fonte. Engenharia 2014.2 – Programação de Computadores Prof. Max Arruda Diniz Filho P á g i n a | 8 9. Execute a aplicação clicando em Execute/Run Engenharia 2014.2 – Programação de Computadores Prof. Max Arruda Diniz Filho P á g i n a | 9 10. A Aplicação será executada numa tela do DOS Case sensitive A linguagem C diferencia as letras maiúsculas das minúsculas: por exemplo, uma variável empregada para armazenar a devolução do imposto de renda, declarada Devir é tratada diferentemente de devIR e de DEVIR. Comando e Linha de Instrução O computador executa ordens dadas através do código-fonte que é compilado e traduzido em código de maquina. Essas ordens são chamadas de comandos ou instruções. Comando: palavra-chave que indica explicitamente uma ordem de execução; Instrução: conjunto de palavras-chave e argumentos que compõem uma linha do código-fonte. Exemplo: a) Int x,y; O comando Int , juntamente com os seus argumentos x,y compõem a linha de instrução que definem as variáveis x,y como do tipo inteiro. b) R = sqrt(a); O comando sqrt, com seus argumentos compõem a linha de instrução cujo resultado deve ser atribuído a variável R. Engenharia 2014.2 – Programação de Computadores Prof. Max Arruda Diniz Filho P á g i n a | 10 Comentários Os comentários, antes de servirem apenas para comentar um determinado trecho do programa, são fundamentais para documentar o código de uma rotina ou um bloco de instruções. Para comentar uma linha são usadas duas barras inclinadas // indicando que tudo que está escrito após essas duas barras é considerado comentário ( o compilador ignora). Para comentar múltiplas linhas pode ser usada um par de barras inclinadas com asterisco dentro /*....*/. Bibliotecas (arquivo de cabeçalhos) São arquivos especiais, indicados entre < e > que contêm instruções necessárias aos programas, e que devem ser incluídos no código-fonte com a diretiva #include. Exemplo: a) Para que se possa entrar com dados através do comando scanf() e exibir os resultados com printf() é necessário incluir biblioteca padrão “stdio.h”; b) Para elevar um número a uma potência usando a função pow() é necessário a inclusão da biblioteca “math.h”; c) Para trabalhar mais facilmente com strings é fundamental a inclusão da biblioteca “string.h”. Biblioteca Usabilidade Algumas funções Stdio.h Comandos de entrada/saída Fprintf(), gets(), scanf(), printf(), stdin(), stdout(). Stdlib.h Funções envolvendo alocação de memória, controle de processos, conversões e outras. Abs(), div(), rand(), strtod(), system(). String.h Funções de manipulação de strings Strllen(), strupr(), strlwr(), strtolower(), strcmp. Math.h Funções para serem usadas em cálculos matemáticos.cos(), sin(), tan(), exp(), log(), sqrt(). Conio.h Comandos de controle do console Getch(), getchar(). Engenharia 2014.2 – Programação de Computadores Prof. Max Arruda Diniz Filho P á g i n a | 11 Layout do Código Fonte O código-fonte de um programa deve ser escrito de forma legível e elegante. Para isso são usadas as seguintes técnicas: 1) Endentação – Espaços que precedem uma instrução dentro de uma estrutura. 2) Par de chaves {..}– Definem blocos de instruções ou implementação de uma função. 3) Identificadores – Nomes utilizados na definição de variáveis, constantes e funções. a) Constantes – Letras maiúsculas; por exemplo, PI, TAXA, etc. b) Funções – A primeira letra maiúscula; por exemplo, CalcFat(), VerifNumero(), etc. c) Variáveis – Letras minúsculas; Tipos de Dados Básicos Int : //define uma variável inteira Float/Double: // define uma variável real Char: // define uma variável string Bool: // define uma variável lógica(verdadeiro ou falso) Modificadores – São usados para alterar a faixa de valores. short – encurta a faixa de valores; Exemplo: short int long – aumenta a faixa de valores; Exemplo: long int signed – considera a faixa de valores com sinal; Exemplo: signed int unsigned – considera apenas a faixa de valores não negativos; Exemplo: unsigned int O tipo de dado int (inteiro) serve para armazenar valores numéricos inteiros. pode ainda ser declarado precedidos da cláusula unsigned, o que faz com que só suporte números positivos. Isto faz com que, com o mesmo tamanho, uma variável suporte mais números positivos do que um signed (todos os inteiros são signed por omissão). O tipo char serve para armazenar caracteres ou inteiros. Com vetores do tipo char é possível criar cadeias de caracteres (strings). O tipo de dado float serve para armazenar números de ponto flutuante, ou seja, com casas decimais. O tipo de dado double serve para armazenar números de ponto flutuante de dupla precisão, normalmente tem o dobro do tamanho do float e portanto o dobro da capacidade. O tipo de dado struct servem para criar estruturas (chamados de registos em outras linguagens de programação). As estruturas são grupos de variáveis organizadas arbitráriamente pelo programador. Engenharia 2014.2 – Programação de Computadores Prof. Max Arruda Diniz Filho P á g i n a | 12 O seguinte código realiza seis operações matemáticas, adição, subtração , multiplicação, divisão, exponenciação e radiciação, e em seguida envia os seus respectivos resultados para a saída padrão (normalmente o console). #include <math.h> // necessária para pow() e sqrt() #include <stdio.h> // necessária para printf() e getchar() int main() { int a = 2, b = 3; printf("%d + %d = %d\n", a, b, a + b); printf("%d - %d = %d\n", a, b, a - b); printf("%d x %d = %d\n", a, b, a * b); printf("%d / %d = %0.1f\n", a, b, (float) a / b); // resultado fracionário printf("%d elevado a %d = %0.1f\n", a, b, pow(a, b)); // pow(base, expoente) printf("raiz quadrada de %d = %0.1f\n", a, sqrt(a)); getchar(); //O uso dessa função é necessária apenas nos sistemas Windows, para manter o terminal (Prompt de comando) aberto return 0; } Engenharia 2014.2 – Programação de Computadores Prof. Max Arruda Diniz Filho P á g i n a | 13 No exemplo seguinte, é criada uma estrutura composta por 3 elementos de tipos diferentes. Após ser declarada uma variável "x" do tipo struct "y", onde "y" é o nome da estrutura, para se acessar os elementos usa-se a seguinte sintaxe: x.elemento. #include <stdio.h> struct Pessoa { char nome[64]; // vetor de 64 chars para o nome unsigned short int idade; char rg[13]; }; int main() { struct Pessoa exemplo = {"Fulano", 16, "00.000.000-00"}; // declaração da variável "exemplo" printf("Nome: %s\n", exemplo.nome); printf("Idade: %hu\n", exemplo.idade); printf("RG: %s\n", exemplo.rg); getchar(); // desnecessário, mas comumente utilizado em ambientes windows para "segurar" o terminal aberto return 0; } Engenharia 2014.2 – Programação de Computadores Prof. Max Arruda Diniz Filho P á g i n a | 14 Variáveis e Constantes A linguagem de programação C exige que todas as variáveis usadas no programa sejam previamente definidas: declaradas com seu tipo de dado. De um modo geral a definição de variáveis é representada como indicado a seguir: tipo identificador = <valor> Exemplo: int cont; int cont =0; char CliSexo; char AluMat[10]; De um modo geral a definição de constantes é representada como indicado a seguir: Const tipo identificador = <valor> Exemplo: Const double PI=3,14; Operadores e Operações Operadores são símbolos convencionados que indicam ao compilador o tipo de operação a ser efetuado. 1. Operadores Aritméticos (*, / , % , +, - ); 2. Operadores Relacionais ( < , > , <= , >= , != , == ); 3. Operadores Lógicos (&& , || , ! ); 4. Operadores de incremento/decremento (++ , -- ) Exercício: 1) Marque com V se a expressão for verdadeira ou com F se for falsa, considerando os seguintes dados: A=3, B=1, C=2. ( ) (B>A) && (C>=B) ( ) !(A<B) ( ) (A>B) && (B==C) || (B>A) ( ) !(B>C) && (6<9) ( ) (A<=B)|| (B>C) ( ) !(!(!(B==A) && (C>B))) ( ) (C==A) || (B>A) ( ) !9B==A) && (B<=C) ( ) (C==B) && !(B<C) || !(A>B) ( ) !((B<C) && (A=3) && !(6<5)) Engenharia 2014.2 – Programação de Computadores Prof. Max Arruda Diniz Filho P á g i n a | 15 2) Sabendo que j=7 e k=3 (ambos inteiros),marque com V as respostas verdadeiras e com F as respostas falsas. a. ( ) j+++2 = 9 b. ( ) j=k==3 = 1 c. ( ) j/k = 3,5 d. ( ) j%k = 3 e. ( ) 3+j>>5 = 1 f. ( ) k==j+1 = 0 g. ( ) j---k = 6 h. ( ) j%k/j+k==5 = 0 i. ( ) k+++j-j = 3 j. ( ) j==--k/(k>1 = 1 Entradas e Saidas 1. Função scanf() – lê dados do teclado; Sintaxe: scanf(“formato”, &dados); Exemplo: ... Double SalAtu; Printf (“Digite o salário atual do empregado:”); Scanf(“%f”, &SalAtu); Para cada variável colocada na função scanf() deve-se informar qual o formato desejado de entrada. Engenharia 2014.2 – Programação de Computadores Prof. Max Arruda Diniz Filho P á g i n a | 16 2. Função printf() – exibe na tela do monitor de vídeo uma lista formatada de numeros, caracteres, strings etc. Sintaxe: printf(“formato”, saídas); Exemplo: Printf (“Resumo das vendas no Trimestre”); Printf (“Raiz quadrada de 4 e 5”, x,y); Para cada variável colocada na função printf() deve-se informar qual o formato desejado de saida. Engenharia 2014.2 – Programação de Computadores Prof. Max Arruda Diniz Filho P á g i n a | 17 Estruturas de Decisão Permite desviar o fluxo do processamento em função de um teste lógico feito sobre um condição. 1. Estrutura de Decisão Simples Neste comando um bloco de instruções só será executado se a condição testada for verdadeira. Sua sintaxe é a seguinte: IF (condição) { Bloco de instruções} 2. Estrutura de Decisão Composta Neste comando um bloco de instruções só será executado se a condição testada for verdadeira e se for falsa. Sua sintaxe é a seguinte: IF (condição) { Bloco de instruções1 } Else { Bloco de instruções2 } Exemplo1: Leia o nome de um aluno e as suas duas notas no semestre. Calcule sua média aritmética e mostre o nome do aluno numa linha e sua média na outra. E se essa média for no mínimo 7.0, escreva em outra linha “Aprovado” senão escreva “Reprovado”. //Exemplo Estrutura de decisão composta #include<stdio.h> #include<conio.h> Int main() { float Nota1, Nota2, Media; char Aluno[30]; printf(“Digite o nome do Aluno: “); printf(“\n”); printf(“Digite a primeira nota: “); scanf(“%f”, ¬a1); printf(“Digite a segunda nota: “); scanf(“%f”, ¬a2); Media = (nota1+nota2)/2; Printf(“\n”); Printf(“Aluno: %s \n”, Aluno); Printf(“Media: %3.1f \n”, Media); IF (Media >= 7.0) Printf(“Aprovado”); Else Printf(“Reprovado”); Getch(); Return 0; } Engenharia 2014.2 – Programação de Computadores Prof. Max Arruda Diniz Filho P á g i n a | 18 Exemplo2: Imprimir na tela o nome do mês em função do número digitado pelo usuário. //Exemplo2 Comandos de decisão aninhados (um dentro do outro) #include<stdio.h> #include<conio.h> Int main() { Int num; Printf (“Digite o numero do mês: “); Scanf(“%d”, Num); IF (num ==1) Printf(“Janeiro”); Else IF (num==2) printf (“Fevereiro”); Else IF (num==3) printf (“Março”); Else IF (num==4) printf (“Abril”); Else IF (num==5) printf (“Maio”); Else If (num==6) printf (“Junho”); . . . Else IF (num==12) printf (“Dezembro”); Else printf (“Mês Invalido”); Getch(); Return 0; } Exercício: 1. Ler um número e verificar se é par ou impar. 2. Leia o nome e a idade de uma pessoa, e exiba quantos dias de vida ela possui. Considere sempre anos completos, e que um ano possui 365 dias. 3. Leia o salário de um funcionário e aumente em 15%. Após o aumento, desconte 8% de impostos. Exiba o salário inicial, o salário com o aumento e o salário final. Engenharia 2014.2 – Programação de Computadores Prof. Max Arruda Diniz Filho P á g i n a | 19 Estruturas de Repetição 1. Loop lógico com teste no inicio Sua sintaxe é a seguinte: While (condição) { Instrução1 Instrução2 Instrução3 .... Instruçãon } Exemplo1: Crie um programa que some dez primeiros números pares. //Exemplo1 estrutura de repetição #include <stdio.h> #include <conio.h> Int main() { Int j, par, soma; Par = 2; Soma = 0; J = 1; While (j<=10) { Soma = soma + par; Par = par + 2; J++; } Printf(“A Soma é: %d \n”, soma); Getch(); Return 0; } 2. Loop lógico com teste no final Sua sintaxe é a seguinte: Do { Instrução1 Instrução2 Instrução3 .... InstruçãoN }while (condição); Engenharia 2014.2 – Programação de Computadores Prof. Max Arruda Diniz Filho P á g i n a | 20 3. Estrutura de repetição numérica Neste caso tem-se uma estrutura que define um loop numérico (ou automático) com a seguinte forma geral: For (varCont=inicio; VarCont<=fim; VarCont++) { Instrução1 Instrução2 Instrução3 .... InstruçãoN } Onde: VarCont – Variável de controle do loop Inicio – Valor inicial (inteiro ou real) Fim – Valor Maximo(inteiro ou real) Exemplo2: Crie um programa que leia dois números (N e P) e calcule a potência N elevado a p. //Exemplo2 estrutura de repetição #include <stdio.h> #include <conio.h> Int main() { Int cont, base, p pot; Printf (“Digite o numero[base]: “); Scanf(“1f”, base); Printf(“digite o expoente: “); Scanf(%’f”, p); Pot = 1; For (cont=1; cont<=p; cont++) { Pot = pot * base; } Printf(“\n”); Printf(“%d elevado a %d = %d \n”, base, p, pot); Getch(); Return 0; } Obs.: 1. Comando break (abandona o laço mas não o programa); 2. Comando Exit (abandona o programa); Engenharia 2014.2 – Programação de Computadores Prof. Max Arruda Diniz Filho P á g i n a | 21 Exercicios: 1. Ler 10 números reais e exibir qual foi o maior número. 2. Ler 100 números e exibir a soma dos números impares. 3. Ler 30 números e exibir a soma dos números que são divisíveis por 5. 4. Ler diversos números reais e exibir qual foi a soma. O valor 999 é o código de fim da entrada. 5. Ler diversos números reais e exibir quantos foram digitados. O valor 999 é o código de fim da entrada. 6. Ler 20 números e exibir qual foi o menor e o maior informados. 7. Ler um número inteiro e exibir o fatorial deste número. Onde a Formula é: n! = 1x2x3x...x(N-1)xN 8. Ler 500 valores inteiros e positivo e depois informe: a. Qual o maior valor; b. Qual o menor valor; c. A média dos números lidos.
Compartilhar