Baixe o app para aproveitar ainda mais
Prévia do material em texto
CONCEITOS BÁSICOS Prof. Eduardo Isaia Filho https://sites.google.com/ulbra.br/g000005gs001/t001 NESTE CAPÍTULO, VOCÊ VAI APRENDER O que é um algoritmo e para que ele serve; O histórico da linguagem C e por que ela foi escolhida; Qual a estrutura básica de um programa em C; Como declarar constantes e variáveis conforme seus tipos. INTRODUÇÃO Neste capítulo, serão apresentados os conceitos introdutórios para a construção de um algoritmo em linguagem C. Também serão apresentados a estrutura básica de um programa, o conceito de dados e os tipos de variáveis. Você será introduzido ao universo da programação, e, ao final do semestre, estará capacitado a construir programas em linguagem C. É importante lembrar que programar envolve dedicação e tempo, portanto reserve tempo na sua semana para praticar os conceitos apresentados neste capítulo, pois apenas a leitura não irá ajudá-lo a entender como desenvolver programas. Este capítulo é fundamental para sua disciplina Algoritmos e Programação é a base para seu curso, sendo essa de fundamental importância para sua carreira acadêmica e profissional. Vamos nessa, então… Um excelente semestre a todos(as)! Todo programa de computador começa a partir de um algoritmo, ou seja, através da organização lógica das instruções que resolvem o problema. Um programa de computador é resultado da atividade intelectual de um programador. Para isso são necessários alguns conhecimentos prévios em abstração, modelagem de problemas e lógica de programação. https://sites.google.com/ulbra.br/g000005gs001/t001 CONCEITO DE ALGORITMO Um algoritmo é uma sequência de passos finitos que visam solucionar um determinado problema. Resolvemos algoritmos todo o tempo, mas o fazemos de forma tão automática que nem nos damos conta, por exemplo: trocar uma lâmpada, fazer um bolo, preparar um café passado, escovar os dentes, trocar um pneu, entre outros. Todas as atividades do nosso dia a dia que possuem uma sequência de passos finitos para serem resolvidas podem ser consideradas um algoritmo. Se utilizarmos o exemplo do preparo de um café passado, teremos os seguintes passos: 1° passo: reservar os utensílios filtro de café, chaleira e recipiente para colocar o café passado; 2° passo: reservar o pó de café e a água; 3° passo: aquecer a água; 4° passo: colocar o pó de café no filtro e 5° passo: despejar a água aquecida no filtro. Se você seguir esses passos, ao final você provavelmente terá um café passado. O que pode ser observado é que alguns desses passos podem ser alterados em sua ordem, por exemplo: se reservarmos os ingredientes antes dos utensílios não teremos alteração no produto final. Porém, se colocássemos a água no filtro com café antes de aquecê-la, o resultado seria indesejado. Um algoritmo computacional pode ser definido como uma sequência lógica de instruções ou comandos, que devem ser seguidos para se obter a solução de um problema. Da mesma forma, um algoritmo do dia a dia deve seguir uma sequência de passos lógicos que devem ser ordenados de forma clara para solucionar o problema. https://sites.google.com/ulbra.br/g000005gs001/t001 CONSTRUÇÃO DO ALGORITMO Para construir um algoritmo, temos que saber claramente qual o problema que desejamos solucionar, ou seja, qual o objetivo do algoritmo. Para isso, precisamos analisar o problema identificando três elementos básicos: entrada, processamento e saída. A entrada são os elementos que são necessários para dar início à solução do problema, o processamento é a manipulação dos elementos de entrada para obtenção da saída, e a saída é o resultado esperado. Se considerarmos o exemplo do café passado, apresentado anteriormente, podemos identificar: Entrada: filtro de café, chaleira, recipiente para colocar o café passado, pó de café e água; Processamento: aquecer a água, colocar o pó no filtro e despejar a água no filtro; Saída: o café passado. Se considerarmos os algoritmos computacionais, podemos descrever esses elementos em: Entrada de dados: são os dados que o algoritmo deverá receber; Processamento de dados: são as fórmulas e a disposição lógica em que os dados de entrada serão organizados para obter-se a solução do problema; Saída de dados: é a apresentação do objetivo, ou seja, o resultado esperado. Por exemplo, se desejamos fazer um algoritmo para fazer a soma de dois números quaisquer, podemos nesse caso identificar: Entrada de dados: perguntar ao usuário dois números quaisquer; Processamento de dados: calcular a soma dos números informados; Saída de dados: apresentar o resultado da soma. Sempre que formos construir um algoritmo, devemos nos concentrar nesses três elementos, pois eles sempre estarão envolvidos. Porém, nem sempre estarão nesta ordem, podendo variar de algoritmo para algoritmo. https://sites.google.com/ulbra.br/g000005gs001/t001 G000005VD001T001.mp4 FORMALIZAÇÃO DE UM ALGORITMO Construir um algoritmo consiste em detalhar os dados que serão processados e as instruções que vão operar sobre esses dados. Essa construção pode ser feita por diferentes formas de representações e diferentes linguagens de programação, mas é importante formalizarmos a descrição dos algoritmos segunda uma convenção pré- definida, para que todas as pessoas envolvidas no processo possam entendê-la. Para isso é necessário definir o conjunto de regras que regulam a escrita do algoritmo (sintaxe) e o conjunto de regras que definem a interpretação dessa escrita (semântica). Nesta disciplina, foi escolhida a linguagem de programação C como sendo a balizadora da construção dos algoritmos. https://sites.google.com/ulbra.br/g000005gs001/t001 INTRODUÇÃO À LINGUAGEM C A linguagem C foi criada por Dennis Ritchie na década de 70, e resultou de um processo evolutivo de linguagens que, durante alguns anos, teve seu padrão baseado na versão 5 do sistema operacional UNIX. Com a popularização dos microcomputadores, várias versões de C foram criadas, gerando muitas discrepâncias entre elas. Para resolver essa situação, em 1983, o ANSI (American National Standards Institute) estabeleceu um comitê para definir um padrão que guiasse todas as implementações da linguagem C. A popularização da linguagem C deve-se a vários fatores, dentre os quais destacam-se: o conjunto de operadores e tipos de dados disponíveis; a portabilidade, podendo ser usada em máquinas de portes e de sistemas operacionais diferentes; as características de linguagens de alto nível, aliadas às características de linguagens de baixo nível. A linguagem C é uma linguagem de propósitos gerais, estruturada e compilada (o compilador lê o código-fonte do programa inteiro e o converte em um código executável). Ela é utilizada para a construção de sistemas operacionais, compiladores, interpretadores, aplicativos para dispositivos móveis, gerenciadores de bancos de dados, entre outros. ESTRUTURA BÁSICA DE UM PROGRAMA EM C Um programa em linguagem C consiste em uma ou mais funções. A função principal, denominada main, indica onde o programa inicia. A estrutura básica de um programa em C é apresentada a seguir. #include <nome da biblioteca> main( ) { // declaração de variáveis // bloco de comandos } https://sites.google.com/ulbra.br/g000005gs001/t001 As bibliotecas são arquivos contendo várias funções que podem ser incorporadas aos programas escritos em C. A diretiva #include faz com que as funções inseridas na biblioteca especificada possam ser utilizadas no programa. As bibliotecas mais usadas são: stdio.h, conio.h, string.h e math.h. A diretiva #include pode ser usada de duas formas: #include "nome da biblioteca" #include <nome da biblioteca> A diferença entre se usar " " e < > é somente a ordem de procura pelo arquivo especificado nos diretórios. Usa-se " " para informar o nome do arquivo com o caminho completo, ou se o arquivo estiver no diretório de trabalho. Quando o arquivo estiver no caminho padrão do compilador (comoé o caso de arquivos como stdio.h e string.h, por exemplo), usa-se os símbolos < e >. Os parênteses ao lado da palavra main indicam que ela é uma função, enquanto as chaves delimitam o seu início e o seu fim. O bloco de comandos que estiver entre as chaves é executado sequencialmente quando a função for chamada. Uma boa prática de programação do padrão ANSI é declarar a função main como int main(void) e, no seu final, antes de fechar a chave que delimita o corpo da função, incluir a instrução return 0; − essa prática evita que, ao executar os programas, alguns compiladores emitam uma mensagem do tipo: A função deve retornar um valor. Compiladores, como o Dev-C++, não emite essa mensagem, por isso optou-se por utilizá-lo e não adotar essa prática nos exemplos da disciplina. É importante salientar que a linguagem C é case sensitive, ou seja, é sensível a letras maiúsculas e minúsculas e todos os programas devem, obrigatoriamente, ser escritos em letras minúsculas. https://sites.google.com/ulbra.br/g000005gs001/t001 IDENTIFICADORES (NOMES) Em linguagem C, os nomes utilizados para referenciar variáveis, constantes e funções definidas pelo usuário são chamados de identificadores. A criação de um identificador deve seguir as seguintes regras: podem ser formados por letras, números e underline (sublinhado baixo); devem iniciar com uma letra ou com o underline; letras minúsculas e maiúsculas são consideradas caracteres distintos; não podem ser palavras reservadas da linguagem C; podem conter qualquer tamanho, porém apenas os 32 primeiros caracteres são significativos. Além disso, é importante criar identificadores considerando a sua aplicação para facilitar a leitura do código-fonte e, consequentemente, o trabalho do programador, por exemplo o peso de uma pessoa pode ser armazenada em uma variável chamada peso_pessoa; enquanto uma função que irá calcular a média de um aluno pode ter como identificador calcular_media. TIPOS DE DADOS O objetivo da maioria dos programas é manipular dados, transformando os dados de entrada em dados de saída (resultados). Um dado é um atributo que descreve entidades ou características, por exemplo: o nome de uma pessoa, sua idade, seu peso ou o número de páginas de um livro. Quando vamos desenvolver um programa, precisamos previamente identificar o tipo do dado que está sendo manipulado. Isso é necessário, pois os dados serão armazenados na memória principal do computador e um espaço de memória específico (tamanho) deve ser reservado a cada tipo de dado. Os tipos de dados básicos em linguagem C são: int: os dados do tipo int pertencem ao conjunto de números inteiros relativos, ou seja, são aqueles que não possuem componentes decimais ou fracionários, podendo ser positivos, nulo ou negativos. Exemplos: quantidade de alunos em uma turma, idade de uma pessoa, entre outros. Na linguagem C, um int pode variar de -32.767 a 32.767 com tamanho máximo de armazenamento de memória de 16 bits. float: os dados do tipo float pertencem ao conjunto dos números reais (representado em ponto flutuante) portanto podem ter componentes decimais ou https://sites.google.com/ulbra.br/g000005gs001/t001 (representado em ponto flutuante), portanto, podem ter componentes decimais ou fracionários e ser positivos, nulo ou negativos. Exemplos: o salário de uma pessoa, a temperatura, a altura de um prédio, entre outros. Na linguagem C, um float pode variar de 3.4 E-38 a 3.4 E+38, com tamanho máximo de armazenamento de memória de 32 bits. double: assim como um float, o double representa um número real, representado em ponto flutuante com maior precisão. Na linguagem C um double pode variar de 1.7 E-308 a 1.7 E+308 com tamanho máximo de armazenamento de memória de 64 bits. char: os dados do tipo caracter são compostos por um único caractere alfanumérico (0..9, A..Z, a..z) ou caracter especial (#, $, %, *, ?, >, ...). Exemplos: resposta a uma pergunta (no caso de S ou N); seleção entre alternativas (no caso da respostas ser A, B, C, D ou E), o sexo de uma pessoa (no caso de M ou F). Na linguagem C um char ocupa tamanho máximo de armazenamento de memória de 8 bits. void: vazio, sem valor. A linguagem C não possui tipo de dado lógico (que pode assumir verdadeiro ou falso), pois considera qualquer valor diferente de 0 (zero) como verdadeiro; e também não possui um tipo especial para armazenar cadeias de caracteres (strings), que são armazenadas em um vetor de caracteres. https://sites.google.com/ulbra.br/g000005gs001/t001 DECLARAÇÃO DE VARIÁVEIS Uma variável pode ser definida como um local, na memória principal, utilizado para armazenar o conteúdo de um determinado dado e que pode receber muitos valores diferentes durante a execução do programa. Contudo, em um dado instante ela só pode apresentar um valor único. O conceito de variável foi criado para permitir que através do nome (identificador) os programas possam armazenar, localizar e manipular as informações na memória dos computadores. São, portanto, formadas por três atributos: um nome (identificador), um tipo de dado, e um valor. Na linguagem C, as variáveis são declaradas após a especificação de seus tipos, como pode ser observado nos exemplos a seguir. float total; int idade, cont; A primeira linha da declaração de variáveis do exemplo cria uma variável chamada total, que irá armazenar valores do tipo float (real); na segunda linha, são criadas duas variáveis para armazenar valores do tipo int (inteiro), idade e cont. Cada uma dessas variáveis armazenará um único valor por vez. As variáveis podem ser inicializadas no momento da sua declaração, ou seja, pode-se dar um valor inicial à variável já na sua declaração, e esse valor será armazenado em memória. Para isso, coloca-se o sinal de atribuição (=) seguido do valor desejado, como no exemplo apresentado a seguir, em que cont é inicializada com 0 e resposta com S. É importante destacar que os dados atribuídos a variáveis do tipo caractere são envolvidos por aspas simples. int cont = 0; char resposta = 'S'; O local em que as variáveis são declaradas definem o seu escopo, que pode ser global ou local. As variáveis de escopo global, denominadas variáveis globais, são declaradas fora de qualquer função, inicializadas automaticamente com 0 (zero) e podem ser usadas em qualquer ponto do programa. As variáveis locais são declaradas dentro de uma função, não são inicializadas automaticamente e valem enquanto essa função estiver ativa. As variáveis de escopo local têm preferência em relação às de escopo global. https://sites.google.com/ulbra.br/g000005gs001/t001 DEFINIÇÃO DE CONSTANTES Uma constante irá representar um valor fixo, previamente definido pelo programador e inalterável no programa. Uma das formas de definir constantes em C é a partir da diretiva #define, seguida do nome da constante e do valor que ela representará no programa. No exemplo a seguir, apresenta-se a declaração da constante pi, cujo valor é definido como 3.141516. Dessa forma, o programador usará pi no programa ao invés de usar 3.141516. #define pi 3.141516 INFOGRÁFICO https://sites.google.com/ulbra.br/g000005gs001/t001 https://sites.google.com/ulbra.br/g000005gs001/t001 REFERÊNCIAS ASCENCIO, Ana F. G.; CAMPOS, Edilene A. V. Fundamentos da Programação de Computadores. 2. ed. São Paulo: Prentice Hall, 2007. DEITEL, Paul; DEITEL, Harvey. C: como programar. 6.ed. São Paulo: Pearson Prentice Hall, 2011. FORBELLONE, André Luís; EBERSPACHER, Henri. Lógica de Programação: a construção de algoritmos e estruturas de dados. 3. ed. São Paulo: Prentice Hall, 2005. GOODRICH, Michael T.; TAMASSIA, Roberto. Projeto de Algoritmos. Porto Alegre: Bookman, 2004. CRÉDITOS Coordenação e Revisão Pedagógica: Claudiane Ramos Furtado Design: Luiz Specht Diagramação: Marcelo Ferreira Ilustrações: Marcelo Germano Revisão ortográfica: Ane Arduim Produzido por Núcleo de Audiovisual e Tecnologias Educacionais (NATE) - ULBRA EAD Universidade Luteranado Brasil Todos os direitos reservados. https://sites.google.com/ulbra.br/g000005gs001/t001
Compartilhar