Baixe o app para aproveitar ainda mais
Prévia do material em texto
Introdução à linguagem C Revisão parcial Exercícios Considerações finais Introdução a C e revisão parcial sobre programação Prof. DSc. Newton Spolaôr Disciplina Computação I Bacharelado em Ciência da Computação Universidade Estadual do Oeste do Paraná (UNIOESTE) Brasil 18/08/2016 Introdução à linguagem C Revisão parcial Exercícios Considerações finais Sumário 1 Introdução à linguagem C 2 Revisão parcial 3 Exercícios 4 Considerações finais Newton Spolaôr Introdução a C e revisão parcial sobre programação 2 Introdução à linguagem C Revisão parcial Exercícios Considerações finais Objetivo geral desta aula Revisar alguns conceitos relacionados a algoritmos, tipos de dados, constantes e operadores Introduzir conceitos iniciais de programação em C Newton Spolaôr Introdução a C e revisão parcial sobre programação 3 Introdução à linguagem C Revisão parcial Exercícios Considerações finais Histórico Estrutura de um programa C Comparação com Pascal [1] Como Pascal, C... inovou pouco em relação a características gerais de linguagens de programação tem sido muito utilizado Por outro lado, C é uma opção melhor para desenvolvimento de sistemas em geral (ex.: utilitários UNIX) Em parte, o destaque de C ocorre devido ao melhor suporte à programação de baixo nível e a motivos históricos Newton Spolaôr Introdução a C e revisão parcial sobre programação 4 Introdução à linguagem C Revisão parcial Exercícios Considerações finais Histórico Estrutura de um programa C Contexto histórico de C A década de 1960 foi efervescente Figura: Woodstock, Brasil bi campeão, Odisseia no espaço e computador dos anos 60 [2, 3, 4, 5] Newton Spolaôr Introdução a C e revisão parcial sobre programação 5 Introdução à linguagem C Revisão parcial Exercícios Considerações finais Histórico Estrutura de um programa C Contexto histórico de C [1] Até 1968, já existiam algumas linguagens à disposição dos programadores Figura: Algumas das principais linguagens propostas até 1968 [1] Newton Spolaôr Introdução a C e revisão parcial sobre programação 6 Introdução à linguagem C Revisão parcial Exercícios Considerações finais Histórico Estrutura de um programa C Contexto histórico de C [1] Um dos principais ancestrais de C foi a linguagem ALGOL 68, pioneira no suporte a tipos abstratos de dados e voltada para fins científicos Alguns comandos C, como for e switch, já existiam no ALGOL 68 C foi criada em 1972 por Dennis Ritchie e colaboradores nos laboratórios Bell Newton Spolaôr Introdução a C e revisão parcial sobre programação 7 Introdução à linguagem C Revisão parcial Exercícios Considerações finais Histórico Estrutura de um programa C Contexto histórico de C [1] Contudo, a primeira tentativa de padronização C foi publicada em 1978 O instituto ANSI unificou diferentes variações de C e lançou uma descrição oficial somente em 1989 (C89) Algumas melhorias foram adicionadas posteriormente ao padrão, gerando as variações C99 (1999) e C11 (2011) Newton Spolaôr Introdução a C e revisão parcial sobre programação 8 Introdução à linguagem C Revisão parcial Exercícios Considerações finais Histórico Estrutura de um programa C Primeiro programa em C Antes de ir para o primeiro programa em C, convém destacar alguns pontos Uso preferencial da IDE Dev-C++, ainda que vocês tem liberdade para usar ferramentas alternativas como Netbeans, Eclipse e Code::Blocks O paradigma de programação de C é o mesmo de Pascal (imperativo), o que garante semelhança na abordagem de programação mas pode trazer confusão na sintaxe Em geral, C é uma linguagem mais flexível que Pascal; por outro lado, vários dos seus comandos são menos amigáveis a iniciantes em programação Newton Spolaôr Introdução a C e revisão parcial sobre programação 9 Introdução à linguagem C Revisão parcial Exercícios Considerações finais Histórico Estrutura de um programa C Primeiro programa em C [6] #include <stdio.h> int main() { printf("hello world!\n"); return 0; } Newton Spolaôr Introdução a C e revisão parcial sobre programação 10 Introdução à linguagem C Revisão parcial Exercícios Considerações finais Histórico Estrutura de um programa C Primeiro programa em C [6] #include <stdio.h> //biblioteca para operações //de entrada e saída int main() //programa principal, escrito como uma //função de retorno int {//início da função printf("hello world!\n"); //escrita de dados return 0; //retorno da função main //(valor 0 indica execução com sucesso) }//fim da função Newton Spolaôr Introdução a C e revisão parcial sobre programação 11 Introdução à linguagem C Revisão parcial Exercícios Considerações finais Histórico Estrutura de um programa C Primeiro programa em C A biblioteca stdio.h estará presente na maioria dos seus programas em C O programa principal sempre é escrito como uma função denominada main, a qual é a primeira a ser executada em qualquer programa C Para pular linha na escrita de dados, é necessário indicar explicitamente o \n Newton Spolaôr Introdução a C e revisão parcial sobre programação 12 Introdução à linguagem C Revisão parcial Exercícios Considerações finais Histórico Estrutura de um programa C Sumário 1 Introdução à linguagem C 2 Revisão parcial 3 Exercícios 4 Considerações finais Newton Spolaôr Introdução a C e revisão parcial sobre programação 13 Introdução à linguagem C Revisão parcial Exercícios Considerações finais Algoritmos Tipos de dados Constante Operadores Algoritmo Pensamento na forma de uma sequência de passos (instruções) a serem seguidos para resolver um problema Algoritmos são usados no dia a dia, não somente no contexto de computação Coleta de uma caneta em uma gaveta Receita de bolo Configuração de uma rede de computadores Newton Spolaôr Introdução a C e revisão parcial sobre programação 14 Introdução à linguagem C Revisão parcial Exercícios Considerações finais Algoritmos Tipos de dados Constante Operadores Características de um bom algoritmo [7, 8] Cada passo do algoritmo deve ser uma instrução não ambígua que pode ser realizada Figura: Evitar instruções ambíguas como “botar ovos na vasilha” A ordem dos passos deve ser precisamente determinada O algoritmo deve ter fim Newton Spolaôr Introdução a C e revisão parcial sobre programação 15 Introdução à linguagem C Revisão parcial Exercícios Considerações finais Algoritmos Tipos de dados Constante Operadores Características de um bom algoritmo [7, 8] Cada passo do algoritmo deve ser uma instrução não ambígua que pode ser realizada Figura: Evitar instruções ambíguas como “botar ovos na vasilha” A ordem dos passos deve ser precisamente determinada O algoritmo deve ter fim Newton Spolaôr Introdução a C e revisão parcial sobre programação 15 Introdução à linguagem C Revisão parcial Exercícios Considerações finais Algoritmos Tipos de dados Constante Operadores Características de um bom algoritmo [7, 8] Cada passo do algoritmo deve ser uma instrução não ambígua que pode ser realizada Figura: Evitar instruções ambíguas como “botar ovos na vasilha” A ordem dos passos deve ser precisamente determinada O algoritmo deve ter fim Newton Spolaôr Introdução a C e revisão parcial sobre programação 15 Introdução à linguagem C Revisão parcial Exercícios Considerações finais Algoritmos Tipos de dados Constante Operadores Método para a construção de algoritmos [9] 1. Ler atentamente o enunciado do problema a ser resolvido e destacar os pontos mais importantes 2. Identificar os dados de entrada necessários para solucionar o problema 3. Estabelecera sequência de instruções necessárias para solucionar o problema (processamento) Newton Spolaôr Introdução a C e revisão parcial sobre programação 16 Introdução à linguagem C Revisão parcial Exercícios Considerações finais Algoritmos Tipos de dados Constante Operadores Método para a construção de algoritmos [9] 4. Identificar os dados de saída gerados na etapa anterior 5. Representar o algoritmo por meio de descrição narrativa, fluxograma ou pseudocódigo 6. Testar o algoritmo realizando simulações Newton Spolaôr Introdução a C e revisão parcial sobre programação 17 Introdução à linguagem C Revisão parcial Exercícios Considerações finais Algoritmos Tipos de dados Constante Operadores Algoritmos em computação Figura: Um algoritmo pode ser visto como um elo entre um problema do mundo real e sua solução computacional [8] Newton Spolaôr Introdução a C e revisão parcial sobre programação 18 Introdução à linguagem C Revisão parcial Exercícios Considerações finais Algoritmos Tipos de dados Constante Operadores Componentes básicos do computador Figura: Arquitetura de Von Neumann Newton Spolaôr Introdução a C e revisão parcial sobre programação 19 Introdução à linguagem C Revisão parcial Exercícios Considerações finais Algoritmos Tipos de dados Constante Operadores Arquitetura de Von Neumann Linguagens imperativas, como C e Java, são projetadas conforme a arquitetura computacional Von Neumann Características provenientes dessa relação 1 Variáveis: abstrações associadas ao estado de um programa, o qual é alterado durante sua execução 2 Comandos de atribuição: instruções associadas ao fluxo intenso entre CPU e memória 3 Repetição por iteração: instrução eficiente nessa arquitetura, pois os comandos são armazenados em regiões contíguas da memória Newton Spolaôr Introdução a C e revisão parcial sobre programação 20 Introdução à linguagem C Revisão parcial Exercícios Considerações finais Algoritmos Tipos de dados Constante Operadores Variáveis em um computador Em um computador, uma variável consiste em uma região da memória que está associada com três itens Nome (identificador) Conteúdo armazenado na variável Tipo do conteúdo/dado Newton Spolaôr Introdução a C e revisão parcial sobre programação 21 Introdução à linguagem C Revisão parcial Exercícios Considerações finais Algoritmos Tipos de dados Constante Operadores Tipos de dados usuais (linguagem C) [10, 11] Tipos básicos: tipos inteiros e de ponto flutuante Tipos derivados: tipos ponteiro, vetor (array) e registro (struct) Newton Spolaôr Introdução a C e revisão parcial sobre programação 22 Introdução à linguagem C Revisão parcial Exercícios Considerações finais Algoritmos Tipos de dados Constante Operadores Tipos básicos [10, 11] Tipos inteiros Newton Spolaôr Introdução a C e revisão parcial sobre programação 23 Introdução à linguagem C Revisão parcial Exercícios Considerações finais Algoritmos Tipos de dados Constante Operadores Tipos básicos [10, 11] Tipos inteiros Note a variação na quantidade de bytes utilizada por alguns tipos, como o int Para saber exatamente quantos bytes o tipo int utiliza na sua plataforma, use a função sizeof(int) A atribuição de valores fora de um intervalo suportado pelo tipo de uma variável resulta em possível representação incorreta do conteúdo dessa variável Newton Spolaôr Introdução a C e revisão parcial sobre programação 24 Introdução à linguagem C Revisão parcial Exercícios Considerações finais Algoritmos Tipos de dados Constante Operadores Tipos básicos [10, 11] Tipos inteiros Apesar do nome, o tipo char é melhor considerado como um tipo especial de inteiro, representando valores de números inteiros atribuídos internamente ao conjunto de caracteres ASCII O conjunto ASCII contém 128 caracteres, o que pode ser representado com o 1 byte (8 bits) destinado a variáveis do tipo char Newton Spolaôr Introdução a C e revisão parcial sobre programação 25 Introdução à linguagem C Revisão parcial Exercícios Considerações finais Algoritmos Tipos de dados Constante Operadores Tipos básicos [10, 11] Tipos inteiros Em C não há um tipo de dados específico para dados booleanos Contudo, por convenção, é possível considerar 0 como o valor booleano falso, e 1 como o valor verdadeiro Newton Spolaôr Introdução a C e revisão parcial sobre programação 26 Introdução à linguagem C Revisão parcial Exercícios Considerações finais Algoritmos Tipos de dados Constante Operadores Tipos básicos [10, 12, 11] Tipos de ponto flutuante Newton Spolaôr Introdução a C e revisão parcial sobre programação 27 Introdução à linguagem C Revisão parcial Exercícios Considerações finais Algoritmos Tipos de dados Constante Operadores Tipos básicos [10, 12, 11] Tipos de ponto flutuante Os intervalos apresentados se referem ao maior e ao menor valor representável sem perda de precisão, independentemente do sinal do valor Quando pertinente à aplicação, o uso de inteiros é preferível ao uso de ponto flutuante devido a fatores como precisão e menor consumo de memória O padrão para representação de números de ponto flutuante é definido pela IEEE Newton Spolaôr Introdução a C e revisão parcial sobre programação 28 Introdução à linguagem C Revisão parcial Exercícios Considerações finais Algoritmos Tipos de dados Constante Operadores Tipos derivados [10, 11] Ponteiro Basicamente, armazena um valor numérico correspondente a um endereço de memória Esse tipo de dados fornece um poderoso recurso para armazenar (alocar) espaço para uma variável em tempo de execução (dinamicamente) O conceito de ponteiro será melhor abordado no futuro Newton Spolaôr Introdução a C e revisão parcial sobre programação 29 Introdução à linguagem C Revisão parcial Exercícios Considerações finais Algoritmos Tipos de dados Constante Operadores Tipos derivados [10, 11] Vetor Agrupamento contíguo de dados em memória, capaz de armazenar um valor em cada uma de suas N posições [7] Um vetor também pode ser visto como uma sequência de N variáveis simples, todas do mesmo tipo e com o mesmo identificador [9] Cada elemento do vetor é acessado por meio de um índice sequencial Logicamente, pode distribuir seus elementos em uma ou mais dimensões, cada uma com seu índice Newton Spolaôr Introdução a C e revisão parcial sobre programação 30 Introdução à linguagem C Revisão parcial Exercícios Considerações finais Algoritmos Tipos de dados Constante Operadores Tipos derivados [13] Figura: Vetor (exemplo na linguagem C) Newton Spolaôr Introdução a C e revisão parcial sobre programação 31 Introdução à linguagem C Revisão parcial Exercícios Considerações finais Algoritmos Tipos de dados Constante Operadores Tipos derivados [10, 11] Registro Vetores são estruturas de dados homogêneas, pois agrupam dados de mesmo tipo Por outro lado, registros permitem agrupar dados de tipos diferentes (estrutura heterogênea) Enquanto que um vetor simples é constituído por elementos, um registro é constituído por campos Em C, são implementados como struct O conceito de registro será melhor abordado no futuro Newton Spolaôr Introdução a C e revisão parcial sobre programação 32 Introdução à linguagem C Revisão parcial Exercícios Considerações finais Algoritmos Tipos de dados Constante Operadores Constante [8] Em diferentes situações, é necessário utilizar valores constantes de um dos tipos mencionados anteriormente Exemplos Um valor fixo que indica ao usuário de um programa uma situação de erro O valor de pi Newton Spolaôr Introdução a C e revisão parcial sobre programação33 Introdução à linguagem C Revisão parcial Exercícios Considerações finais Algoritmos Tipos de dados Constante Operadores Constante [8] Diferentemente de uma variável, uma constante não pode ser alterada após sua definição Em resumo, variáveis representam valores modificáveis, enquanto constantes são valores fixos Newton Spolaôr Introdução a C e revisão parcial sobre programação 34 Introdução à linguagem C Revisão parcial Exercícios Considerações finais Algoritmos Tipos de dados Constante Operadores Constante [10] Constante (exemplo na linguagem C) Newton Spolaôr Introdução a C e revisão parcial sobre programação 35 Introdução à linguagem C Revisão parcial Exercícios Considerações finais Algoritmos Tipos de dados Constante Operadores Operadores [7] Operadores são símbolos simples ou combinados que representam operações de natureza: aritmética, relacional ou lógica Podem ser classificados também quanto a quantidade de elementos sob os quais incidem, i.e., unários, binários ou ternários Newton Spolaôr Introdução a C e revisão parcial sobre programação 36 Introdução à linguagem C Revisão parcial Exercícios Considerações finais Algoritmos Tipos de dados Constante Operadores Operadores aritméticos [7] Newton Spolaôr Introdução a C e revisão parcial sobre programação 37 Introdução à linguagem C Revisão parcial Exercícios Considerações finais Algoritmos Tipos de dados Constante Operadores Operadores relacionais [7] Newton Spolaôr Introdução a C e revisão parcial sobre programação 38 Introdução à linguagem C Revisão parcial Exercícios Considerações finais Algoritmos Tipos de dados Constante Operadores Operadores lógicos [7] Newton Spolaôr Introdução a C e revisão parcial sobre programação 39 Introdução à linguagem C Revisão parcial Exercícios Considerações finais Sumário 1 Introdução à linguagem C 2 Revisão parcial 3 Exercícios 4 Considerações finais Newton Spolaôr Introdução a C e revisão parcial sobre programação 40 Introdução à linguagem C Revisão parcial Exercícios Considerações finais Exercício 1 [7] Faça um programa em C que converta uma medida de temperatura dada em Celsius (C) para Fahrenheit (F) Para facilitar, considere que a temperatura em Celsius é definida por meio de uma atribuição, i.e., não necessita realizar leitura de dados nesse exercício Para imprimir uma temperatura x, do tipo double, use o comando printf("%f",x); Newton Spolaôr Introdução a C e revisão parcial sobre programação 41 Introdução à linguagem C Revisão parcial Exercícios Considerações finais Exercício 2 [7] Faça um programa nos moldes do exercício anterior em que, dado um valor em segundos, o programa o converta em horas, minutos e segundos. Newton Spolaôr Introdução a C e revisão parcial sobre programação 42 Introdução à linguagem C Revisão parcial Exercícios Considerações finais Considerações finais 1 Introdução à linguagem C 2 Revisão parcial 3 Exercícios 4 Considerações finais Newton Spolaôr Introdução a C e revisão parcial sobre programação 43 Introdução à linguagem C Revisão parcial Exercícios Considerações finais Considerações finais Nesta aula foram revisados conceitos relacionados a algoritmos, tipos de dados, constantes e operadores Também foram introduzido alguns conceitos iniciais em C Lembrete: dificuldades com a linguagem C devem diminuir ao longo do semestre Newton Spolaôr Introdução a C e revisão parcial sobre programação 44 Introdução à linguagem C Revisão parcial Exercícios Considerações finais Considerações finais Nesta aula foram revisados conceitos relacionados a algoritmos, tipos de dados, constantes e operadores Também foram introduzido alguns conceitos iniciais em C Lembrete: dificuldades com a linguagem C devem diminuir ao longo do semestre Newton Spolaôr Introdução a C e revisão parcial sobre programação 44 Introdução à linguagem C Revisão parcial Exercícios Considerações finais Contato newtonsp.unioeste@gmail.com Newton Spolaôr Introdução a C e revisão parcial sobre programação 45 Referências [1] Robert W. Sebesta. Concepts of Programming Language. Addison-Wesley, 10 edition, 2012. [2] Woodstock Story. Woodstock poster for sale. http://www.woodstockstory.com/wp- content/uploads/2015/03/woodstock-poster-for-sale.jpg, 2015. [3] Pinterest. Brasil. https://s-media-cache- ak0.pinimg.com/564x/34/82/ba/3482bae22ba614e5b31b0446ca1026e2.jpg, 2016. [4] CriterionCast. 2001 - space odissey. http://criterioncast.com/wp-content/uploads/2016/04/2001- Space-Odyssey_68.jpg, 2016. [5] Thomas Investigative Publications. Early computers 1960’s, burroughs 205. Newton Spolaôr Introdução a C e revisão parcial sobre programação 45 Referências http://www.pimall.com/nais/pivintage/images/boucomputer.jpg, 2006. [6] Cplusplus. Structure of a program - c++ tutorials. http://www.cplusplus.com/doc/tutorial/program_structure/, 2016. [7] Denis F. Wolf. Algoritmos. http://wiki.icmc.usp.br/index.php/Scc-101, 2014. Notas didáticas. [8] Marcelo Santos Linder. Algoritmos e programação. www.univasf.edu.br/ marcelo.linder, 2011. Notas didáticas. [9] Ana Fernanda Gomes Ascencio and Edilene Aparecida Veneruchi de Campos. Fundamentos da Programação de Computadores - Algoritmos, Pascal, C/C++ e Java. Prentice Hall, 2 edition, 2007. [10] Tutorialspoint. C - data types. Newton Spolaôr Introdução a C e revisão parcial sobre programação 45 Referências http://www.tutorialspoint.com/cprogramming/c_data_types.htm, 2014. [11] Stan Kelly-Bootle. Dominando o Turbo C. Ciência moderna, 2 edition, 1989. [12] Cprogramming. Articles – understanding floating point representation. http://www.cprogramming.com/tutorial/floating_point/understanding_floating_point_representation.html, 2011. [13] Cplusplus. Arrays - c++ tutorials. http://www.cplusplus.com/doc/tutorial/arrays/, 2016. [14] Christian J. Pereira. Apostila sobre visualg. http://www2.joinville.udesc.br/ alp/arquivos/UDESC_Apostila_sobre_Visualg_2011.pdf, 2011. [15] Cplusplus. Functions - c++ tutorials. http://www.cplusplus.com/doc/tutorial/functions/, 2015. Newton Spolaôr Introdução a C e revisão parcial sobre programação 45 Referências [16] Eloiza Sonoda. Introdução à ciência da computação. http://www.ime.usp.br/e˜lo/IntroducaoComputacao/Funcoes%20passagem%20de%20parametros.htm, 2006. Notas didáticas. Newton Spolaôr Introdução a C e revisão parcial sobre programação 45 Introdução à linguagem C Histórico Estrutura de um programa C Revisão parcial Algoritmos Tipos de dados Constante Operadores Exercícios Considerações finais
Compartilhar