Prévia do material em texto
Código de Nobreza II Programação C Professora M@rcia Mooc de Lovelace: Curso Híbrido de Programação C Professora Márcia Gonçalves de Oliveira Aula 6 – Linguagem C Objetivos ● Introduzir a Linguagem C e o seus ambientes de trabalho ● Ensinar a escrever em C as principais instruções e estruturas ● Explicar dois exercícios resolvidos em C Introdução à Linguagem C Ambientes de Trabalho Para escrita e execução de programas em C neste curso utilizaremos as seguintes ferramentas: 1. Plataforma online https://www.jdoodle.com/c-online-compiler/. 2. Dev C++ (Disponível em: https://baixar.freedownloadmanager.org/Windows-PC/Dev-C/GRATUITO-5.11.html). A Figura 1 é um exemplo de programa C, escrito na plataforma Jdoole. Nessa plataforma, as entradas da instrução de recebimento de entradas scanf não são via teclado, mas sim via STDIN, que é um buffer de entrada de dadas, conforme indicado na Figura 1. https://www.jdoodle.com/c-online-compiler/ https://baixar.freedownloadmanager.org/Windows-PC/Dev-C/GRATUITO-5.11.html � Moodle de Lovelace: Curso Híbrido de Pensamento Computacional Figura 1. Escrevendo e testando programas em C no Jdoodle Escreva em C A linguagem C foi criada por Dennis Ritchie em 1972 nos EUA a partir da linguagem B em um DEC PDP-11 com sistema operacional UNIX. C é uma linguagem de programação compilada, estruturada, imperativa, padronizada pela ISO. As principais características da linguagem C são as seguintes: • A linguagem C permite a manipulação de dados nas suas formas mais básicas: bits, bytes e endereços de memória. • É portável, isto é, pode ser escrita em diferentes plataformas • É flexível: poucas palavras reservadas (32, no padrão ANSI C) • Não é uma linguagem rica em tipos de dados. • C é uma linguagem estruturada. Por isso tem como vantagens: facilidade e rapidez de testes. � Página 2 � Currículo: Mooc de Lovelace: Curso Híbrido de Pensamento Computacional Estrutura básica de um programa C #include /* Biblioteca com funções de entrada e de saída como scanf e printf*/ int main() /* Função ou programa principal */ { /* Declaração de variáveis */ /* */ return 0; /* Valor retornado sinalizado execução finalizada */ } Atenção! Os comentários podem ser escritos iniciando-se com “//”, que transforma uma linha inteira em comentário. Veja como fica a estrutura básica do um programa ”Olá, mundo” em C no Dev C++. #include /* Para importar funções de entrada e saída */ int main (void) { /* declaração de variáveis */ /* Escreva aqui as instruções */ printf("Olá, mundo!"); return(0); } A Figura 2 apresenta o tradicional “Olá, mundo” escrito no ambiente Dev C++. � Página 3 | � Moodle de Lovelace: Curso Híbrido de Pensamento Computacional Figura 2. Programa “Olá mundo” no Dev C++ Para criar um programa no Dev C++, utilize Arquivo> Novo> Arquivo Fonte (ou CTRL-N). Para compilar (traduzir o programa), acesse Executar> Compilar (ou F9) e, para executar, acesse Executar> Executar (ou F10). Um par de chaves ({ }) marca o início e fim de um bloco, que pode ser inicio/fim do programa, de uma estrutura de controle (condicional ou de repetição) ou de uma função f (ou subprograma). O par “/* */” marca início e fim de um comentário. Um programa em C, em geral, é formado de várias funções. O main() é uma função, que, em C, é como se fosse um programa principal. Essa função pode chamar várias outras funções definidas em um programa. No exemplo a seguir, temos três funções: f1, f2 e main. A main chama f1 e f2 como se fosse um programa chamando outros programas. #include void f1(parametros de entrada) { } void f2 (parametros de entrada) { } � Página 4 � Currículo: Mooc de Lovelace: Curso Híbrido de Pensamento Computacional int main() { f1(); f2(); return 0; } Os dados podem assumir cinco tipos básicos em C que são: char (textos), int (inteiros), float (com sinais e casas decimais), double (números do tipo float muito longos), void (vazio) . Exemplos: int faltas; /* numero de faltas de um aluno */ float nota1,nota2, media; /* Notas e médias têm casas decimais */ char nome[30]; /* Texto com no máximo 30 bytes, isto é, 30 caracteres Instruções e estruturas mais utilizadas atribuição (=) - armazenamento direto em memórias. Exemplo: media = (nota1 + nota2)/2; scanf - para leitura de entradas via teclado ou stdin (buffer ou espaço de memória de entrada). Nessa instrução, cria-se um formato de recebimento dos dados. Exemplo: scanf(“%d %f %d”, &a, &b, &c) - os endereços de memórias a, b e c receberão, respectivamente, um inteiro (%d), um float (%f) e um inteiro (%d) da seguinte forma: inteiro float inteiro 34 8.7 22 ⇒ é uma entrada válida para esse formato. gets(string) - para leitura de cadeia de caracteres (textos). Exemplo: gets(nome) ⇒ será lido um texto até que se encontre uma quebra de linha. Estruturas de controle condicional � Página 5 | � Moodle de Lovelace: Curso Híbrido de Pensamento Computacional Estrutura if - quando há duas opções a comparar(uma falsa e uma verdadeiro) Exemplo: verificar se aluno está aprovado ou não if (nota>=6) { printf(“Aprovado!”); } else { printf(“Reprovado!”); } Estrutura if “escada” - quando há mais de duas opções a comparar Exemplo: verificar o maior número de três números a,b e c. if ((a>=b) && (a>=c)) /* Caso 1: a é maior que b e c */ { printf(“ a é maior”); } else if (b>=c) /* Caso 2: a não é maior, sobra b e c para comparar. */ { printf(“ b é maior”); } else /* Sobra apenas c */ { printf(“C é maior”) } Estrutura switch - quando há mais de duas opções a comparar e é possível escolher uma opção. Exemplo: verificar a opção escolhida de um menu de opções 1 - Samba 2 - Funk 3 - Sertanejo 4 - Nenhuma printf(“Digite um número de 1 a 4:”); scanf(“%d”, &numero); /* Receber número digitado */ switch (numero) { /* Compara todas as opções possíveis */ case 1: printf( “Tocar samba....”); break; case 2: printf(“Tocar Funk....”); break; case 3: � Página 6 � Currículo: Mooc de Lovelace: Curso Híbrido de Pensamento Computacional printf(“Tocar Sertanejo...”); break; default: /* Se não for nenhuma das opções acima */ printf(“Tocar qualquer uma ou nenhuma!”); } O break (“parar”) é utilizado para que achando a opção verdadeira, o programa não continue fazendo as outras comparações com as demais opções. Estruturas de controle de repetição i. O Laço FOR Estrutura de repetição que, em geral, tem seu controle formado por variáveis que: • Inicialização: em geral é um comando de atribuição que inicializa uma variável que controla o laço de repetição. • Condição: expressão lógica que informa quando o laço termina • Atualização: indica como a variável de controle varia a cada repetição. Em geral, a atualização é um incremento de uma variável contadora. Exemplo : O programa a seguir exibe os números de 1 a 100. #include int main () { int x; for (x=1; xcontrole*/ char letra = 'n'; while (letra!='s' && letra!='S') { /* Atualização da variável de controle */ letra = getchar(); } O Laço DO WHILE O laço DO WHILE é uma estrutura de controle de repetição que, ao contrário dos laços FOR e WHILE, testa a condição ao final de cada iteração. A forma geral da estrutura DO WHILE é do { instruções; } while (condicao); � Página 8 � Currículo: Mooc de Lovelace: Curso Híbrido de Pensamento Computacional O laço DO WHILE é mais utilizado quando se deseja que a primeira iteração seja realizada sem testes de condição. Exemplo: Ler uma senha até que ela seja válida, isto é, até que seja igual a 123. do { scanf( “%d”, &senha”); } while (senha!=123); Nesse caso, a senha é digitada primeiro e só depois é verificado se ela é válida. Se sim, sai da repetição. Senão, o programa solicita nova digitação da senha e o faz sempre que ela estiver incorreta. Dica importante Para não esquecer de fechar uma chave, recomendamos que ao criar o bloco já escreva “ { } “ e depois vá inserindo as instruções entre as chaves. Para saber mais Para aprender mais sobre o básico da Linguagem C, acesse o seguinte endereço: http://linguagemc.com.br/ Exercícios Resolvidos ATENÇÃO!! Antes de começar a escrever o programa, informe a Entrada, O Processamento, a Saída, as memórias utilizadas e a sequência lógica. Dica: como em Python, escreva a sequência lógica na forma de comentários do código. Exemplo: Recebimento das entradas, calcular média, verifica pelo valor da média se o aluno está aprovado. Veja que na solução do Exercício resolvido I esses comentários (entre /* */) já representam a sequência lógica do programa. � Página 9 | http://linguagemc.com.br/ � Moodle de Lovelace: Curso Híbrido de Pensamento Computacional Exercício resolvido 1 - Ler nome e três notas de alunos, calcular média das três notas e verificar se ele está aprovado. Ele estará aprovado se média for maior ou igual a 60 e número de faltas for menor que 10. Mostre, ao final, nome, média e se está aprovado. Observações importantes antes de começar ● %f, %d %s - são representações de entradas de floats, inteiros e strings (textos), respectivamente. ● && é o operador lógico “e”. ● Ao iniciar a execução coloque primeiro as entradas em stdin conforme a Figura 3. Solução #include int main() { int faltas; float nota1,nota2, media; char nome[30]; /* Exibir mensagem */ printf("Olá,Aluno!\n "); /* Programa lê duas notas */ gets(nome); scanf("%f %f", ¬a1, ¬a2); scanf("%d", &faltas); printf("Suas notas são %f e %f \n", nota1, nota2); /* Calcula média das notas */ media = (nota1 + nota2)/2; /* Mostrar nome %s = string e pula linha (\n) */ printf("Nome: %s \n", nome); � Página 10 � Currículo: Mooc de Lovelace: Curso Híbrido de Pensamento Computacional /* Mostra a média */ printf("A média de notas é %.2f \n", media); /* Verifica se com a média o aluno está aprovado ou reprovado */ if (media>=60.0 && faltas int main() { int cont1=0, cont2=0, cont3=0, continvalido=0, time, tecla; /* Mostrar menu de opções */ printf("1 - Flamengo \n 2 - Vasco \n 3 - Fluminense \n "); /* A tecla é setada inicialmente em Continuar */ tecla=1; /* Valor inciar: continua */ /* Repete a votação enquanto a tecla estiver em continuar */ while (tecla!=0) { /* Leitura da opção */ printf("Qual o seu time favorito? "); scanf("%d", &time); /* Verifica a opção e conta o voto conforme a opção escolhida */ switch (time) { case 1: cont1 = cont1 + 1; break; case 2: cont2 = cont2 + 1; break; case 3: cont3 = cont3 + 1; break; default: continvalido = continvalido + 1; } /* Verifica se continua */ printf("Pressione 1 para continuar ou 0 para sair...\n"); scanf("%d", &tecla); } /* Mostra os resultados */ printf ("Flamengo: %d preferências \n", cont1); printf ("Vasco: %d preferências \n", cont2); printf ("Fluminense: %d preferências \n", cont2); printf ("Não escolheram: %d pessoas \n", continvalido); return 0; } � Página 12 � Currículo: Mooc de Lovelace: Curso Híbrido de Pensamento Computacional Entradas e saídas do programa A Figura 4 apresenta as entradas e saídas do Exercício Resolvido 2. Figura 4. Entradas e saídas do Exercício Resolvido 2. � Página 13 |