A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Mini-Curso Linguagem C

Apresentações semelhantes


Apresentação em tema: "Mini-Curso Linguagem C"— Transcrição da apresentação:

1 Mini-Curso Linguagem C
Semana da Tecnologia Grupo Unis Mini-Curso Linguagem C

2 Semana da Tecnologia Grupo Unis OBJETIVOS
Caracterizar Linguagens de Programação; Caracterizar a linguagem C; Dev-Cpp – Compilador C/C++ Estruturas Básicas em C; Identificadores; Operadores Relacionais, Lógicos e Aritméticos; Comandos de Entrada e Saída; Estruturas Condicionais; Estruturas de Controle/Repetição; Funções.

3 Apostilas Semana da Tecnologia Grupo Unis Algumas Sugestões....
Curso de Linguagem C – UFMG Introdução à Linguagem C – UNICAMP

4 Introdução e Primeiros Passos
Linguagem C Introdução e Primeiros Passos

5 Introdução Por que programar ?
Quando o homem necessita do auxilio do computador para executar algumas tarefas. O Que é um programa ? Conjunto de instruções de uma determinada linguagem através das quais, um computador executa algumas tarefas.

6 Introdução O Que é uma linguagem ?
Uma linguagem consiste de um conjunto de palavras reservadas e regras de sintaxe que possibilita criar programas de computadores. Este conjunto de palavras possui regras de estruturação lógica e sintática própria.

7 Exemplos de Códigos: BASIC
Pseudo-código leia(num) para n de 1 até 10 passo 1 faça tab¬num*n imprima(tab) fim-para; BASIC 10 input num 20 for n=1 to 10 step 1 30 let tab=num*n 40 print chr$(tab) 50 next n

8 Exemplos de Códigos: FORTRAN
Pseudo-código leia(num) para n de 1 até 10 passo 1 faça tab¬num*n imprima(tab) fim-para; FORTRAN read (num) do 10 n=1:10 tab=num*n write(tab) 10 continue

9 Exemplos de Códigos: Assembly
Pseudo-código leia(num) para n de 1 até 10 passo 1 faça tab¬num*n imprima(tab) fim-para; Assembly (Intel 8088) MOV CX,0 IN AX,PORTA MOV DX,AX LABEL: INC CX MOV AX,DX MUL CX OUT AX, PORTA CMP CX,10 JNE LABEL

10 Exemplos de Códigos: C Pseudo-código leia(num) para n de 1 até 10 passo 1 faça tab¬num*n imprima(tab) fim-para; C scanf(&num); for(n=1;n<=10;n++){ tab=num*n; printf(”\n %d”, tab); };

11 Tipos de Linguagens: Baixo Nível
São linguagens com foco na maquina, ou seja, utiliza instruções detalhadas que controla os circuitos internos do computador. Usualmente são genericamente chamadas de linguagens de maquina, Assembly ou de linguagem de montagem.

12 Tipos de Linguagens: Baixo Nível
Vantagens: Maior velocidade de processamento e ocupam menor espaço na memória. Desvantagens: Pouca portabilidade, ou seja, o código é gerado para um tipo de processador não serve para outro.

13 Tipos de Linguagens: Alto Nível
São linguagens voltadas para que haja uma maior interação entre o homem e a máquina. Necessitam de compiladores ou interpretadores para gerar as instruções do microprocessador.

14 Tipos de Linguagens: Alto Nível
Vantagens: São compiladas ou interpretadas, têm maior portabilidade podendo ser executados em várias plataformas com pouquíssimas modificações. Desvantagens: São mais lentas e ocupam mais memória.

15 Compiladores x Interpretadores
A única linguagem que o computador entende é a linguagem de máquina. Programas escritos em um linguagem de alto nível, devem ser traduzidos para a linguagem de máquina. Os Programas que fazem esta tradução, classificam em: - INTERPRETADORES - COMPILADORES

16 Compiladores x Interpretadores
Os INTERPRETADORES, traduzem o código fonte em linguagem de máquina através da interpretação de cada instrução feita a medida que o software é executado. Necessitam de um componente interpretador presente na máquina. Os COMPILADORES, por sua vez, traduzem o código fonte em linguagem de máquina através da geração de um programa .OBJ, que após ser linkeditado, torna-se um arquivo executável. Em C os programas são compilados.

17 Linguagem C Sobre a linguagem C

18 Histórico C foi originalmente desenvolvida por Dennis Ritchie e K. Thompson nos Laboratórios Bell nos anos 70. Derivadas de duas linguagens anteriores chamadas BCPL e B. Inicialmente para máquinas com o sistema operacional UNIX. Tornou-se uma das mais importantes e populares nos últimos dias. Foi projetada para o desenvolvimento de programas estruturados e modulares.

19 Histórico Nos anos seguintes, a popularidade da linguagem C aumentou consideravelmente, aumentando também o surgimento de ferramentas de desenvolvimento. Inicialmente, muitas implementações do C não traduziam fielmente a definição original, o que gerou alguns problemas de incompatibilidade A portabilidade proposta pela definição original ficou bastante comprometida.

20 ANSI O Padrão ANSI Buscando uma padronização na definição da linguagem C, a American National Standard Institute (ANSI), desenvolveu um padrão hoje bastante utilizado no mundo da linguagem C, chamado de C padrão ANSI ou C ANSI. Quase todas as ferramentas de desenvolvimento da linguagem C atuais, seguem este padrão.

21 Características Linguagem de propósito genérico;
Usada para escrever processadores de texto, planilhas, sistemas operacionais, programas de comunicação, programas para automação industrial, SGBDs, navegadores e servidores Web, etc. Possui características de alto e de baixo nível; Excelente performance; Muito popular; Sintaxe de C serve de base para muitas outras linguagens.

22 Características Deu origem a outras linguagens de programação, entre elas C++, Java, C#, PHP, Ruby, Python, etc. Muito usada no desenvolvimento de: Compiladores, interpretadores, editores de texto, banco de dados, computação gráfica, manipulação e processamento de imagens, controle de processos, …

23 Características Portabilidade
Geração de códigos executáveis compactos e rápidos Interação com o sistema operacional Facilidade de uso Linguagem estruturada Confiabilidade Simplicidade Case sensitive Maiúsculas e minúsculas fazem diferença.

24 Estrutura básica de um programa C
Um programa em C consiste de uma ou várias funções, onde uma delas precisa ser denominada “main” e deve existir em algum lugar de seu programa. Esta função marca o início da execução do programa. Outras funções podem ser definidas pelo programador ou preencher a função main, porém em um programa executável em C, a função main deve sempre existir.

25 Estrutura básica de um programa
main(Argumentos) { /* início do corpo da função */ } /* término do corpo da função */ Uma função deve conter : - Uma lista de argumentos entre parênteses. - Um header que consiste do nome da função - Um bloco de instruções delimitado por chaves.

26 Estrutura básica de um programa
O nome da função, os parênteses e as chaves, são os únicos elementos obrigatórios de uma função Os comentários podem aparecer em qualquer lugar de um programa, devendo ser colocados entre os delimitadores /* e */ Letras minúsculas e maiúsculas não são equivalentes em C. Note que cada expressão dentro do bloco deve terminar com um ponto-e-vírgula.

27 Geração de Executável Editor (módulo fonte em C)‏
Pré‐processador (novo fonte expandido)‏ Compilador (arquivo objeto)‏ Lincador (executável)‏

28 Dev C Ambiente de Desenvolvimento Linguagem C

29 Tela Principal

30 Painel Principal

31 Painel Principal Clicando em Arquivo Criar Arquivo Fonte.
Criar Novo Projeto

32 Painel Principal Clicando em Arquivo (Re)Abrir Arquivo Fonte.
(Re)Abrir Novo Projeto

33 Painel Principal Clicando em Arquivo Salvar o conteúdo da aba aberta.
Salvar o conteúdo da aba aberta em outro arquivo. Salvar o projeto em outro arquivo. Salvar todos(as) arquivos(abas) alterados.

34 Painel Principal Clicando em Arquivo Fechar o conteúdo da aba aberta.
Fechar todas as abas abertas. Fechar o projeto.

35 Painel Principal Clicando em Arquivo
Imprime todas as informações do arquivo atual.

36 Painel Principal Clicando em Arquivo
Importa um projeto de outro ambiente de programação. Exporta o projeto para HTML, muito útil para documentação do projeto.

37 Painel Principal Clicando em Arquivo Menus de impressão.

38 Painel Principal Clicando em Arquivo Sair.

39 Painel Principal

40 Painel Principal Clicando em Editar
- Desfazer e Refazer as últimas ações.

41 Painel Principal Clicando em Editar - Recortar, copiar e colar.

42 Painel Principal Clicando em Editar
Inserir cabeçalho e data e hora no código fonte. Bookmarks é uma marca que você faz no código fonte. Essa marca é um atalho para um determinado trecho do código.

43 Painel Principal Clicando em Editar
- Seleciona todo o conteúdo do código fonte aberto.

44 Painel Principal Clicando em Editar
- Comenta e “descomenta” uma determinada parte do código fonte.

45 Painel Principal Clicando em Editar
- “Indenta” e “unidenta” uma determinada parte do código fonte.

46 Painel Principal

47 Painel Principal - Localizar em um fonte especifico ou no projeto todo uma função ou qualquer palavra qualquer.

48 Painel Principal - Configuração das barras de ferramentas.

49 Painel Principal - Adicionar ou remover arquivo ao projeto, usaremos os ícones abaixo para fazer essas ações.

50 Painel Principal - Executa, compila e recompila o projeto atual. Usaremos os ícones em vermelho.

51 Painel Principal - Execução passo a passo. Nesse primeiro momento não vamos utilizar essa ferramenta.

52 Painel Principal - Algumas configurações de projeto. Nesse primeiro momento usaremos as configurações padrões.

53 Painel Principal - Controle da janela do e das abas Dev C.

54 Painel Principal - Ajuda de utilização e sobre o programa Dev C.

55 Meu primeiro programa em C

56 Meu primeiro programa em C

57 Meu primeiro programa em C
- Inclui sa bibliotecas que contêm as funções de entrada, saída e comando “System”.

58 Meu primeiro programa em C
Toda função em C retorna algo e recebe algo como parâmetro. Void significa vazio. Por padrão a função “main” é executada no início do programa;

59 Meu primeiro programa em C
Imprime na tela “Olá Mundo!”.

60 Meu primeiro programa em C
Essa mensagem serve para travar o console do DOS.

61 Meu primeiro programa em C
Retorna 0.

62 Linguagem C Identificadores

63 Regra de identificação
Todas as letras maiúsculas de A a Z e as minúsculas de a a z , os dígitos de 0 a 9 e alguns caracteres especiais, podem ser utilizados na criação de códigos em C. Os nomes de variáveis, funções e matrizes em C, obedecem a regra de que voce pode usar letras e números, porem o primeiro digito deve ser apenas uma LETRA ou o caracter especial undescore (_). Um nome não pode ser uma das palavras reservadas da linguagem C.

64 Regra de identificação
Exemplo de nomes válidos : a y12 soma1 _estoque Exemplos de nomes não válidos : 2th (o primeiro caracter deve ser letra ou _ ) “a” (inicia com um caracter ilegal (“) ) numero-ordem (caracter ilegal (-)) nome completo (espaço em branco)

65 Regra de identificação
Um identificador de nome pode ter mais de 32 caracteres, porem somente os 32 primeiros serão reconhecidos. Algumas implementações do C, reconhece apenas os 8 (oitos) primeiros, assim os nomes : taxa_dia e taxa_diaria, nestes sistemas não tem diferenca, pois o compilador reconhece apenas os oitos primeiros caracteres.

66 Palavras reservadas auto double int struct break else long switch case enum register typedef char extern return union const float short unsigned continue for signed void default goto sizeof volatile do if static while São apenas 32 palavras reservadas que não podem ser utilizadas para outro propósito

67 Tipos de Dados Em C existem 5 tipos válidos: Caracter Char 8 1
Palavra Reservada Quant. Bit Bytes Faixa Caracter Char 8 1 -128 a 127 Inteiro Int 16 2 a 32768 Ponto flutuante Float 32 4 3.4E-38 a 3.4E+38 Pont. Flutuante duplo Double 64 1.7E-308 a 1.7E+308 Sem valor void

68 Tipos de Dados Modificadores de Tipos Com exceção do tipo void, os demais tipos podem ter alguns modificadores. Um modificador é usado para alterar o significado do tipo para adequá-los melhor às necessidades do programador.

69 Tipos de Dados Os modificadores são : signed, unsigned, long e short Exemplo de utilização: Se uma variável é declarada como char ela ocupa 8 bit e tem a faixa de valores de -128 a 127, mais se o modificador unsigned é colocado antes da palavra char, ela continua ocupando 8 bits, mais sua faixa de valores vai de 0 a 255.

70 Tipo de Dados Inteiro Os dados inteiros são caracterizados pelos números positivos ou negativos que não seja fracionário. Em C referenciamos este tipo de dados com os seguintes identificadores : Tipo do Inteiro Qt.Bit Faixa int 16 a 32767 long int 32 a unsigned int De 0 até 65535 signed long int De 0 até

71 Tipo de Dados Reais Os dados reais são caracterizados pelos números positivos, negativos, inteiros e os fracionários. Em C referenciamos este tipo de dados com os seguintes identificadores : Tipo do Inteiro Qt.Bit Faixa float 32 de 3.4e-38 até 3.4e+38 double 64 de 1.7e-308 até 1.7e+308 Long double 128 de -3.4e-4932 até 1.1e+4932

72 Tipo de Dados Caracteres
Os dados caracteres são caracterizados pelas sequencias de letras, números e simbolos especiais delimitados por ( “ ” ) . Em C referenciamos este tipo de dados pelo identificadores : char podendo armazenar de 0 até 255 caracteres

73 Tipo de Dados Lógicos Na linguagem C não existe o tipo de dados booleano , ou seja, não existe o valor lógico “false” ou “true” de forma predefinida. Em C qualquer valor igual a 0 (zero), é considerado como valor lógico falso e qualquer valor diferente de 0 (zero), é considerado como valor lógico verdadeiro.

74 Constantes Constantes são valores que permanecem fixos e na linguagem C temos 4 tipos básicos de constantes: - Inteiras - ponto-flutuante - caracteres - string (cadeia de caracteres)

75 Constantes numéricas As constantes do tipo Inteiras e de ponto-flutuante, representam números. As constantes do tipo Inteiras podem ser escritas em três sistemas de numeração, sendo : decimal (base 10) octal (base 8) hexadecimal (base 16) Uma constante inteira decimal pode ser formada por qualquer combinação dos dígitos de 0 a 9. Se tem mais de dois dígitos, o primeiro não pode ser zero. Ex.:

76 Constantes numéricas Uma constante inteira octal pode ser formada por qualquer combinação dos dígitos de 0 a 7 e o primeiro deve ser zero. Ex.: Uma constante inteira hexadecimal pode ser formada por qualquer combinação dos dígitos de 0 a 9 e de A a F (maiúsculas ou minúsculas). Deve sempre iniciar com 0x ou 0X. Ex.: 0x 0x1 0xABC 0xabc Normalmente a magnitude de uma constante inteira é: Decimal = 32767 Octal = 07777 Hexa = 0x7FFF

77 Constantes numéricas As constantes do tipo ponto-flutuante é um número na base 10 que contem casas decimais e/ou um expoente. Ex.: e2 Observe que o caracter que separa a casa decimal é um ponto e não uma virgula Para representar um número com expoente, trocamos a base 10 pela letra ´e´. Assim para representar 2 x 10², teremos: 200. ou 2e2 ou 2e+2 ou 2E2 ou 2.0e+2

78 Constantes caracteres
As constantes do tipo caracter consiste em um simples caracter colocado entre apóstrofos. Ex.: ´A´ ´x´ ´5´ ´$´ Uma constante de caracter tem valores inteiros correspondentes a um conjunto de caracteres especificos. Normalmente os computadores utilizam o conjunto de caracteres ASCII, onde cada caracter é representado por uma combinação de 7 bits, Representando assim 2e+7 = 128 diferentes caracteres. Desta forma, cada constante de caracter, tem um valor inteiro correspondente.

79 Constantes caracteres
Valor A 65 B 66 C 67 D 68 E 69 F 70 G 71 H 72 I 73 J 74 K 75 L 76 Caracter Valor M 77 N 78 O 79 P 80 Q 81 R 82 S 83 T 84 U 85 V 86 W 87 X 88 Caracter Valor a 97 b 98 c 99 d 100 e 101 f 102 g 103 h 104 i 105 j 106 k 107 l 108 Caracter Valor 48 1 49 2 50 3 51 4 52 5 53 6 54 7 55 8 56 9 57 DEL 127 ESC 27

80 Constantes string As constantes do tipo string consiste em um conjunto de caracteres colocado entre aspas. Ex.: “hugo” “vasco” “São Luis” “Boa Noite !!!” “ ” “2*(I+3)/J” Algumas seqüências de caracteres podem ser incluídas dentro da string para possibilitar a formatação. Ex.: “Esta é a primeira linha\n e esta a segunda linha”

81 Exemplos - Atribuições
#include <stdio.h> #include <stdlib.h> int main(void) { int numero; unsigned int numero2; signed long numero3; numero = 10; // Não gera erro numero = ; // Gera Erro, número fracionário numero2 = -10; //Gera erro, numero negativo numero3 = -10; // Não gera erro numero = ; // Gera erro, inteiro muito grande numero = 'A'; // Retorna o Valor ASCII de A = printf("A = %i\n",numero); numero = "A"; // Gera erro, atribuição de string para inteiro system("PAUSE"); return 0; }

82 Exemplos - Atribuições
#include <stdio.h> #include <stdlib.h> int main(void) { float decimal; decimal = ; // Numero Fracionário printf("%f\n",decimal); decimal = 10e5; // 10*10 ^ 5 = printf("%f\n",decimal); decimal = 0775; // Octal = printf("%f\n",decimal); decimal = 0xFF; // Hexadecimal = printf("%f\n",decimal); system("PAUSE"); return 0; }

83 Exemplos - Atribuições
#include <stdio.h> #include <stdlib.h> #include <string.h> int main(void) { char letra; char texto[11] = “TESTE”; // 10 Caracteres + \0 letra='A‘; letra="A"; // Gera erro, string letra="ALO MUNDO!";// Gera erro, string texto='ALO';// Gera erro, caracter texto="A";// Gera erro, string menor de 10 caracteres texto="ALO MUNDO!"; // Não se pode atribuir string diretamente printf("%s\n",texto); // Mostra o valor de texto strcpy(texto,"ALO MUNDO!"); deve-se usar strcpy da biblioteca string.h printf("%s\n",texto); system("PAUSE"); return 0; }

84 Seqüência de escape Algums caracteres especiais e os não- imprimíveis, são expressos como uma seqüência de escape. Uma sequencia de escape sempres começa co uma barra invertida (“\”) seguida por um caracter. Alguns comandos em C, são representados desta forma. Ex.:

85 Seqüência de escape Caracter Seqüência de escape Valor ASCII
Nova linha (line feed) FD \n 10 Campainha (bell) \a 07 Tabulação horizontal \t 09 Aspas (“) \” 34 Apóstrofo (´) 39 Interrogação (?) \? 63 Barra invertida (\) \\ 92

86 Exemplos - Escape #include <stdio.h> #include <stdlib.h> int main(void) { printf("Pula\nLinha"); printf("\nTabulacao\tTabulacao\tTabulacao"); printf("ASPAS DUPLAS \""); printf("ASPAS SIMPLES \'"); printf("INTERROGACAO \?"); printf("BARRA INVERTIDA \\ \0"); printf("\a"); // Gera Beep system("PAUSE"); return 0; }

87 Variáveis As variáveis são o aspecto fundamental em qualquer linguagem de computador. Uma variável nada mais é que um espaço de memória reservado para armazenar um certo tipo de dado. Uma variável deve receber um nome para servir de referência e a cada instante ela pode conter valores diferente.

88 Declaração de Variáveis
Declarar uma variável significa reservar um espaço em memória para um determinado tipo de dados e indicar que o conteúdo daquele espaço, será referenciado pelo o nome da variável. Uma declaração de variável consiste em um tipo seguido do nome da variável. Exemplo: int num; // uma variável do tipo int char a; // uma variável do tipo char

89 Declaração de variáveis:
Para serem usadas, as variáveis precisam ser declaradas de modo que o compilador possa reservar espaço na memória para o valor a ser armazenado. A forma geral de uma declaração é: tipo lista_de_variaveis; Exemplos: int i; unsigned int a, b, c; double salario;

90 Atribuição de valores às variáveis
Após ser declarada, a variável pode receber valores. O operador de atribuição "=" indica que o valor à direita será atribuído à variável. O valor inicial pode ser atribuído de duas formas: Durante a declaração da variável Ex.: int i=0, j=10; Durante execução de uma a função

91 Tipos de Variáveis O tipo de uma variável informa a quantidade de memória, em bytes, que ela irá ocupar e a forma como o seu conteúdo será armazenado. Os tipos de dados básicos do C visto anteriormente devem ser utilizados para prototipar uma variável conforme a necessidade do programa.

92 Atribuição de valores às variáveis
É possível atribuir a uma variável o valor resultante de uma expressão. Ex.: int a; a = (8+2)/2; A atribuição de uma variável do tipo char, pode ser feita de duas formas: Atribuindo uma constante de caracter: char b = ‘A’; Atribuindo o código ASCII correspondente antecedido pela barra invertida: char b = ‘\65’

93 Analisando um Programa Exemplo
01 #include <stdio.h> 02 #include <stdlib.h> 03 int a=5; // declaração de um inteiro 04 int b=5; // declaração de um inteiro 05 int soma; // declaração de um inteiro 06 int main(void) 07 { 08 soma=a+b; 09 printf("%d",soma); system(“pause”); 11 }

94 Analisando um Programa Exemplo
01 #include <stdio.h> 02 #include <stdlib.h> 03 int a=5, b=5, soma; 04 int main(void) 05 { 06 soma=a+b; 07 printf("%d",soma); 08 system(“pause”); 09 }

95 Atribuição de valores às variáveis
Na linguagem C, não temos o tipo ´string´ pre-definido, o que nos leva a utilizar os vetores de caracter. Desta forma um string em C será atribuída a um vetor do tipo char na sua inicialização. char nome[20] = “Hugo Sampaio”; A Atribuição de uma constante de caracter diretamente a um vetor de caracter já declarado e não inicializado, só pode ser feito com auxilio de outras funções.Ex.: char nome[20]; strcpy(nome,“Hugo Sampaio”);

96 Analisando um Programa Exemplo
#include <stdio.h> #include <conio.h> char nome[20]; int main() { printf("Digite o seu nome : "); scanf("%s", nome); printf("Ola! %s ",nome); getch(); }

97 String Uma string em C é um vetor de caracteres terminado com um caractere nulo. O caracter nulo é um caractere com valor inteiro igual a zero O terminador nulo também pode ser representato em C por '\0'. O comprimento da string deve ser pelo menos 1 caractere maior que o que pretendemos armazenar, pois um caractere é reservado ao terminador nulo. A função gets() lê uma string e insere o terminador nulo na string quando a tecla Enter for pressionada.

98 String Usamos um índice para acessar o caractere desejado dentro da string. str[1] = 'a'; Em C, o índice inicia em zero. char str[10] = "Joao"; A declaração acima inicializa a string str com os caracteres 'J' 'o' 'a' 'o' e '\0'. O código de controle %s na função printf() é usado para exibir uma string.

99 String Podemos ler uma string usando scanf().
Não usamos o e comercial (&) para strings, pois o nome de um vetor já é um endereço de memória do começo do vetor. scanf("%s", texto); Infelizmente scanf() lê somente até o primeiro espaço, ou seja, lê somente uma palavra. Para contornar isso, usamos a função gets que lê até encontrar o caracter de fim de linha (enter). gets(texto);

100 String #include <stdio.h> #include <stdlib.h>
int main(void) { char nome[6]; printf("Digite um nome: "); gets(nome); printf("Ola, %s\n", nome); system("pause"); }

101 String O problema de gets é que ele pode provocar sérios problemas de segurança, pois permite o armazenamento de caracteres além da capacidade da string. Uma solução mais segura é usar a função fgets que limita o tamanho máximo a ser lido. fgets(texto, 50, stdin);

102 String #include <stdio.h> #include <stdlib.h> main() {
char nome1[21], nome2[21]; printf("Digite um nome: "); gets(nome1); fgets(nome2,21,stdin); printf("\nNomes:\n%s - %s\n\n", nome1, nome2); system("pause"); }

103 String #include <stdio.h> #include <stdlib.h> main(){
char nome[10] = "Joao"; printf("String: %s\n", nome); printf("Terceira letra: %c\n", nome[2]); printf("Quarta letra: %c\n", nome[3]); nome[2] = 'h'; nome[3] = 'n'; printf("Agora a terceira letra eh: %c\n", nome[2]); printf("Agora a quarta letra eh: %c\n", nome[3]); printf("String resultante: %s\n", nome); system("pause"); }

104 String #include <stdio.h> #include <stdlib.h> main(){
char nome[10]; printf("\n\nDigite um nome: "); gets(nome); printf("\nString: %s\n", nome); printf("Terceira letra: %c\n", nome[2]); printf("Quarta letra: %c\n", nome[3]); printf("o tamanho da string eh: %d\n", strlen(nome)); printf("o ultimo caractere eh: %c\n", nome[strlen(nome)-1]); nome[2] = 'h'; nome[3] = 'n'; printf("Agora a terceira letra eh: %c\n", nome[2]); printf("Agora a quarta letra eh: %c\n", nome[3]); printf("String resultante: %s\n", nome); system("pause"); }

105 String – funções strlen(texto) — Retorna o tamanho da string texto em número de caracteres. strcpy(destino, fonte) — Copia a string fonte para a string destino. strcat(destino, fonte) — Concatena a string fonte no fim da string destino. strcmp(str1, str2) — Compara duas cadeias e caracteres e retorna um valor = 0 - se str1 e str2 forem iguais < 0 - se str1 for menor que str2 > 0 - se str1 for maior que str2

106 String – funções #include <stdio.h> #include <string.h>
main() { char nome1[] = "Regis"; printf("%s\n\n",nome1); char nome2[100]; strcpy(nome2, "Isaac"); printf("%s\n\n",nome2); strcat(nome2," Newton"); strcpy(nome2,"Maria"); system("pause"); }

107 Conversão de tipos Algumas vezes o compilador faz uma conversão automática quando vai atribuir um valor de uma expressão a uma variável. Ex.: sendo: main() { float f1,f = 21.45; char c1,c = 'A'; int i1,i = 10; i1 = f; // i1 receberá o valor 21 printf("%d\n",i1); f1 = i; // f1 receberá o valor 10.00 printf("%f\n",f1); c1 = i; // c1 receberá o valor 10 printf("%d\n",c1); i1 = c; // i1 receberá o valor 65 getch(); }

108 Conversão de tipos O Programador pode “forçar” a conversão. Ex.: sendo: main() { int a = 65; float x = 2.1, y = 8.95, z; char c; c = (char)a; printf("Valor de c ( %c ) --> %d\n", c,c); c = (char)(a + (int)x); z = (float)((int)x * (int)y); printf("Valor de z ( %f ) --> %d\n", z,z); z = (float)((x * y)); getch(); }

109 Exemplo 2 #include <stdio.h> main() { int Dias; /*
* Declaracao de * Variaveis */ float Anos; printf("Entre com o numero de dias: "); /* Entrada de Dados */ scanf("%d", &Dias); Anos=Dias/365.25; // Conversao Dias->Anos printf("\n\n%d dias equivalem a %f anos.\n", Dias, Anos); system("pause"); }

110 Exemplo 3 #include <stdio.h> main() { int x;
printf("Digite um numero"); scanf("%d",&x); printf("%d\n",x); system("pause"); }

111 Exemplo 4 #include <stdio.h> main() { int x;
printf("Digite um numero"); scanf("%d",&x); printf("O dobro e %d\n", 2 * x); system("pause"); }

112 Entrada e Saída Para que exemplos possam ser construídos, necessitamos conhecer um pouco sobre entrada e saída de dados. Um programa que não fornece resultados nem pede valores para operar não deve ter grande utilidade. A entrada de dados será feita pelo teclado e a saída poderá ser vista na tela do computador. Com isto, é possível resolver problemas bastante interessantes.

113 Entradas e Saídas Caracteres Tipo char. Ocupa 8 bits.
#include <stdio.h> main() { char Ch; Ch='D'; printf("%c", Ch); printf("%d", Ch); // Imprime como inteiro system("pause"); }

114 Entradas e Saídas Para obter o caractere pressionado:
getche() Imprime o caractere na tela antes de retorná-lo. getch() Apenas retorna o caratere pressionado sem imprimi-lo na tela. Essas funçoes são encontradas no arquivo conio.h que somente está disponível para Windows. Não é padrão ANSI.

115 getch()‏ #include <stdio.h> #include <conio.h> main() {
printf("Tecle algo..."); char ch=getch(); printf("Voce pressionou a tecla %c\n", ch); system("pause"); }

116 Equivalente ANSI Diferenças:
Requer o pressionamento da tecla <ENTER> após a entrada de teclado. #include <stdio.h> main() { char ch; printf("Tecle algo..."); scanf("%c", &ch); printf("Voce pressionou a tecla %c\n", ch); system("pause"); }

117 printf() e scanf()‏ Forma geral da função printf():
printf (string_de_controle,lista_de_argumentos); Forma geral da função scanf(): scanf (string_de_controle,lista-de-argumentos);

118 Biblioteca Padrão Para termos acesso à biblioteca que contém as funções, macros e variáveis que facilitam a entrada e saída de dados, o programa deve conter a declaração #include <stdio.h> no início do programa. Normalmente os programadores usam os símbolos menor (<) e maior (>), mas é possível a alternativa #include "stdio.h"

119 Saída - A Função printf A função printf permite que dados sejam escritos na tela do computador. O formato é de uso simples e bastante flexível, permitindo que os dados possam ser apresentados de diversas maneiras. Syntax: printf(controle, arg1, arg2, ...); Onde os argumentos são impressos de acordo com a maneira indicada pelo controle. Um exemplo simples pode tornar a explicação mais clara.

120 Saída - A Função printf ARGUMENTO CONTROLE
O programa abaixo imprime o valor da variável ano. #include <stdio.h> #include <conio.h> // Biblioteca de entrada e saída main() { int ano = 2011; // Declarei ano como inteiro e ja defini seu valor. printf(“ Estamos no ano %d ", ano ); getch(); } Na tela do computador será impresso: Estamos no ano 2011; ARGUMENTO CONTROLE

121 Saída - A Função printf O controle, que deve aparecer sempre entre " ", define como serão impressos os argumentos. Neste controle podem existir dois tipos de informações: caracteres comuns e códigos de formatação. Os caracteres comuns, como no exemplo (Estamos no ano) são escritos na tela sem nenhuma modificação. Os códigos de formatação, aparecem precedidos por um % e são aplicados aos argumentos na ordem em que aparecem.

122 Códigos de Formatação Deve haver um código de formatação para cada argumento. O código %d indica que o valor armazenado em ano deve ser impresso na notação inteiro decimal.

123 Formatação Numérica %<numero>d
Escreve um inteiro na tela, preenchendo com espaços à esquerda para que ele ocupe pelo menos <numero> casas na tela. printf("%4d", 10); Exibe: <espaco><espaco>10

124 Formatação Numérica %0<numero>d
Escreve um inteiro na tela, preenchendo com zeros à esquerda para que ele ocupe pelo menos <numero> casas na tela. printf("%04d", 10); Exibe: 0010

125 Formatação Numérica %<numero1>.0<numero2>d
Escreve um inteiro na tela, preenchendo com espaços à esquerda para que ele ocupe pelo menos <numero1> casas na tela e com zeros para que ele possua pelo menos comprimento <numero2>. printf("%6.04d", 10); Exibe: <espaço><espaço>0010

126 Formatação Numérica %f
Escreve um ponto flutuante na tela, sem formatação. printf("%f", 10.0); Exibe:

127 Formatação Numérica %e
Escreve um ponto flutuante na tela em notação científica. printf("%e", ); Exibe: e+01

128 Formatação Numérica %<tamanho>.<decimais>f
Escreve um ponto flutuante na tela, com tamanho <tamanho> e <decimais> casas decimais. O ponto também conta no tamanho. printf("%6.2f", 10.0); Exibe: <espaço>10.00

129 Saída justificada Um sinal de menos para especificar que o argumento deve ser tabulado a esquerda no seu campo de impressão pode ser acrescentado. Exemplo a seguir ilustra os dois tipos de justificação. main() { int ano = 2007; printf("Justificado a esquerda Ano = %-8d\n", ano); printf("Justificado a direita Ano = %8d\n", ano); getch(); } Observe

130 Especificador de Precisão
O especificador de precisão consiste de um ponto que separa o número que define o tamanho do campo do número que especifica o máximo número de dígitos a serem impressos a direita do ponto em um número do tipo float ou double #include <stdio.h> #include <conio.h> main() { float r = 1.0/3.0; printf("O resultado e = %9.5f\n", r); getch(); } Observe

131 Entrada - A Função scanf
A função scanf pode ser utilizada para entrada de dados a partir do teclado. Esta função é equivalente à função printf e seu formato é: Syntax: scanf(controle, arg1, arg2, ...); Uma diferença fundamental existe entre as duas funções é que os argumentos da função scanf são os endereços das variáveis que irão receber os valores lidos e não, como em printf, as próprias variáveis.

132 Entrada - A Função scanf
A indicação que estamos referenciando um endereço e não a variável se faz pelo operador &. Por exemplo, o comando scanf("%d %d", &a, &b) espera que dois valores inteiros sejam digitados no teclado. O primeiro é armazenado na variável a e o segundo em b.

133 Entrada - A Função scanf
Cada variável a ser lida, deverá ser precedida pelo caracter & Para seqüência de caracteres (%s), o caracter & não deverá ser usado.

134 Entrada - A Função scanf
int main() { int numero; char string[30]; printf("Digite uma string: "); scanf("%s",string); printf("Digite um numero: "); scanf("%d",&numero); printf("A string digitada foi: \t%s\n“,string); printf("O numero digitado foi: \t%d\n“, numero); system("system"); }

135 Lendo e Imprimindo Caracteres
Para ler e escrever caracteres do teclado as funções de entrada e saída mais simples são getchar e putchar que estão na biblioteca stdio.h #include <stdio.h> #include <conio.h> main() { char c; int i; printf("Entre com um caracter entre 0 e 9.\n"); c = getchar(); printf("O caracter lido foi o "); putchar(c); getch(); }

136 Exercícios Escreva um programa que declare variáveis do tipo inteiro, char e float, inicializando-as, e imprima os seus valores.

137 Solução #include <stdio.h> main() { int i; char c; float f;
c = ‘A’; f = ; printf(“\n Inteiro: %i“, i); printf(“\n Char: %c“, c); printf(“\n Real: %f“, f); system("pause"); }

138 Exercícios Faça um programa capaz de ler um valor real e escreve-lo com apenas uma casa decimal.

139 Solução #include <stdio.h> main() { float f;
printf(“\nDigite um número: “); scanf(“%f“, &f); printf(“\n Real: %.1f“, f); system("pause"); }

140 Lendo e Imprimindo Caracteres
Na definição original da função getchar a entrada é armazenada até que a tecla ENTER seja apertada. Com isto caracteres ficam em um buffer esperando para serem tratados. Em ambientes onde é necessário tratar o caracter imediatamente esta função pode não ser útil. Muitos compiladores incluem funções para permitir entrada interativa de dados. As duas funções mais comuns são getch e getche e seus protótipos podem ser encontrados na biblioteca <conio.h>.

141 Operadores Atribuição (=)‏ Aritméticos * e / % + e -

142 Operadores Relacionais
== igual != diferente de > maior que < menor que >= maior ou igual <= menor ou igual

143 Operadores Lógicos && (e)‏ || (ou)‏ ! (não)‏

144 Operador Ternário Operador que usa três argumentos:
expr ? valor1 : valor2 Se expr avaliar for verdadeira, valor1 será o resultado da expressão. Se expr for falsa, valor2 será o resultado da expressão. int x, y, maior; ... maior = x > y ? x : y;

145 Operador Ternário #include <stdio.h> main() { int n1, n2;
printf("Digite um numero: "); scanf("%d", &n1); printf("Digite outro numero: "); scanf("%d", &n2); printf("O maior e: %d\n", n1 > n2 ? n1 : n2); system("pause"); }

146 Expressões O resultado de uma expressão lógica ou relacional é:
0 (falso)‏ 1 ou qualquer outro número diferente de zero (verdadeiro)‏ Para facilitar: NÃ0 S1M

147 Operadores de incremento e decremento
Incrementa o valor da variável a em uma unidade. A posição do operador de incremento e decremento determina a ordem de execução do que está em seu derredor.

148 Operadores de incremento e decremento
#include <stdio.h> main() { int a = 10; printf("%d", ++a); system("pause"); } #include <stdio.h> main() { int a = 10; printf("%d", a++); system("pause"); }

149 Atribuições Simplificadas
Comando Exemplo Corresponde a: += a += 2 a = a + 2; -= a -= 2 a = a - 2; ∗= a *= 2; a = a * 2; /= a /= 2; a = a / 2; %= a %= 2; a = a % 2;

150 Estruturas de Controle Desvio / Decisão
Linguagem C Estruturas de Controle Desvio / Decisão

151 if ... else ... if (expressão) { comandos; if (expressão) { } else {
#include <stdio.h> main() { int idade = 15; if (idade < 18) { printf("Invalida\n"); } system("pause"); #include <stdio.h> main() { int idade = 21; if (idade < 18) { printf("Invalida\n"); } else { printf("OK\n"); } system("pause");

152 Par ou ímpar #include <stdio.h> main() { int a;
printf("Digite um numero inteiro: "); scanf("%d", &a); if (a % 2 == 0) { printf("O valor eh par.\n"); } else { printf("O valor eh impar.\n"); } system("pause");

153 Exercício Escreva um programa em linguagem C para receber um número e dizer se ele é positivo, negativo ou zero.

154 Positivo, Negativo ou Zero
#include <stdio.h> main() { int n; printf("Digite um numero: "); scanf("%d", &n); if (n > 0) { printf("positivo"); } else if (n < 0) { printf("negativo"); } else { printf("zero"); } printf("\n"); system("pause");

155 Decisão Múltipla O comando switch simplifica uma expressão onde uma variável inteira ou caracter deve fazer diferentes operações, dependendo do seu valor. switch (variavel) { case valor: comandos; break; default: }

156 Decisão Múltipla #include <stdio.h> main() { int num;
printf("Digite um numero inteiro: "); scanf("%d", &num); switch (num) { case 1: printf("um"); break; case 2: printf("dois"); break; case 3: printf("tres"); break; case 4: printf("quatro"); break; case 5: printf("cinco"); break; default: printf("nao conheco"); } printf("\n"); system("pause");

157 Exercício Dada uma letra, escreva na tela se essa letra é ou não é uma vogal. Dica: a função toupper(c) converte um char para caixa alta e a função tolower(c) converte um char para caixa baixa.

158 Exercício #include <stdio.h> main() { char letra;
printf("Digite uma letra: "); scanf("%c", &letra); switch (tolower(letra)) { case 'a': case 'e': case 'i': case 'o': case 'u': printf("A letra %c e uma vogal", letra); break; default: printf("A letra %c nao e uma vogal", letra); } printf("\n"); system("pause");

159 Estruturas de Controle Repetição
Linguagem C Estruturas de Controle Repetição

160 Laços condicionais Laço condicional com teste no início
while (expressão) { comandos; } Laço condicional com teste no início do { comandos; } while (expressão); Laço condicional com teste no final

161 Laço condicional ... int i = 0; while (i < 10) { printf("olá!");
i = i + 1; }

162 Laços usando for Em C, a declaração da variável deve ser realizada antes do for. for (inicializacao; condicao; incremento) { codigo; } int i; for (i = 0; i < 10; i++) { printf("olá!"); }

163 I’ll not throw paper airplanes in class

164 I’ll not throw paper airplanes in class
#include <stdio.h> int main(void) { int count; for(count=1;count<=500; count++) printf("I’ll not throw paper airplanes in class!"); system(”pause”); return(0); }

165 Exemplo – Linha de * #include <stdio.h> int main() { int i, n;
printf("Digite um numero: "); scanf("%d", &n); for (i=0; i < n; i++) { printf("*"); } printf("\n"); system(”pause”) ; return(0);

166 Exemplo – Quadrado de * #include <stdio.h> int main() {
int coluna, linha, n; printf("Digite um numero: "); scanf("%d", &n); for (linha=1; linha <= n; linha++) { for (coluna=1; coluna <= n; coluna++) { printf("* "); } printf("\n"); system(”pause”) ; return(0);

167 Controlando loops break e continue main() { int i;
for (i = 0; i < 100; i++) { if(i > 50 && i < 60) { continue; } printf("%d\n", i); system(”pause”)~;

168 Linguagem C Funções

169 Introdução às funções Uma função é um bloco de código de programa que pode ser usado diversas vezes em sua execução. O uso de funções permite que o programa fique mais legível, mais bem estruturado. Um programa em C consiste, no fundo, de várias funções colocadas juntas.

170 Introdução às funções Argumentos
Argumentos são as entradas que a função recebe. É através dos argumentos que passamos parâmetros para a função. As funções printf() e scanf() são funções que recebem argumentos.

171 Declaração tipo_de_retorno nome_da_função (declaração_de_parâmetros) { corpo_da_função }

172 Exemplo – media de 2 números
#include<stdio.h> float media2(float a, float b) { return ((a + b) / 2.0); } int main() { float num_1, num_2, media; puts("Digite dois numeros:"); scanf("%f %f", &num_1, &num_2); media = media2(num_1, num_2); printf("\nA media destes numeros eh %f", media); system(”pause”);

173 Exemplo - soma #include <stdio.h> float soma(float a, float b) {
return a + b; } int main() { float n1, n2; printf("Digite um numero: "); scanf("%f", &n1); printf("Digite outro numero: "); scanf("%f", &n2); printf("Soma: %f\n", soma(n1, n2)); system(”pause”); return 0;

174 Procedimentos Em C não há procedimentos. O mais próximo de procedimentos em C são as funções que nada retornam, ou seja, cujo retorno é void.

175 Exemplo - repeticao #include <stdio.h>
void repete(char texto[], int n) { int i; for (i=0; i < n; i++) { printf("%s", texto); } int main() { char palavra[20]; printf("Digite uma palavra: "); fgets(palavra, 20, stdin); repete(palavra, 10); system(”pause”); return 0;

176 Exemplo de Função #include <stdio.h>
/* Funcao simples: so imprime Ola! */ mensagem() { printf("Ola! "); } main() { mensagem(); printf("Eu estou vivo!\n"); system("pause");

177 Exemplo de função #include <stdio.h>
/* Calcula o quadrado de x */ int square(int x) { return x * x; } main() { int num; printf("Entre com um numero: "); scanf("%d", &num); printf("\n\nO quadrado e %d\n", square(num)); system("pause");

178 Exemplo de função #include <stdio.h> int prod(int x, int y) {
return (x*y); } main() { int saida; saida=prod(12, 7); printf("A saida e: %d\n", saida); system("pause");

179 Exemplo de função #include <stdio.h>
float prod(float x, float y) { return (x*y); } main() { float saida; saida=prod(45.2, ); printf("A saida e: %f\n", saida); system("pause");

180 Exercício Escreva uma função para receber dois números e, depois, exibir a sua soma.

181 Solução #include <stdio.h> main() { float n1, n2;
printf("Digite um numero: "); scanf("%f", &n1); printf("Digite outro numero: "); scanf("%f", &n2); printf("A soma e: %f\n", (n1 + n2)); system("pause"); }

182 Exercícios Sabendo que os argumentos da função "printf" podem ser expressões (a+b, a/b, a*b...), e não somente argumentos, faça um programa capaz de ler um valor inteiro X e imprimir na tela o cubo, o quadrado e a metade de X. Ex.: para X= 6, imprimir Cubo = 18; Quadrado = 36; Metade = 3.

183 Solução #include <stdio.h> main() { float n1;
printf("Digite um numero: "); scanf("%f", &n1); printf(“\n Cubo: %f“, n1 * n1 * n1); printf(“\n Quadrado: %f“, n1 * n1); printf(“\n Metade: %f“, n1 / 1); system("pause"); }


Carregar ppt "Mini-Curso Linguagem C"

Apresentações semelhantes


Anúncios Google