Introdução a Linguagem de Programação C Baseada na apresentação de Daniela G. Trevisan - [email protected] Breve Histórico Em 1973 Dennis Ritchie reescreveu o sistema operacional UNIX em uma linguagem de alto nível (Ling. C). Surgem diversas implementações utilizando C, porém os códigos gerados eram incompatíveis. ANSI (American National Standard Institute), em 1983 padronizou a ling. C. Introdução Linguagem C C comparado a outras linguagens Devemos entender Nível Alto como sendo a capacidade da linguagem em compreender instruções escritas em “dialetos” próximos do inglês (Ada e Pascal, por exemplo) e Nível Baixo para aquelas linguagens que se aproximam do assembly, que é a linguagem própria da máquina, compostas por instruções binárias e outras incompreensíveis para o ser humano não treinado para este propósito. Infelizmente, quanto mais clara uma linguagem for para o humano (simplicidade >) mais obscura o será para a máquina (velocidade <). Introdução Linguagem C C comparado a outras linguagens Nível Baixo Nível Alto Nível Médio Clareza Velocidade Assembler C Basic Pascal COBOL Introdução Linguagem C Ada Modula -2 Aplicações escritas em C Sistema Operacional: UNIX Planilhas: 1,2,3 e Excel Banco de Dados: dBase III, IV e Access ( gerenciador de base de dados). Aplicações Gráficas: Efeitos Especiais de filmes como Star Trek e Star War. Introdução Linguagem C Características da Linguagem C Portabilidade entre máquinas e sistemas operacionais. Alia características de linguagens de alto e baixo nível (liberdade ao programador). Programas Estruturados. Total interação com o Sistema Operacional. Código compacto e rápido, quando comparado ao código de outras linguagem de complexidade análoga. Introdução Linguagem C Características da Linguagem C C é uma linguagem compilada: lê todo o código fonte e gera o código objeto (ling. de máquina) uma única vez. Linguagens Interpretadas: lê o código fonte, traduz e executa cada vez que o programa for executado. Introdução Linguagem C Detalhes Importantes Sempre que o código fonte for alterado ele deve ser novamente compilado. C é “case senitive” Deve-se listar antecipadamente todas a as variáveis utilizadas no programa. Introdução Linguagem C Palavras reservadas São palavras que têm um significado especial para a linguagem. auto, break, case, if, for, while, begin, end, continue, return, const,.... C entende tais palavras apenas em letras minúsculas Introdução Linguagem C Bibliotecas Conjunto de funções para realizar tarefas específicas. Biblioteca padrão C - ANSI - funções básicas. As primeiras linhas do programa indicam as bibliotecas utilizadas #include “minha_biblioteca.h” ou #include <minha_biblioteca.h> Introdução Linguagem C Estrutura de um programa C /* Primeiro Programa em C */ #include <stdio.h> main() { printf(“Meu primeiro programa em C\n”); } Introdução Linguagem C Vamos utilizar o TC – ambiente DOS Introdução Linguagem C Pressionar <ALT+ letra do menu> Introdução Linguagem C No DOS o mouse não funciona Introdução Linguagem C <ALT + F5> permuta telas Introdução Linguagem C Estrutura de um programa C /* Primeiro Programa em C */ comentários #include <stdio.h> /*biblioteca de E/S */ main() /*função principal – inicio do programa*/ { /*marca início da função*/ printf(“Meu primeiro programa em C\n”); /*função para escrever na tela*/ } /*marca fim da função*/ Introdução Linguagem C Compilando e Executando Para compilar: (verifica a sintaxe) <ALT + C> Compile to OBJ <ENTER> Para compilar e gerar executável: <ALT + C> Compile to OBJ <ENTER> Executando: <ALT + R> Run ou Trace over(F7) <ENTER> OBS: Se o nome do executável não for informado o default é NONAME.C, e ficará salvo em OPTIONS Output_directory (default) Introdução Linguagem C Variável Variável: “objeto” que pode assumir diversos valores; espaço de memória de um certo tipo de dado associado a um nome para referenciar seu conteúdo Main ( ) { int idade; idade = 30; printf (“ A idade é : %d”, idade); } Introdução Linguagem C Nomes de Variáveis quantos caracteres quiser (32); comece com letras ou sublinhado: Seguidos de letras, números ou sublinhados C é sensível ao caso: peso <> Peso <> pEso não podemos definir um identificador com o mesmo nome que uma palavra chave auto static extern int long if while do ...... Introdução Linguagem C Declaração de Variáveis Instrução para reservar uma quantidade de memória para um certo tipo de dado, indicando o nome pelo qual a área será referenciada >> tipo nome-da-variável; ou >> tipo nome1, nome2,...,nomen EX: char nome; int idade, num; Introdução Linguagem C Tipos Básicos de Dados determinar um conjunto de valores e as possíveis operações realizadas sobre os mesmos ; informa a quantidade de memória (bytes); tipo char int float double bytes 1 2 4 8 escala -128 a 127 -32.768 a 32.767 3.4e-38 a 3.4e+38 1.7e-308 a 1.7e+308 Introdução Linguagem C Diferentes tipos de inteiros Long ou Long int Unsigned Char Unsigned int (4 bytes) (0 a 255) (0 a 65.535) obs: int tem sempre o tamanho da palavra da máquina Introdução Linguagem C Programa Exemplo – Tipos de Dados e Variáveis #include <stdio.h> main( ) { int soma=10; float money=2.21; char letra= ´A´; double pi=2.01E6; printf (“valor da soma = %d\n”, soma); printf (“Valor de Money = %f\n”, money); printf(“Valor de Letra = %c\n”, letra); printf(“Valor de Pi = %e\n”, pi); } Introdução Linguagem C Comandos básicos Entrada de Dados Processamento de dados Instruções de E/S Introdução Linguagem C Saída de Dados Intruções de E/S – Scanf ( ) Leitura de dados tipados via teclado Scanf (“string de controle”, lista de argumentos); Exemplo: scanf(“%d”,&idade); OBS: Para seqüência de caracteres (%s), o caracter & não deverá ser usado. Introdução Linguagem C Comandos de E/S – printf ( ) Apresentação de dados no monitor printf(“string de controle”, lista de argumentos); Exemplo: printf (“Digite a sua idade:\n”); scanf (“%d”, &idade); printf(“Sua idade é: %d”, idade); Introdução Linguagem C String de controle %c caracter %d inteiro %e número ou notação científica %f ponto flutuante %o octal %x hexadecimal %s string (cadeia de caracteres) %lf double Introdução Linguagem C Exemplo strings de controle #include <stdio.h> main ( ) { char a ; printf ( “digite um caracter” ); scanf ( “ % c”, &a ); printf (“ \n %c = %d em decimal”, a, a); printf (“%o em octal, %x em hexadecimal”, a, a); } Digitando m: m = 109 em decimal, 155 em octal, 6d em hexadecimal Introdução Linguagem C Operador de Endereço & um endereço de memória é o nome que o computador usa para identificar uma variável toda variável ocupa uma área de memória e seu endereço é o primeiro byte por ela ocupado Ex : inteiro 2 bytes float 4 bytes char 1 byte Introdução Linguagem C Operador de Endereço & Quando usamos & precedendo uma variável estamos falando do endereço desta variável na memória Ex: Saída: valor = 2, endereço = 1230 Main ( ) Varia conforme memória da máquina { int num; num = 2; printf (“valor = %d, endereço = %Iu”, num,&num); } Introdução Linguagem C Caracteres Especiais \n \r \t \b \” \\ nova linha enter tabulação (tab) retrocesso aspas barra Introdução Linguagem C Formatando as saídas - printf é possível estabelecer o tamanho mínimo para a impressão de um campo #include <stdio.h> main ( ) { printf (“os alunos são %2d \n”, 350); printf (“os alunos são %4d \n”, 350); printf (“os alunos são %5d \n”, 350); } Saída: os alunos são 350 os alunos são 350 os alunos são 350 Introdução Linguagem C Formatando as saídas - printf #include <stdio.h> main ( ) { printf (“ %3.1f \n”, 3456.78); printf (“ %10.3f \n”, 3456.78); } Saída: 3456.8 3456.780 Introdução Linguagem C Programando – Exercício 1 Faça um programa para ler e escrever na tela o seu nome e a sua idade. #include <stdio.h> main( ) { int idade; char nome[30]; printf (“Digite o seu nome:\n”); scanf(“%s”, nome); printf (“Digite a sua idade:\n”); scanf (“%d”, &idade); printf(“A idade do(a) %s é %d”,nome, idade); } Introdução Linguagem C Programando – Exercício Faça um programa para ler e escrever na tela os seguintes dados: Nome Endereço Telefone Cidade Cep Introdução Linguagem C Operadores Aritméticos Operador + * / % -++ Ação Adição Multiplicação Divisão Resto da divisão inteira Subtração (unário) Decremento Incremento Introdução Linguagem C Operadores Relacionais e Lógicos Operador Ação > Maior que >= Maior ou igual que < Menor que <= Menor ou igual que == Igual a != Diferente de && Condição “E” || Condição “OU” ! Não Introdução Linguagem C Operadores - Observação Em C o resultado da comparação será ZERO se resultar em FALSO e DIFERENTE DE ZERO no caso de obtermos VERDADEIRO num teste qualquer. Introdução Linguagem C Operadores - Exemplo #include <stdio.h> main ( ) Saída: Verd.=1 Falso = 0 { int verdadeiro, falso; verdadeiro = (15 < 20); falso = (15 == 20); printf(“Verd.= %d,Falso= %d”, verdadeiro, falso); } Introdução Linguagem C Comparações e Testes Observemos antes de mais nada que ++x é diferente de x++! Se x = 10; y = ++x; /* x=x+1; então x = 11 e y = 11 y=x; */ porém Se x = 10; y = x++; /* y=x; x=x+1 */ então x = 11 e y = 10 Introdução Linguagem C Programa Exemplo – Pre/Pos Incremento #include<stdio.h> main() { int cont = 0, loop; loop=++cont; printf(“LOOP=%d, CoNt=%d\n”, loop, cont); loop=cont++; printf(“Loop=%d, Cont=%d\n”, loop, cont); } Quais são as saídas deste programa ? Introdução Linguagem C Comparações e Testes Se x = 1; y = 2; printf(“%d == %d e’ %d\n”, x, y, x==y ) Qual seria a saída deste comando? resultaria em 1 == 2 0 (pois a expressão é falsa) Introdução Linguagem C Conversões de Tipos Quando forem misturadas variáveis de diferentes tipos, o compilador C converterá os operandos para o tipo de operando maior, de acordo com as regras descritas a seguir: 1-Todo char e short int é convertido para int. Todo float é convertido para double. 2-Para os demais pares de operandos valem as seguintes regras em seqüência: 2.1- Se um operando for long double, o outro também o será. 2.2- Se um operando for double, o outro também o será. 2.3- Se um operando for long, o outro também o será. 2.4- Se um operando for unsigned, o outro também o será. Introdução Linguagem C Conversões de Tipos - NOTA Nota: Devemos observar que o compilador C é bastante flexível e pouco vigilante, comportando-se de maneira muito diferente de um compilador Clipper ou Pascal, sempre vigilantes com relação aos tipos das variáveis. De fato aqueles compiladores podem gerar executáveis misturando tipos, porém a ocorrência de erros de execução é quase inevitável. Ao contrário destes compiladores, os compiladores C “ajeitam” as coisas para o programa funcionar da “melhor maneira possível”, o que não significa em hipótese alguma que os resultados serão os esperados por programadores “relapsos”. Assim esta boa característica dos compiladores C, pode transformar-se numa autêntica “bomba relógio” para programas não muito bem elaborados. Introdução Linguagem C Variável String → Só Dicas matriz do tipo char terminada pelo caractere null ‘\0’ cada caractere de um string pode ser acessado individualmente vetor de tamanho n string de tamanho ( n-1 ) Ex: char string[10] = “exemplo” ; char string[10] = { “exemplo” }; char string[10] = { ‘e’, ‘x’, ‘e’, ‘m’, ‘p’, ‘l’, ‘o’, ‘\0’ }; printf ( “%s”, string ); printf ( “%c”, string [ 0 ] ); Introdução Linguagem C Lendo Strings scanf : lê o string até que um branco seja encontrado Ex: main ( ) { char nome[40]; Saída: Digite seu nome: Jose Maria Bom dia Jose printf ( “Digite seu nome: “ ); scanf ( “%s”, &nome[ 0 ] ); //scanf ( “%s”, nome ); printf ( “Bom dia %c”, nome[0] ); } Introdução Linguagem C Lendo Strings MUDAR Gets lê caracteres até encontrar ‘\n’ substitui ‘\n’ por ‘\0’ Ex: main ( ) { char nome[40]; Saída: Digite seu nome: Jose Maria Bom dia Jose Maria printf ( “Digite seu nome: “ ); gets ( &nome[ 0 ] ); // ou gets(nome); printf ( “Bom dia %s”, nome ); } Introdução Linguagem C